Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2003.04.14;
Скачать: CL | DM;

Вниз

Как создать запросом таблицу DBF    Найти похожие ветки 

 
Sergey_   (2003-03-26 09:35) [0]

Уважаемые ALL, помогите создать командой SQL таблицу дбф с полями типов numeric , float
пишу AdoCommand.CommandText := " CREATE TABLE "+tabname+" ( DATETI CHAR(19), C_ANNO NUMERIC(12,2) )";
получаю : "Ошибка синтаксиса в инструкции CREATE TABLE "

если пишу " CREATE TABLE "+tabname+" ( DATETI CHAR(19), C_ANNO CHAR(12) )" всё хорошо


 
shoo   (2003-03-26 09:44) [1]

Обязательно запросом нужно?
А испытанным способом не устраивает?

var mydbf: TTable;
...
with mydbf do
begin
Close;
DatabaseName := "C:\MyPath";
TableName := tabname;
TableType := ttFoxPro; // или другой какой-нибудь
with FieldDefs do
begin
Clear;
Add("dateti", fString, 19, False);
Add("c_anno", ftFloat, 0, False);
end;
CreateTable;
Free;
end;


 
Sergey_   (2003-03-26 09:57) [2]

Спасибо, просто я привык на MS SQL всё запросами делать
а тут дбф , но почему команда не работает ?


 
Соловьев ©   (2003-03-26 10:00) [3]

Через что выполняешь запрос?


 
Соловьев ©   (2003-03-26 10:09) [4]

Недасмотрел что ADO:
AdoCommand.CommandText := " CREATE TABLE "+tabname+" ( DATETI CHAR(19), C_ANNO NUMERIC [12,2] )";


 
Sergey_   (2003-03-26 10:19) [5]

Не и так [] не хочет а где ты квадратные скобки в документации увидел ?


 
Соловьев ©   (2003-03-26 10:22) [6]

LocalSQL:
NUMERIC[(s[, p])] Floating point numbers. Scale and precision are each optional. If precision is specified, scale must also be.
FLOAT(s, p) Floating point numbers. Scale and precision are each optional. If precision is specified, scale must also be.


 
Соловьев ©   (2003-03-26 10:25) [7]

[] - это необязательный параметр... прогнал я ....
Наверное надо:
AdoCommand.CommandText := " CREATE TABLE "+tabname+" ( DATETI CHAR(19), C_ANNO Float(12,2) )";


 
Sergey_   (2003-03-26 10:36) [8]

та же фигня может другой драйвер использовать ? я использую
MS dBase driver


 
sniknik ©   (2003-03-26 11:56) [9]

скорее всего пройдет
AdoCommand.CommandText := " CREATE TABLE "+tabname+" ( DATETI CHAR(19), C_ANNO Float)";

с другими все то же самое будет.


 
sniknik ©   (2003-03-26 11:58) [10]

Кроме может быть драйвера фокса. но у него свои заморочки, покруче.


 
Sergey_   (2003-03-26 15:51) [11]

2(sniknik) просто float получилось а если я хочу ещё целые значения хранить numeric(5,0) не проходит


 
sniknik ©   (2003-03-26 17:23) [12]

хотеть не вредно, но прогресс не остановиш :о))

у jet-а -
Provider=Microsoft.Jet.OLEDB.4.0;Data Source=D:\;Extended Properties=dBase IV;Persist Security Info=False
на этот случай оставлено, DECIMAL
то есть сработает так
CREATE TABLE tabname ( DATETI CHAR(19), C_ANNO DECIMAL(5,0))
но в большинстве случаев все одно сделает поле размерностью 20,5 (для dBase III) 19,5 (насколько помню)
а все остальные не поддерживает (иногда проходят 16,2 и чегото) еще, но это несушественно. считай что нет.

(проще всего найди модуль, makedbf.pas простенький только для создания dbf-ок и без мемо (можно другой), и будеш иметь такую возможность, с готовыми dbf-ами работать будет любой драйвер)



Страницы: 1 вся ветка

Текущий архив: 2003.04.14;
Скачать: CL | DM;

Наверх




Память: 0.49 MB
Время: 0.02 c
14-44338
Che
2003-03-31 00:27
2003.04.14
Глупый вопрос


1-44241
BALU1111
2003-04-01 10:43
2003.04.14
Курсор в TextEdit


14-44341
sid
2003-03-30 23:13
2003.04.14
*.EXE Как зделать в делфи 6 ехе фаил :))>


14-44345
Думкин
2003-03-28 14:44
2003.04.14
А что ты сделал для...?


1-44142
Spartak
2003-04-03 14:09
2003.04.14
Срочно ! как сделать messagebox в несколько строк ?