VB6 DAO соединение с базой данных SQL Server 2008 - PullRequest
0 голосов
/ 12 ноября 2018

ВВЕДЕНИЕ (tldr; вопрос внизу)

Во-первых, да, я знаю DAO:

  1. устарел
  2. больше не поддерживается
  3. неэффективно для SQL
  4. вообще отстой

Так что ответы в том же духе не помогают решению проблемы.

Я давно изменил свои предпочтения на nHibernate и другие способы подключения к данным. Однако я работаю над устаревшим проектом, где на первом этапе планируется перенести данные из многих баз данных Access в один экземпляр SQL Server. Достаточно просто. Перенос данных выполнен и работает нормально.

Тем не менее, приложение представляет собой код VB6, использующий DAO для подключения к Access, и мне нужно как можно меньше изменить это для первого этапа. Следующим этапом (в ближайшее время) будет преобразование всего приложения в сайт ASP.MVC, правильно использующий SQL.

Когда я ищу, как правильно структурировать функцию DAO OpenDatabase () для попадания на SQL Server, все ответы приведены выше «Почему вы хотите это сделать?» "Вы должны выучить ADODB!" «DAO для лохов!» ерунда, которая никогда не затрагивает фактический вопрос К сожалению, оригинальный вопрос остается в поисковой системе, даже если он помечен как «решенный» на определенных форумах и т. Д.

ТАК ... ВОПРОС

Учитывая все это, есть кто-нибудь, кто еще помнит, как подключиться к Sql Server с помощью DAO OpenDatabase ???

Да, это сравнимо с сверлением отверстия в куске дерева с помощью скобы и долота? Конечно, силовая тренировка лучше, умнее, быстрее и все такое ... но иногда требуются старые способы.

Ответы [ 2 ]

0 голосов
/ 12 ноября 2018

Мне пришлось недавно перенести VB6 с приложением DAO с SQL7 на SQL 2016, и процесс был почти прямым.Я ничего не изменил в коде, кроме старого синтаксиса SQL, который сейчас устарел.

Я использовал ODBC.Итак, вот как я открываю SQL-соединение с помощью DAO:

connect = "DSN=<odbcname>;UID=<username>;PWD=<password>;DATABASE=<database>"
Set datab = rdoEnvironments(0).OpenConnection("", rdDriverCompleteRequired, False, connect)

Это решение для нас, поскольку в нашем старом приложении было меньше изменений.Обратите внимание, что это не единственный способ сделать это.

Помните, что вы должны использовать 32-битный драйвер ODBC.Если вы работаете в 64-битной системе, выберите хорошую (C:\Windows\SysWOW64\odbcad32.exe).И я думаю, что использовал драйвер SQL Server.Собственный клиент SQL слишком свеж для DAO (я думаю).Возможно, вам придется попробовать много.

0 голосов
/ 12 ноября 2018

Я думаю, что один из способов сделать это - использовать соединение ODBC. На панели инструментов формы Администрирование вы можете добавить источник ODBC для SQL Server. После этого вы можете попробовать это:

Dim worksp As Workspace
Dim conexString As String
Dim base As Variant
Set worksp = DBEngine.Workspaces(0)
Let conexString = "OBDC;DSN=SQLDNSNAME;UID=;PWD="
Set base = worksp.OpenDatabase("BDDNAME", False, False, conexString)
...