26.04.2007, 12:43 | #1 |
Участник
|
Добрый день. Возникла проблема может кто поможет. Реализован экспорт данных в dbf файлс помощью automation.
Проблема в том что при описании структуры создаваемого файла неполучается установить количество знаков после запятой для полей типа decimal. dbfConnect Automation 'Microsoft ActiveX Data Objects 2.8 Library'.Connection dbfRecords Automation 'Microsoft ActiveX Data Objects 2.8 Library'.Recordset dbfConnect.Open('Provider=Microsoft.Jet.OLEDB.4.0;Data Source=' + path + ';Extended Properties=dBase IV;'+ 'Persist Security Info=FALSE;'); dbfConnect.Execute('CREATE TABLE '+FileName+'(ID VARCHAR(6),TYPE INT,DATA DATE,IBATCH VARCHAR(16),'+ 'INUMBER VARCHAR(16),VATA DECIMAL(12,2),VATB DECIMAL(12,2),IDISCOUNT DECIMAL(12,2),TOTAL NUMERIC(12,2),'+ 'DID Integer,CODE VARCHAR(12),DESCR VARCHAR(100),MANUF VARCHAR(100),COUNTRY VARCHAR(100),PBATCH VARCHAR(20),'+ 'PANALYSIS VARCHAR(12),VALID DATE,PRICE NUMERIC(12,2),DISCOUNT NUMERIC(12,2),VAT NUMERIC(12,0),'+ 'QNT NUMERIC(12,2),PRICEMAX NUMERIC(12,2),PRICEBAS NUMERIC(12,2),PRICERET NUMERIC(12,2)'+')'); или так читабельней: dbfConnect.Execute('CREATE TABLE '+FileName+'('+ 'ID'+' '+'VARCHAR(6),'+ 'TYPE'+' '+'DECIMAL(12,0)'+', '+ 'DATA'+' '+'DATE'+', '+ 'IBATCH'+' '+'VARCHAR(16)'+', '+ 'INUMBER'+' '+'VARCHAR(16)'+', '+ 'VATA'+' '+'DECIMAL(12,2)'+', '+ 'VATB'+' '+'DECIMAL( 12, 2)'+', '+ 'IDISCOUNT'+' '+'DECIMAL(12,2)'+', '+ 'TOTAL'+' '+'DECIMAL(12, 2)'+', '+ 'DID'+' '+'INT'+', '+ 'CODE'+' '+'VARCHAR(12)'+', '+ 'DESCR'+' '+'VARCHAR(100)'+', '+ 'MANUF'+' '+'VARCHAR(100)'+', '+ 'COUNTRY'+' '+'VARCHAR(100)'+', '+ 'PBATCH'+' '+'VARCHAR(20)'+', '+ 'PANALYSIS'+' '+'VARCHAR(12)'+', '+ 'VALID'+' '+'DATE'+', '+ 'PRICE'+' '+'DECIMAL(12,4)'+', '+ 'DISCOUNT'+' '+'DECIMAL(12,4)'+', '+ 'VAT'+' '+'DECIMAL(12,0)'+', '+ 'QNT'+' '+'DECIMAL(12,0)'+', '+ 'PRICEMAX'+' '+'DECIMAL(12,2)'+', '+ 'PRICEBAS'+' '+'DECIMAL(12,2)'+', '+ 'PRICERET'+' '+'DECIMAL(12,2)'+ ')'); (12,2) просто игнорируется, как впрочем и тип INT. при просмотре создаваемого файла все поля имеют тип numeric длинна 20 точность 5 (значение по умолчанию). Пробовал вместо decimal тавить сразу numeric, не помогает. В чем дело как исправить? 2й день сижу. |
|
26.04.2007, 13:02 | #2 |
Участник
|
Может не dBase IV драйвер надо а допустим фоксовский?
|
|
26.04.2007, 13:09 | #3 |
Участник
|
Да думал FoxPro только вот ошибка для меня непонятная тогда вылетает...
Could not find installable ISAM. |
|
02.05.2007, 12:29 | #4 |
Участник
|
Ну ошибка понятно непринсталлирован. И все таки в чем проблема может быть? Вроде бы делал где то это раньше не в навижене, все работало.
|
|