Создание 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
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д