Форум программистов, компьютерный форум, киберфорум
Visual Basic
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.78/9: Рейтинг темы: голосов - 9, средняя оценка - 4.78
0 / 0 / 0
Регистрация: 29.10.2007
Сообщений: 108

Как программно создать DSN?

27.11.2007, 11:44. Показов 1987. Ответов 9
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Или подскажите как быть после того, как я создам дистрибутив, мне что DSN вручную прописывать на каждом компе?
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
27.11.2007, 11:44
Ответы с готовыми решениями:

Как программно создать DSN для ODBC?
Как программно создать DSN для ODBC?

Как создать System-DSN из программы VB ?
Как создать System-DSN из программы VB ?

Пример создания dsn программно
О почтенный народ, не выручите ли примерчиком кода? Имеется: параметры для создания системного odbc Нужно 2 фрагмента: 1) проверка...

9
0 / 0 / 0
Регистрация: 17.10.2007
Сообщений: 84
27.11.2007, 15:31
Не думал что в наше время еще кто-то dsn пользуется
Я когда-то, давно, накидал модуль для проверки есть ли такая запись dsn, если нет, то создать. Делал я это под mdb и Sybase Sql Anywhere, но переделать можно под что угодно. Только код не очень чисто отлажен, неохота тогда было долго возиться.
----------------------------------------------------
Option Explicit

'îïðåäå& euml;åíèå îïåð.ñ&egrav e;ñòåì&ucirc ;
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

'&ocirc;&oacute;&iacute;&ecirc;&ouml;&eg rave;&yuml; &icirc;&iuml;&eth;&aring;&auml;&aring;&e uml;&aring;&iacute;&egrave;&yuml; &ecirc;&agrave;&ograve;&agrave;&euml;&ic irc;&atilde;&agrave; Windows system
' in: none
' out: &ccedil;&agrave;&iacute;&agrave;&divide; &aring;&iacute;&egrave;&aring; &acirc;&icirc;&ccedil;&acirc;&eth;&agrav e;&ugrave;&agrave;&aring;&ograve;&ntilde ;&yuml;
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
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
23.12.2007, 13:20
Помогаю со студенческими работами здесь

Надо создать System-DSN из программы VB.
Надо создать System-DSN из программы VB. Есть функция: Success=SQLConfigDataSource(Null,ODBS_ADD_SYS_DSN,Driver,Attributes) на...

Как программно создать 10 лабелов?
как программно создать 10 лабелов...?

Как программно создать обьект в VB?
Как програмно создать обьект в VB,например Label?

Как программно создать таймер?
Перепробовал уже много всяких вариантов (с New и без New) и никак не получается :( В интернете постоянно подсовывают варианты из VB.NET. ...

Как программно создать файл .xls???
Можт кто знает как из VB создать *.xls??? черканите...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
10
Ответ Создать тему
Новые блоги и статьи
Подстановка значения реквизита справочника в табличную часть документа
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
Эта мне ментальная установка, что вот прямо сейчас, мол, мне для полного счастья не хватает (нужное вписать), и когда я этого достигну - тогда и полный кайф. Одна из самых сильных ловушек на пути. . . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru