|
0 / 0 / 0
Регистрация: 29.10.2007
Сообщений: 108
|
|
Как программно создать DSN?27.11.2007, 11:44. Показов 1987. Ответов 9
Метки нет (Все метки)
Или подскажите как быть после того, как я создам дистрибутив, мне что DSN вручную прописывать на каждом компе?
0
|
|
| 27.11.2007, 11:44 | |
|
Ответы с готовыми решениями:
9
Как программно создать DSN для ODBC? Как создать System-DSN из программы VB ? Пример создания dsn программно |
|
0 / 0 / 0
Регистрация: 17.10.2007
Сообщений: 84
|
|
| 27.11.2007, 15:31 | |
|
Не думал что в наше время еще кто-то dsn пользуется
![]() Я когда-то, давно, накидал модуль для проверки есть ли такая запись dsn, если нет, то создать. Делал я это под mdb и Sybase Sql Anywhere, но переделать можно под что угодно. Только код не очень чисто отлажен, неохота тогда было долго возиться. ---------------------------------------------------- Option Explicit 'îïðåäå& euml;åíèå îïåð.ñ&egrav e;ñòåìû ; Private Type OSVERSIONINFO dwOSVersionInfoSize As Long dwMajorVersion As Long dwMinorVersion As Long dwBuildNumber As Long dwPlatformId As Long szCSDVersion As String * 128 End Type Private Const VER_PLATFORM_WIN32s = 0 Private Const VER_PLATFORM_WIN32_WINDOWS = 1 Private Const VER_PLATFORM_WIN32_NT = 2 Private Declare Function GetVersionEx Lib 'kernel32' Alias 'GetVersionExA' (lpVersionInformation As OSVERSIONINFO) As Long Private Const REG_SZ = 1 'Constant for a string variable type. Private Const REG_BINARY = 3 'Constant for Binary Private Const REG_DWORD = 4 '32-bit number Private Const KEY_QUERY_VALUE = &H1 Private Const ERROR_SUCCESS = 0& Private Const HKEY_LOCAL_MACHINE = &H80000002 'Creates a Key In Registry Private Declare Function RegCreateKey Lib 'advapi32.dll' Alias 'RegCreateKeyA' (ByVal hKey As Long, ByVal lpSubKey As String, phkResult As Long) As Long 'API FOR STRING Private Declare Function RegSetValueEx Lib 'advapi32.dll' Alias 'RegSetValueExA' (ByVal hKey As Long, ByVal lpValueName As String, ByVal Reserved As Long, ByVal dwType As Long, lpData As Any, ByVal cbData As Long) As Long 'API FOR DWORD Private Declare Function RegSetValueExA Lib 'advapi32.dll' (ByVal hKey As Long, ByVal lpValueName As String, ByVal Reserved As Long, ByVal dwType As Long, ByRef lpData As Long, ByVal cbData As Long) As Long 'API FOR BINARY Private Declare Function RegSetValueExB Lib 'advapi32.dll' Alias 'RegSetValueExA' (ByVal hKey As Long, ByVal lpValueName As String, ByVal Reserved As Long, ByVal dwType As Long, ByRef lpData As Byte, ByVal cbData As Long) As Long 'API for closing the Registry Key Private Declare Function RegCloseKey Lib 'advapi32.dll' (ByVal hKey As Long) As Long Private Declare Function GetWindowsDirectory Lib 'kernel32' Alias 'GetWindowsDirectoryA' (ByVal lpBuffer As String, ByVal nSize As Long) As Long Private Declare Function RegOpenKeyEx Lib 'advapi32.dll' Alias 'RegOpenKeyExA' (ByVal hKey As Long, ByVal lpSubKey As String, ByVal ulOptions As Long, ByVal samDesired As Long, phkResult As Long) As Long Private Declare Function RegQueryValueEx Lib 'advapi32.dll' Alias 'RegQueryValueExA' (ByVal hKey As Long, ByVal lpValueName As String, ByVal lpReserved As Long, lpType As Long, lpData As Any, lpcbData As Long) As Long ' Note that If you declare the lpData parameter as String, you must pass it By Value Public Function CheckAndCreateDSN() Dim DataSourceName As String Dim DatabaseName As String Dim Description As String Dim DriverPath As String Dim DriverName As String Dim LastUser As String Dim Regional As String Dim Server As String Dim lResult As Long Dim hKeyHandle erSize lResult = RegSetValueExA(hKeyHandle, 'MaxBufferSize', 0, REG_DWORD, MaxBufferSize, 4) 'write the value 'PageTimeOut lResult = RegSetValueExA(hKeyHandle, 'PageTimeOut', 0, REG_DWORD, PageTimeOut, 4) 'write the value 'Threads lResult = RegSetValueExA(hKeyHandle, 'Threads', 0, REG_DWORD, Threads, 4) 'write the value 'UserCommitSync lResult = RegSetValueEx(hKeyHandle, 'UserCommitSync', 0&, REG_SZ, _ ByVal UserCommitSync, Len(UserCommitSync)) 'Close the new DSN key. lResult = RegCloseKey(hKeyHandle) 'Open ODBC Data Sources key to list the new DSN in the ODBC Manager. 'Specify the new value. 'Close the key. lResult = RegCreateKey(HKEY_LOCAL_MACHINE, _ 'SOFTWAREODBCODBC.INIODBC Data Sources', hKeyHandle) lResult = RegSetValueEx(hKeyHandle, DataSourceName, 0&, REG_SZ, _ ByVal DriverName, Len(DriverName)) lResult = RegCloseKey(hKeyHandle) Exit Function ErrorHandler: ErrorLog ('Îøèáê à ñîçäà&ia cute;èÿ DSN') End Function Private Function isSZKeyExist(szKeyPath As String, _ szKeyName As String, _ ByRef szKeyValue As String) As Boolean Dim bRes As Boolean Dim lRes As Long Dim hKey As Long lRes = RegOpenKeyEx(HKEY_LOCAL_MACHINE, _ szKeyPath, _ 0&, _ KEY_QUERY_VALUE, _ hKey) If lRes <> ERROR_SUCCESS Then isSZKeyExist = False Exit Function End If lRes = RegQueryValueEx(hKey, _ szKeyName, _ 0&, _ REG_SZ, _ ByVal szKeyValue, _ Len(szKeyValue)) RegCloseKey (hKey) If lRes <> ERROR_SUCCESS Then isSZKeyExist = False Exit Function End If isSZKeyExist = True End Function Private Function checkWantedAccessDSN(szWantedDSN As String) As Boolean Dim szKeyPath As String Dim szKeyName As String Dim szKeyValue As String Dim bRes As Boolean szKeyPath = 'SOFTWAREODBCODBC.INIODBC Data Sources' szKeyName = szWantedDSN szKeyValue = String(255, Chr(32)) If isSZKeyExist(szKeyPath, szKeyName, szKeyValue) Then bRes = True Else bRes = False End If checkWantedAccessDSN = bRes End Function 'ôóíêö&eg rave;ÿ îïðåäå&e uml;åíèÿ êàòàë&ic irc;ãà Windows system ' in: none ' out: çàíà÷ åíèå âîçâð&agrav e;ùàåòñ ;ÿ Private Function WindowsDirectory() As String Dim sDir As String, sTemp As String * 256, nSize As Long nSize = GetWindowsDirectory(sTemp, 255): sDir = Left(sTemp, nSize) ' sDir = 'C:WINDOWS' WindowsDirectory = UCase$(sDir) End Function Private Function IsWindowsNT() As Boolean Dim osvi As OSVERSIONINFO osvi.dwOSVersionInfoSize = Len(osvi) GetVersionEx osvi IsWindowsNT = (osvi.dwPlatformId = VER_PLATFORM_WIN32_NT) End Function Private Function IsWindows98() As Boolean Dim osvi As OSVERSIONINFO osvi.dwOSVersionInfoSize = Len(osvi) GetVersionEx osvi IsWindows98 = (osvi.dwPlatformId = VER_
0
|
|
|
0 / 0 / 0
Регистрация: 17.10.2007
Сообщений: 84
|
|
| 27.11.2007, 15:38 | |
|
Что-то русские буквы в коентариях у меня не захотели передаваться...
Если что непонятно, поясню.....
0
|
|
|
0 / 0 / 0
Регистрация: 29.10.2007
Сообщений: 108
|
|
| 27.11.2007, 17:44 [ТС] | |
|
мммда, а как-то попроцше нельзя?
0
|
|
|
2 / 2 / 1
Регистрация: 19.07.2007
Сообщений: 737
|
|
| 28.11.2007, 09:48 | |
|
Смотри примеры в разделе Базы Данных - туда недавно кидал модуль.
0
|
|
|
0 / 0 / 0
Регистрация: 17.10.2007
Сообщений: 84
|
|
| 28.11.2007, 10:27 | |
|
На самом деле код прост, если внимательно присмотреться. Премущество его в универсальности. Лишние навороты типа определение ОС и ее версии можно выкинуть. Можно, конечно, в пять строчек создать dsn-запись через метод RegisterDatabase объекта DBEngine, но как-то,imho, неочень это...и не все источники так регистрятся.
Счастливо.
0
|
|
|
1 / 1 / 0
Регистрация: 09.10.2007
Сообщений: 596
|
|
| 28.11.2007, 13:17 | |
|
A funkziju SQLConfigDataSource popolzovat lomit?
0
|
|
|
0 / 0 / 0
Регистрация: 29.10.2007
Сообщений: 108
|
|
| 28.11.2007, 13:38 [ТС] | |
|
Честно говоря я и не знал о существовании такой функции, но вот проблема, посмотрел в MSDN, а там есть пример как создать DSN с Excelem, а с Access'om нет, с Excelem такой код:
SQLConfigDataSource(NULL,ODBC_ADD_DSN, 'Excel Files (*.xls)', 'DSN=New Excel Data Source*' 'Description=New Excel Data Source*' 'FileType=Excel*' 'DataDirectory=C:\EXCELDIR*' 'MaxScanRows=20*'); а ведь с Аццессом надо еще драйвер и тд и тп указывать, помогите кто может, плс...
0
|
|
|
1 / 1 / 0
Регистрация: 09.10.2007
Сообщений: 596
|
|
| 28.11.2007, 13:52 | |
|
Nu a v chom problema? Na to i ODBC - EDINII dostup ko vsemu!
Vmesto Excel - Access i vseh problem. Na ASP - Forume est primer sozdanija DSN pod Access. I voobshe tut more primerov. Vopros o progr. sozdanii DSN - odin iz popularneishih.
0
|
|
|
0 / 0 / 0
Регистрация: 23.12.2007
Сообщений: 17
|
|
| 23.12.2007, 13:20 | |
|
Можно обойтись без DSN, проблема у меня была в том, что клиенты не хотели их использовать, а я не знал, как при открытии коннекшена АДО правильно составить строку. Ответ прост: посмотри, какие параметры (со значениями) прописываются в регистри при создании DSN, их и используй при открытии коннекшена, DSN будет тебе не нужен.
0
|
|
| 23.12.2007, 13:20 | |
|
Помогаю со студенческими работами здесь
10
Надо создать System-DSN из программы VB. Как программно создать 10 лабелов? Как программно создать обьект в VB?
Как программно создать файл .xls??? Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
Подстановка значения реквизита справочника в табличную часть документа
Maks 10.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "ПланированиеПерсонала", разработанного в конфигурации КА2.
Задача: при выборе сотрудника (справочник Сотрудники) в ТЧ документа. . .
|
Очистка реквизитов документа при копировании
Maks 09.04.2026
Алгоритм из решения ниже применим как для типовых, так и для нетиповых документов на самых различных конфигурациях.
Задача: при копировании документа очищать определенные реквизиты и табличную. . .
|
модель ЗдравоСохранения 8. Подготовка к разному выполнению заданий
anaschu 08.04.2026
https:/ / github. com/ shumilovas/ med2. git
main ветка * содержимое блока дэлэй из старой модели теперь внутри зайца новой модели
8ATzM_2aurI
|
Блокировка документа от изменений, если он открыт у другого пользователя
Maks 08.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа, разработанного в конфигурации КА2.
Задача: запретить редактирование документа, если он открыт у другого пользователя.
/ / . . .
|
|
Система безопасности+живучести для сервера-слоя интернета (сети). Двойная привязка.
Hrethgir 08.04.2026
Далее были размышления о системе безопасности. Сообщения с наклонным текстом - мои.
А как нам будет можно проверить, что ссылка наша, а не подделана хулиганами, которая выбросит на другую ветку и. . .
|
Модель ЗдрввоСохранения 7: больше работников, больше ресурсов.
anaschu 08.04.2026
работников и заданий может быть сколько угодно, но настроено всё так, что используется пока что только 20%
kYBz3eJf3jQ
|
Дальние перспективы сервера - слоя сети с космологическим дизайном интефейса карты и логики.
Hrethgir 07.04.2026
Дальнейшее ближайшее планирование вывело к размышлениям над дальними перспективами. И вот тут может быть даже будут нужны оценки специалистов, так как в дальних перспективах всё может очень сильно. . .
|
Горе от ума
kumehtar 07.04.2026
Эта мне ментальная установка, что вот прямо сейчас, мол, мне для полного счастья не хватает (нужное вписать), и когда я этого достигну - тогда и полный кайф. Одна из самых сильных ловушек на пути. . . .
|