Конфигурирование SYSTEM DSN программным способом

Программирование на Visual Basic, главный форум. Обсуждение тем программирования на VB 1—6.
Даже если вы плохо разбираетесь в VB и программировании вообще — тут вам помогут. В разумных пределах, конечно.
Правила форума
Темы, в которых будет сначала написано «что нужно сделать», а затем просьба «помогите», будут закрыты.
Читайте требования к создаваемым темам.
painkiller
Начинающий
Начинающий
 
Сообщения: 4
Зарегистрирован: 09.02.2005 (Ср) 6:18
Откуда: Kemerovo

Конфигурирование SYSTEM DSN программным способом

Сообщение painkiller » 09.02.2005 (Ср) 7:09

Всем привет!
У меня несколько SQL Server'ов и несколько баз, а прога, которую купили, работает только с DSN, просто периодически ее нужно, чтобы она подключалась к разным сервакам и базам.В данный момент озадачен сабжем, проблема в том, что ни с помощью ODBC API, ни с помощью метода RegisterDatabase Jetпровайдера мне не удается это сделать: первый способ молча что-то делает, а второй матюкается "ODBC call failed". Ось Windows XP SP1, права администратора. Ниже приведу исходник на ODBC API:
Private Declare Function SQLConfigDataSource Lib "odbccp32.dll" (ByVal hwndParent As Long, ByVal fRequest As Integer, ByVal lpszDriver As String, ByVal lpszAttributes As String) As Long
Private Declare Function SQLSetConfigMode Lib "odbccp32.dll" (ByVal wConfigMode As Long) As Long
Private Declare Function SQLInstallerError Lib "odbccp32.dll" (ByVal iError As Integer, ByVal pfErrorCode As Long, ByVal lpszErrorMsg As String, ByVal cbErrorMsgMax As Integer, ByVal pcbErrorMsg As Integer) As Long
'----------------------
Private Sub Form_Load()
Dim DSN As Long
Dim Mode As Long
Dim Err As Long
Dim pfErrorCode As Long
Mode = SQLSetConfigMode(2)
DSN = SQLConfigDataSource(0, 5, "SQLServer", "DSN=Optimum DB;SERVER=myserver;UID=myuid;PWD=myparole;Database=MyDatabase")
Err = SQLInstallerError(1, pfErrorCode, lpszErrorMsg, 509, pcbErrorMsg)
List1.AddItem (Err)
List1.AddItem (pfErrorCode)
End Sub
Плз, подскажите, где я мог ошибиться?

painkiller
Начинающий
Начинающий
 
Сообщения: 4
Зарегистрирован: 09.02.2005 (Ср) 6:18
Откуда: Kemerovo

Конфигурирование SYSTEM DSN (вдогонку)

Сообщение painkiller » 09.02.2005 (Ср) 7:17

Извините, забыл написать, исходник на ODBC API никаких ошибок не выдает, но при этом и ничего не изменяет, в этом вся изюминка:(

GSerg
Шаман
Шаман
 
Сообщения: 14286
Зарегистрирован: 14.12.2002 (Сб) 5:25
Откуда: Магадан

Сообщение GSerg » 09.02.2005 (Ср) 7:41

Мож есть смысл позырить, какая функция первой возвращает FALSE, и после неё вызвать SQLInstallerError?
Как только вы переберёте все варианты решения и не найдёте нужного, тут же обнаружится решение, простое и очевидное для всех, кроме вас

painkiller
Начинающий
Начинающий
 
Сообщения: 4
Зарегистрирован: 09.02.2005 (Ср) 6:18
Откуда: Kemerovo

Сообщение painkiller » 09.02.2005 (Ср) 9:14

SQLSetConfigMode возвращает 1, SQLConfigDataSource возвращает 0.
Поставил функцию SQLInstallerError после SQLSetConfigMode и она вернула 100(SQL_NO_DATA). В ODBC help сказано "SQLInstallerError does not post error values for itself. SQLInstallerError returns SQL_NO_DATA when it is unable to retrieve any error information (in which case pfErrorCode is undefined)". Неужто у ХР еще какие-то подвязки для редактирования инфы в реестре? сомнительно, права-то админские

GSerg
Шаман
Шаман
 
Сообщения: 14286
Зарегистрирован: 14.12.2002 (Сб) 5:25
Откуда: Магадан

Сообщение GSerg » 09.02.2005 (Ср) 9:26

Так после SQLConfigDataSource надо ставить...
Как только вы переберёте все варианты решения и не найдёте нужного, тут же обнаружится решение, простое и очевидное для всех, кроме вас

Konst_One
Член-корреспондент академии VBStreets
Член-корреспондент академии VBStreets
Аватара пользователя
 
Сообщения: 3041
Зарегистрирован: 09.04.2004 (Пт) 13:47
Откуда: Химки

Сообщение Konst_One » 09.02.2005 (Ср) 11:53

вот попробуй с помощью моей программки, может поможет:


Вернуться в Visual Basic 1–6

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 152

    TopList