Создание 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

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

11   голосов , оценка 4 из 5
Похожие ответы