|
0 / 0 / 0
Регистрация: 29.10.2007
Сообщений: 108
|
|
Как программно создать DSN?27.11.2007, 11:44. Показов 1991. Ответов 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??? Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
| Опции темы | |
|
|
Новые блоги и статьи
|
|||
|
Знаешь почему 90% людей редко бывают счастливыми?
kumehtar 14.04.2026
Потому что они ждут. Ждут выходных, ждут отпуска, ждут удачного момента. . .
а удачный момент так и не приходит.
|
Фиксация колонок в отчете СКД
Maks 14.04.2026
Фиксация колонок в СКД отчета типа Таблица.
Задача: зафиксировать три левых колонки в отчете.
Процедура ПриКомпоновкеРезультата(ДокументРезультат, ДанныеРасшифровки, СтандартнаяОбработка)
/ / . . .
|
Настройки VS Code
Loafer 13.04.2026
{
"cmake. configureOnOpen": false,
"diffEditor. ignoreTrimWhitespace": true,
"editor. guides. bracketPairs": "active",
"extensions. ignoreRecommendations": true,
. . .
|
Оптимизация кода на разграничение прав доступа к элементам формы
Maks 13.04.2026
Алгоритм из решения ниже реализован на нетиповом документе, разработанного в конфигурации КА2.
Задачи, как таковой, поставлено не было, проделанное ниже исключительно моя инициатива.
Было так:. . .
|
|
Контроль заполнения и очистка дат в зависимости от значения перечислений
Maks 12.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "ПланированиеПерсонала", разработанного в конфигурации КА2.
Задача: реализовать контроль корректности заполнения дат назначения. . .
|
Архитектура слоя интернета для сервера-слоя.
Hrethgir 11.04.2026
В продолжение https:/ / www. cyberforum. ru/ blogs/ 223907/ 10860. html
Знаешь что я подумал? Раз мы все источники пишем в голове ветки, то ничего не мешает добавить в голову такой источник, который сам. . .
|
Подстановка значения реквизита справочника в табличную часть документа
Maks 10.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "ПланированиеПерсонала", разработанного в конфигурации КА2.
Задача: при выборе сотрудника (справочник Сотрудники) в ТЧ документа. . .
|
Очистка реквизитов документа при копировании
Maks 09.04.2026
Алгоритм из решения ниже применим как для типовых, так и для нетиповых документов на самых различных конфигурациях.
Задача: при копировании документа очищать определенные реквизиты и табличную. . .
|