Создание DBF из Vb, не получается создать NUMERIC
Формулировка задачи:
Здрасти вам!
Ребяты помогите решить проблемку как из Vb создать DBF (желательно с помощью ADO)
Для затравочки:
Проблема вот в чем - текстовые(CHAR), создаються нормально, а с NUMERIC - возникают проблемки - упорно создает NUMERIC(20,5)
Может я че не так делаю?
P.S. MDAC - установил от 2,5 до 2,7
В MSDN - по этому вопросу ответа не нашел
Заранее - ответившим большущее спасиб!!!
ICQ 152071313
Решение задачи: «Создание DBF из Vb, не получается создать NUMERIC»
textual
Листинг программы
' Создание(Пересоздание) таблицы во внешнем источнике данных (FreeTable Directory)
' и возвращение в функции cnn ADODB к этой базе
Public Function CreateFreeTable( _
ByVal TblName As String, _
Optional ByRef DbPath As String = '', _
Optional ByRef strConn As String = '', _
Optional ByRef strSQL As String = 'тра-та-та') As Object
' TblName - имя таблицы ( файла ) в FreeTable Directory,
' DbPath - FreeTable Directory ; если пусто то из Environ$('TEMP'),
'
' strConn - строка связи с базой данных
' если пусто ,то 'Provider=Microsoft.Jet.OLEDB.4.0;' & _
'Data Source=' & DbPath & ';Extended Properties=DBASE IV;'
' для этого провайдера
' - созданная таблица понимается foxpro2.6 Dos
' - задаваемые NUMERIC(x,y) понимаются всегда как N(20,5) при любых x,y
' если задано MEMO, то при открытии таблицы в foxpro2.6 выдается запрос о
' преобразовании MEMO поля из FOXPLUS формата
' - в запросе необязательно указывать путь к каталогу с создаваемой TblName
' - обязательно имя создаваемой таблицы должно отличаться от уже существующей
' в указанном каталоге - поэтому при совпадении данная функция прежде удаляет
' уже существующую
'
' для провайдера 'DSN=Таблицы Visual FoxPro;UID=;SourceDB=' & DbPath & _
' ';SourceType=DBF;Exclusive=No;BackgroundFetch=Yes;Collate=Machine;' & _
' 'Null=No;Deleted=Yes;'
' эквивалентного 'Provider=MSDASQL.1;Extended Properties=''DSN=Таблицы Visual FoxPro;' & _
' 'UID=;PWD=;SourceType=DBF;Exclusive=No;BackgroundFetch=Yes;Collate=Machine;' & _
' 'Null=No;Deleted=Yes;SourceDB=' & DbPath & ';'''
' - созданная таблица не понимается foxpro2.6 Dos - только visual foxpro
' - файл с таблицей может находиться в каталоге, отличном от DbPath
' - в запросе обязательно указывать путь к каталогу с создаваемой TblName 'Create table <путь>TblName ...'
' - задаваемые NUM(x,y) понимаются всегда как N(x+2,y); вообще распознавание поля
' происходит по первой букве ( DEC(11,2) поймется как Date )
' - необязательно чтобы имя создаваемой таблицы отличалось от уже существующей
' в указанном каталоге - при совпадении она перезапишется ( даже если бы здесь не было
' предварительного удаления )
'
' strSQL - запрос создания таблицы Обязательно д.б., что-то вроде
' 'CREATE TABLE tbl1 (N1 NUMERIC(6,2), C1 char(10), M1 MEMO, D1 DATE)'
Dim Cnn As ADODB.Connection, FullPath As String
Set CreateFreeTable = Nothing
On Error GoTo Err_
If DbPath = '' Then ' или Environ$('TEMP')+Аpplication.ActiveWorkbook.Name
DbPath = Environ$('TEMP') ' + ' ' + GenRndStr(8) + '.mdb' ' nyGetTempFileName
End If
FullPath = DbPath & ' ' & TblName
If Dir(FullPath) <> '' Then Kill FullPath
Set Cnn = New ADODB.Connection
If strConn = '' Then strConn = 'Provider=Microsoft.Jet.OLEDB.4.0;' & _
'Data Source=' & DbPath & ';Extended Properties=DBASE IV;'
Cnn.ConnectionString = strConn
' cnn.Properties('Extended Properties').Value = 'DBASE IV'
Cnn.Open
Cnn.Execute strSQL