Форумы HiProg.com - MS ACCESS, VBA, VB

 

Ответить на сообщение

Вернуться к теме

Вы отвечаете на сообщение:

ник: akkorn
Всем прифф :)
Люди, программеры уважаемые, подскажите. Я в ступоре..

Есть некая таблица в БД Access. В таблице есть поле. У поля есть тип.
Если подключиться DAO, то тип поля Single будет = 6 (dbSingle)
Если подключиться ADODB, то тип поля 6 будет уже значиться как adCurrency. В то время как в АДО есть тип поля adSingle и равен он 4!

В связи с этим вопрос: Как подключаясь при помощи ДАО и АДО в обоих случаях корректно определять тип поля в таблице? Ведь таких несоответствий довольно много..

Код таков:
Private Sub Command1_Click()
Dim PthToDB As String
PthToDB = App.Path & "\db_Temp.db"

Dim DbE As DAO.DBEngine, DbS As DAO.Database
Set DbE = New DAO.DBEngine

'удаляем старую, если есть
On Error Resume Next
Call Kill(PthToDB)
On Error GoTo 0

'создаем новую базу заново
Set DbS = DbE.CreateDatabase(PthToDB, dbLangGeneral, dbVersion40)

'переменные для работы
Dim tdf As DAO.TableDef
Set tdf = New DAO.TableDef
Set tdf = DbS.CreateTableDef("Table_1")

Dim fld As DAO.Field
Set fld = New DAO.Field

With tdf
    'надо создать поля..
    Set fld = .CreateField("Field_1", dbSingle)
    .Fields.Append fld

    'добавл такую таблицу в общ коллекцию
    DbS.TableDefs.Append tdf
    DbS.TableDefs.Refresh
End With

'вернемся к полю
Set fld = DbS("Table_1").Fields("Field_1")

'теперь проверим поле на тип
Dim i As String
i = "fld.Type is [DAO.dbSingle]?    " & vbTab & CBool(fld.Type = DAO.dbSingle) & vbCrLf & _
    "fld.Type is [ADODB.adSingle]?" & vbTab & CBool(fld.Type = ADODB.adSingle)
MsgBox i

'схлопываем все
Set fld = Nothing
Set tdf = Nothing
DbS.Close
Set DbS = Nothing
Set DbE = Nothing
End Sub


Ваше имя:

Пароль:

Цитировать: [quote][/quote] Код: [code][/code]
Жирный: [b][/b] Наклонный: [i][/i]
URL: [url][/url] 

Сообщение:

 Размер файла не более 50 Кбт. Большие файлы можно размещать на www.slil.ru

Прикрепить:

 

Для вставки смайлов в текст щелкните по значку.