Ошибка входа в систему, Crystal Reports 9, VB6, сервер sql, sqlncli - PullRequest
1 голос
/ 10 сентября 2009

Я пытаюсь собрать установочный пакет для устаревшего программного обеспечения vb6. само программное обеспечение подключается к серверу sql через sqlncli (собственный клиент). Я упаковал все зависимости и развернул их на новом компьютере с WinXP и Office2003.

теперь с целевой машины я могу подключиться к базе данных (ms sqlserver 2005), которая работает где-то еще, используя tcp / ip. Устаревшее программное обеспечение прекрасно подключается к БД, и я могу манипулировать данными. но когда я пытаюсь открыть отчет с кристаллами, все становится беспорядочным:

Я получаю сообщение об ошибке «Ошибка во время выполнения» -2147189176 (80047e48): Ошибка входа. Подробности: 01000: [Microsoft] [Драйвер ODBC SQL Server] [DBNETLIB] ConnectionOpen (Connect ()) "

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

  For i= 1 To numTables
    Set crTable = crTables.Item(i)
    crTable.SetLogOnInfo dbServer, dbName, dbLogin, dbPasswd
  Next

ConnectBufferString читает «Строка соединения = DRIVER = SQL Server ;; ID пользователя = пользователь ;; Пароль = ;; База данных = MY_DB ;; Сервер = 192.168.1.3 \ SQLEXPRESS ;; UseDSNProperties = -1"

Кажется, нет способа явно установить провайдер в SQLNCLI, по крайней мере, я не вижу его.

при запуске программного обеспечения на моей dev-системе все работает как положено.

Надеюсь, вы, ребята, поможете мне с этим. просто нам не нужно спорить об этом: я также думаю, что обе эти технологии (vb6 и cr9) устарели, но переключение здесь не вариант.

Ответы [ 2 ]

0 голосов
/ 15 сентября 2014

Вам нужно стереть таблицы и изменить конфигурацию доступа к базе данных, см. Пример ниже. В первой строке кода я привел пример, если необходимо изменить драйвер соединения, в моем случае в отчете указывалось на базу данных PostgreSQL, и необходимо было изменить программу для подключения к серверу SQL.

myReportObject.Database.Tables(1).DllName = "crdb_ado.dll"       'Connect to SQL with OLEDB
For Index = 1 To myReportObject.Database.Tables.Count
    With myReportObject.Database.Tables(Index)

        .ConnectionProperties.DeleteAll

         .ConnectionProperties.Add "Provider", "SQLOLEDB"
         .ConnectionProperties.Add "Data Source", mySqlIP
         .ConnectionProperties.Add "Initial Catalog", myDB
         .ConnectionProperties.Add "User ID", usr_id
         .ConnectionProperties.Add "Password", pass
         .ConnectionProperties.Add "Integrated Security", 0

    End With
Next
0 голосов
/ 17 сентября 2009

Я знаю, что вы сказали в своем комментарии, что вы уже обошли это, но я решила, что добавлю это туда. :)

Вы можете попробовать использовать «Provider = SQLNCLI» вместо «DRIVER = SQL Server», чтобы увидеть, имеет ли это значение.

Взгляните на следующую ссылку. Прокрутите страницу вниз, пока не увидите раздел «Поставщик OLE DB для собственного клиента SQL Server 9.0». Они показывают примеры строк соединений с использованием собственного клиента SQL Server.

http://www.connectionstrings.com/sql-server-2005

Надеюсь, это поможет.

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