Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

Help. Как получить список имеющихся Odbc?

266
28 октября 2003 года
mhaturov
901 / / 23.10.2003
Раньше сталкивался с подобным, даже видел примеры, но не помню, как сделать. Задача такая: нужно получить список всех имеющихся на машине имён DSN. Скиньте, пожалуйста, примерчик. Работаю в среде VBA под Access.
Заранее всем спасибо.
С уважением,
М. Шатуров
266
28 октября 2003 года
mhaturov
901 / / 23.10.2003
Цитата:
Originally posted by mhaturov
Раньше сталкивался с подобным, даже видел примеры, но не помню, как сделать. Задача такая: нужно получить список всех имеющихся на машине имён DSN. Скиньте, пожалуйста, примерчик. Работаю в среде VBA под Access.
Заранее всем спасибо.
С уважением,
М. Шатуров



Это нашёл. Но теперь другой вопрос. Как считать из реестра имена ODBC. Так же сталкивался, видел пример, но как из реестра читать - не помню - не приходилось. (Нужно считать имена веток из HCLM/Softvare/ODBC.INI). HELP, плз.
Заранее всем спасибо.
С уважением,
М. Шатуров

266
28 октября 2003 года
mhaturov
901 / / 23.10.2003
Цитата:
Originally posted by mhaturov


Это нашёл. Но теперь другой вопрос. Как ститать из реестра имена ODBC. Так же сталкивался, видел пример, но как из реестра читать - не помню - не приходилось. (Нужно считать имена веток из HCLM/Softvare/ODBC.INI). HELP, плз.
Заранее всем спасибо.
С уважением,
М. Шатуров



Кроме того, (этим тоже занимался, но тоже не помню, как) как определить, какого семейства Винда на машине пользователя. И ещё беда - на той машине, которую мне в работу выделили у API Text Viewer нет базы данных :{ Поэтому, пожалуйста, если кто может, скиньте ссылку, или вышлите, если не трудно. А то уже погибаю!!!
Заранее всем спасибо.
С уважением,
М. Шатуров

478
28 октября 2003 года
XtreamAll
279 / / 01.10.2003
У меня есть база, но она сюда не влезет...
266
28 октября 2003 года
mhaturov
901 / / 23.10.2003
Цитата:
Originally posted by XtreamAll
У меня есть база, но она сюда не влезет...



Огромное спасибо всем, кто озаботился моей проблемой с БД API, но я тут только что нарыл базу эту (текстовики), так что необходимость в БД для API Text Viewer отпала :) .
Остаётся проблема с получением списка ODBC, либо чтением их из реестра.
Заранее всем благодарен.
С уважением,
М.Шатуров

266
28 октября 2003 года
mhaturov
901 / / 23.10.2003
Да, HELP!!! Работаю без MSDN, поэтому никак без конфы!!! Как определить, какая версия "виндов" стоит на машине пользователя? Какая API-функция и какие имеет аргументы???
Нужно сделать срочно, иначе заставят вместо красивого кода писать уродливый.:{
478
28 октября 2003 года
XtreamAll
279 / / 01.10.2003
Вота:

Public Declare Function GetVersion Lib "kernel32" Alias "GetVersion" () As Long

Функция GetVersion

Описание:
function GetVersion: Word;

Считывает номеp текущей веpсии Windows.

Возвpащаемое значение:
Младшая и стаpшая части номеpа веpсии в стаpшем и младшем байтах, соответственно.

функция находится в файле kernel32.dll
266
28 октября 2003 года
mhaturov
901 / / 23.10.2003
Цитата:
Originally posted by XtreamAll
Вота:

Public Declare Function GetVersion Lib "kernel32" Alias "GetVersion" () As Long

Функция GetVersion

Описание:
function GetVersion: Word;

Считывает номеp текущей веpсии Windows.

Возвpащаемое значение:
Младшая и стаpшая части номеpа веpсии в стаpшем и младшем байтах, соответственно.

функция находится в файле kernel32.dll



Огромное спасибо!
Вспомнил, как ей пользоваться, всё описал, написал процедуру опроса... Но... Из среды VB я подключал библиотеку без проблем (по-моему Microsoft Windows API WinSysPath/sistem32/kernel32.dll). VBA from MS Access просто не видит этой библиотеки, а когда пытаюсь явно указать (в Options/Refesrences/Browse...) - ругается "Can't add a reference to th specified file.:( . Может, подскажете, в чём беда???
Кроме того, никто не знает чего-нибудь по поводу ODBC (определение версии Windows мне нужно только для того, чтобы знать "на лету", какие библиотеки дальше использовать, т.к. пользовательские машины есть как под W2000, так и под W9ХХ.)

266
28 октября 2003 года
mhaturov
901 / / 23.10.2003
GetVersion заработала, но это не совсем то. Нужно определить версию, в смысле, это Win2000, Win 98, или Win 95. Блин, не помню, как это делать, а MSDN нет.:{
266
28 октября 2003 года
mhaturov
901 / / 23.10.2003
Цитата:
Originally posted by mhaturov
GetVersion заработала, но это не совсем то. Нужно определить версию, в смысле, это Win2000, Win 98, или Win 95. Блин, не помню, как это делать, а MSDN нет.:{



ВСПОМНИЛ!!! Версия Виндов не нужна!!! Чего-то я притормозил. Остаётся только вопрос по определению ODBC

266
29 октября 2003 года
mhaturov
901 / / 23.10.2003
Цитата:
Originally posted by mhaturov


ВСПОМНИЛ!!! Версия Виндов не нужна!!! Чего-то я притормозил. Остаётся только вопрос по определению ODBC



Всё. Задача решена. Вопрос отпал.:)

266
30 октября 2003 года
mhaturov
901 / / 23.10.2003
Цитата:
Originally posted by mhaturov


Всё. Задача решена. Вопрос отпал.:)



Мой вариант процедуры для чтения имён ODBC из ODBC.INI

Public Function CngODBCNmes(ByVal Separat As String) As String
'МАХ ищет имена ODBC в файла ODBC.INI и возвращает в виде строки (получает на вход разделитель)
Dim Fso As Object 'МАХ ссылка на объект библиотеки рабоы с файлами
Dim ODBC_INI_FILE As File 'МАХ ссылка на файл ODBC.INI
Dim FlrName As String 'МАХ хранит имя папки
Dim ResultString As String 'МАХ хранит результирующую строку имён ODBC
Dim Ts As TextStream 'МАХ сслка на поток данных из файла
Dim I As Long 'МАХ счётчик циклов
Dim BoolIn As Boolean

Const FilNam = "ODBC.INI" 'МАХ хранит тимя файла ODBC.INI

Set Fso = CreateObject("Scripting.FileSystemObject")

CngODBCNmes = vbNullString

'МАХ ищем путь к файлу ODBC.INI
'МАХ ищем путь к папке c Windows
FlrName = Mid$(Environ(21), Len("SystemRoot=") + 1, Len(Environ(21)))

'МАХ в этой папке находим файл ODBC.INI и открываем его на чтение
ResultString = vbNullString
Set ODBC_INI_FILE = Fso.GetFile(FlrName & "\" & FilNam) 'МАХ открываем файл (получаем его)
Set Ts = ODBC_INI_FILE.OpenAsTextStream(ForReading)
ResultString = Ts.ReadAll
Ts.Close

BoolIn = False

If ResultString <> vbNullString Then
For I = 1 To Len(ResultString)
If BoolIn Then
If Mid$(ResultString, I, 1) = "]" Then
CngODBCNmes = CngODBCNmes & Separat
BoolIn = False
Else
CngODBCNmes = CngODBCNmes & Mid$(ResultString, I, 1)
End If
End If
If Mid$(ResultString, I, 1) = "[" Then
BoolIn = True
End If
Next
End If

'МАХ отсекаю последний разделитель
CngODBCNmes = Mid$(CngODBCNmes, 1, Len(CngODBCNmes) - Len(Separat))
End Function

266
14 ноября 2003 года
mhaturov
901 / / 23.10.2003
Цитата:
Originally posted by mhaturov


Мой вариант процедуры для чтения имён ODBC из ODBC.INI

Public Function CngODBCNmes(ByVal Separat As String) As String
'МАХ ищет имена ODBC в файла ODBC.INI и возвращает в виде строки (получает на вход разделитель)
Dim Fso As Object 'МАХ ссылка на объект библиотеки рабоы с файлами
Dim ODBC_INI_FILE As File 'МАХ ссылка на файл ODBC.INI
Dim FlrName As String 'МАХ хранит имя папки
Dim ResultString As String 'МАХ хранит результирующую строку имён ODBC
Dim Ts As TextStream 'МАХ сслка на поток данных из файла
Dim I As Long 'МАХ счётчик циклов
Dim BoolIn As Boolean

Const FilNam = "ODBC.INI" 'МАХ хранит тимя файла ODBC.INI

Set Fso = CreateObject("Scripting.FileSystemObject")

CngODBCNmes = vbNullString

'МАХ ищем путь к файлу ODBC.INI
'МАХ ищем путь к папке c Windows
FlrName = Mid$(Environ(21), Len("SystemRoot=") + 1, Len(Environ(21)))

'МАХ в этой папке находим файл ODBC.INI и открываем его на чтение
ResultString = vbNullString
Set ODBC_INI_FILE = Fso.GetFile(FlrName & "\" & FilNam) 'МАХ открываем файл (получаем его)
Set Ts = ODBC_INI_FILE.OpenAsTextStream(ForReading)
ResultString = Ts.ReadAll
Ts.Close

BoolIn = False

If ResultString <> vbNullString Then
For I = 1 To Len(ResultString)
If BoolIn Then
If Mid$(ResultString, I, 1) = "]" Then
CngODBCNmes = CngODBCNmes & Separat
BoolIn = False
Else
CngODBCNmes = CngODBCNmes & Mid$(ResultString, I, 1)
End If
End If
If Mid$(ResultString, I, 1) = "[" Then
BoolIn = True
End If
Next
End If

'МАХ отсекаю последний разделитель
CngODBCNmes = Mid$(CngODBCNmes, 1, Len(CngODBCNmes) - Len(Separat))
End Function



Признаю свою ошибку - для поределения имён ключей INI-файла проще воспользоваться GetProfileSectionNames, если я правильно помню ;)

266
24 марта 2004 года
mhaturov
901 / / 23.10.2003
Цитата:
Originally posted by mhaturov


Признаю свою ошибку - для поределения имён ключей INI-файла проще воспользоваться GetProfileSectionNames, если я правильно помню ;)


Блин, вот это прикол!
Значит так:
1. В проекте "кликаем" правой кнопкой в броузере проекта.
2. Выбираем Add Form
3. Выбираем в качестве формы ODBC Log In.
И... всё!
Если нужно выкинуть лишнее, или использовать получение списка ODBC в другом месте - просто достаточно вырезать сгенерированный код и вставить туда, где надо!!! Среда всё делает сама. Плюс, генерируемый ею код довольно оптимален.:D :D :D
А я-то мучался!:D :D :D

Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог