Консультация № 187567
11.10.2013, 09:16
95.04 руб.
0 31 0
Здравствуйте! У меня возникли сложности с таким вопросом: есть база данных на access и к ней приложение на C#, помогите сделать все тоже самое только msssql и C#, т.е. там чуть поправить
пароль 123

Обсуждение

Неизвестный
12.10.2013, 02:05
общий
Ну просто нужно чтобы бд именно должна быть в mssql по большей части ла импортировать можно, но вот потом все проблемы в c#
Неизвестный
14.10.2013, 13:50
общий
Никто не в курсе?
Неизвестный
14.10.2013, 17:36
общий
Сделайте импорт в MS SQL.
В настройках источника данных измените базу Access на SQL Server и попробуйте запустить. В самой базе только таблицы с ключевым полем - проблем с запросами быть не должно.
Напишите какую ошибку выбрасывает.
Неизвестный
15.10.2013, 12:27
общий
Ну я так понимаю это из-за того что у меня xin7 x64?
Прикрепленные файлы:
2a69ee3e1b1db1b5b669a386df5d6de2.jpg
Неизвестный
15.10.2013, 13:02
общий
Веб-сервер (IIS) нет у меня
Неизвестный
15.10.2013, 13:26
общий
Я не о IIS .
Там написано, что такая ошибка появляется в двух случаях:
не установлены драйвера Office 2007/2010 Jet
запускается 32-битное приложение в 64-битной среде

Второй вариант не подходит - приложение запускается из среды разработки. Остается исправить первую ошибку - скачать и установить Microsoft Access Database Engine 2010 Redistributable
Неизвестный
15.10.2013, 14:02
общий
все с этим разобрался, второй вариант, просто сам компонент был отключен iis
Я правильно понимаю? Здесь нужно менять строку соединения?
Код:

namespace Sklad.Properties {


[global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()]
[global::System.CodeDom.Compiler.GeneratedCodeAttribute("Microsoft.VisualStudio.Editors.SettingsDesigner.SettingsSingleFileGenerator", "10.0.0.0")]
internal sealed partial class Settings : global::System.Configuration.ApplicationSettingsBase {

private static Settings defaultInstance = ((Settings)(global::System.Configuration.ApplicationSettingsBase.Synchronized(new Settings())));

public static Settings Default {
get {
return defaultInstance;
}
}

[global::System.Configuration.ApplicationScopedSettingAttribute()]
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
[global::System.Configuration.SpecialSettingAttribute(global::System.Configuration.SpecialSetting.ConnectionString)]
[global::System.Configuration.DefaultSettingValueAttribute("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=|DataDirectory|\\Sklad.mdb")]
public string SkladConnectionString {
get {
return ((string)(this["SkladConnectionString"]));
}
}
}
}
Неизвестный
15.10.2013, 14:28
общий
Я сам пока еще не перешел на .NET, поэтому не могу подсказать, на что нужно исправить. Но заменить нужно в строке

[global::System.Configuration.DefaultSettingValueAttribute ( "Provider=Microsoft.Jet.OLEDB.4.0;DataSource=Sklad.mdb" ) ]

Нужно выбрать другого провайдера и базу. Можно попробовать добавить на форму источник данных к базе SQL и скопировать оттуда данные для подключения. Там есть небольшие отличия при подключении к SQL Server 2005 и 2008.
Неизвестный
15.10.2013, 14:39
общий
ну собственно в этом и проблема изначально была
Неизвестный
15.10.2013, 17:24
общий
В текущей версии SQL Server создать базу Sklad. Импортировать в нее все таблицы из Access.
В app.config заменить
<add name="Sklad.Properties.Settings.SkladConnectionString"
connectionString="Data Source=ИмяКомпьютера\SQLEXPRESS;Initial Catalog=Sklad;User ID=ИмяПользователя"
providerName="System.Data.SqlClient" />

и попробовать запустить проект.

у меня не установлен Office2007 или выше - выдает ошибки.
Неизвестный
15.10.2013, 19:18
общий
поменял теперь так
Прикрепленные файлы:
707397f57c03de8c83ed72044186c6a0.jpg
Неизвестный
16.10.2013, 11:13
общий
Связь идет через OLE, поэтому нужно изменить в строке подключения
providerName="System.Data.OleDb"

Это просто немного устаревшая технология связи с базами данных, с SQL 2005 связь осуществляется через SqlClient, но работать должно.
Неизвестный
16.10.2013, 11:52
общий
Блин. А какой Office установлен? Поставил 2007, но что-то ошибки выдает. Может 2010 нужно?
Неизвестный
16.10.2013, 15:04
общий
У меня с базой SQL заработало.

Создаем подключение
Источник данных - Microsoft SQL Server
Поставщик данных .NET Framework для OLE DB ( именно этот - изменить предлагаемый по-умолчанию )

А дальше стандартные настройки для баз SQL.

Правда сам проект дальше не гонял - не знаю что как работает.

В файле app.config

<add name="Sklad.Properties.Settings.SkladConnectionString" connectionString="Provider=SQLOLEDB;Data Source=СЕРВЕР\SQLEXPRESS;Persist Security Info=True;Password=ПАРОЛЬ;User ID=ПОЛЬЗОВАТЕЛЬ;Initial Catalog=Sklad"
providerName="System.Data.OleDb" />
Неизвестный
16.10.2013, 15:40
общий
Ну по идее получается делаю импорт в SQL, и в строке подключения указываю SQL базу, вроде все правильно? Ну хотя запустилась без ошибок
Неизвестный
16.10.2013, 16:04
общий
В SQL Server создается пустая база. Делается импорт из Access. А в строке подключения проекта указывается новая база. Лучше в SQL Server создать нового пользователя с полными правами и от его имени подключаться в проекте.
Добавлять-удалять не пробовал, а окошки открываются - справочники, накладные, создаются отчеты.
Неизвестный
17.10.2013, 14:47
общий
Он только в sql не дает редактировать удалять добавлять, ему получается чем то таблицы не нравятся
Прикрепленные файлы:
c134b2928444671f3a4828a25a2d0ab3.jpg
Неизвестный
17.10.2013, 16:24
общий
во-первых, в программе в запросах использована обратная кавычка ` , которую нельзя использовать в запросах SQL Server. должна быть использована обычная одинарная кавычка ' . заменено 759 раз кажись.

сейчас посмотрю что не так с запросами на изменение. я меняю название склада 1 на склад 4. тоже ошибка.
Неизвестный
17.10.2013, 17:57
общий
как мне рассказали соседи - основная проблема при импорте баз данных в том, что не импортируются ключи и связи между таблицами.

попробовать так - создать новую базу и новые таблицы с созданием ключей. так, как делалось с Access.
Неизвестный
18.10.2013, 12:16
общий
ну я посмотрел в sql, вроде все импортировалось нормально, верно
Неизвестный
18.10.2013, 12:34
общий
при импорте потерялись все индексы и связи. нужно создавать вручную.
Неизвестный
18.10.2013, 13:00
общий
а вручную не получится создать связи и ключи? или заново все таки проще будет сделать?
Неизвестный
18.10.2013, 13:18
общий
так только вручную и остается. к сожалению, я сейчас отчетами по работе занят. постараюсь в ближайшие пару часов закончить и посоздавать индексы. это будет быстрее, чем создавать все таблицы заново. и проверить работу.
Неизвестный
18.10.2013, 14:09
общий
ок спасибо, я все таки пока попробую полностью тогда пересоздать
Неизвестный
18.10.2013, 14:23
общий
Тогда, если будет возможно, сделать бакап базы и где-то выложить, чтобы я смог скачать и подключить у себя.
Неизвестный
18.10.2013, 14:53
общий
Вот то что сделал, но что то у меня та же проблема может что не так делаю?
Неизвестный
18.10.2013, 19:37
общий
полный песец.

уже все что смог придумать перебробовал. не хочет вносить изменения в таблицы, хотя отображает нормально.

основное - нельзя использовать обратные кавычки в запросах. а так уже и подменял источник данных и заменял имена источника данных. не получилось. ппц
Неизвестный
18.10.2013, 20:00
общий
охренеть.

импортировал в SQL Server все таблицы. удалил в Access все таблицы. создал системный источник данных ODBC с windows-авторизацией( на работе домен ) . в Access сделал связь с таблицами из этого источника данных. все работает. данные хранятся и меняются в SQL Server.
Неизвестный
18.10.2013, 20:28
общий
наверное, проще удалить на формах источники данных и создать заново с SQL. а потом смотреть где возникают ошибки и добавлять функции обработки.

было бы проще, если бы был создан источник данных ODBC, который можно перенастроить на любой источник данных. тогда в теории в программе вообще никаких изменений не потребовалось бы ( кроме небольшого различия в языке SQL в запросах при работе с датами и отсутствием некоторых функций типа Iif, хотя в 2008 она уже есть ) .


Форма ответа