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

Вниз

SQL + функция Format   Найти похожие ветки 

 
reticon ©   (2004-08-03 18:35) [0]

Есть запрос, отформатированный по разному с помощью ф-ции Format:

1. Query4.SQL.Add(Format("INSERT INTO iplan_tree VALUES (%d, 0, ""192.168.0.4"")", [4]));

2. Query4.SQL.Add(Format("INSERT INTO iplan_tree VALUES (%d, 0, %s)", [4, "192.168.0.104"]));

Кто-нибудь может мне объяснить, почему первый Query4.SQL.Add выполняется нормально, без ошибок, а второй ну никак не хочет работать и выдает ошибку (SQL Error: ERROR: parser: parse error at or near ".0" at character 52)?

Не пойму я что-то, в чем проблема?


 
Johnmen ©   (2004-08-03 23:42) [1]

Так делается же макроподстановка строкового ЗНАЧЕНИЯ.
Надо

Query4.SQL.Add(Format("INSERT INTO iplan_tree VALUES (%d, 0, %s)", [4, """192.168.0.104"""]));

или

Query4.SQL.Add(Format("INSERT INTO iplan_tree VALUES (%d, 0, %s)", [4, ""192.168.0.104""]));


 
reticon ©   (2004-08-04 10:35) [2]

делаю так:


...
addres := ComboBox1.Text;
date1 := DateTimePicker1.Date;
...
Query4.Close;
Query4.SQL.Clear;
Query4.SQL.Add(Format("SELECT * FROM stats WHERE stats.resource_id = (SELECT resource_id FROM iplan_tree WHERE address = %s) and date = %s", [ComboBox1.Text, DateTimePicker1.Date]));
...


та же фигня...


 
Соловьев ©   (2004-08-04 10:36) [3]


> Query4.Close;
> Query4.SQL.Clear;
> Query4.SQL.Add(Format("SELECT * FROM stats WHERE stats.resource_id
> = (SELECT resource_id FROM iplan_tree WHERE address = %s)
> and date = %s", [ComboBox1.Text, DateTimePicker1.Date]));

используй параметры


 
Соловьев ©   (2004-08-04 10:46) [4]


> date = %s", [ComboBox1.Text, DateTimePicker1.Date]));

или приводи типы. DateToStr(DateTimePicker1.Date)


 
Плохиш ©   (2004-08-04 10:52) [5]

>reticon ©   (03.08.04 18:35)

Количество апострофов ни на какие мысли не наводит?

QuotedStr


 
reticon ©   (2004-08-04 11:55) [6]

Это все понятно... но немного не то.

вот это:

ZQuery4.SQL.Add(Format("SELECT * FROM public.stats WHERE public.stats.resource_id = (SELECT resource_id FROM public.iplan_tree WHERE address = %s) and count = %d", ["""192.168.0.155""", 5977]));

работает, только что проверил.

А как сделать его ДИНАМИЧЕСКИМ?


 
Соловьев ©   (2004-08-04 11:57) [7]


> А как сделать его ДИНАМИЧЕСКИМ?

т.е. парамметры? TQuery.Params+F1
или что ты имеешь ввиду под динамическим?


 
reticon ©   (2004-08-04 12:22) [8]

ну да, параметрический запрос, если это будет работать...


 
reticon ©   (2004-08-04 13:09) [9]

все, спасибо, разобрался..



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

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

Наверх




Память: 0.48 MB
Время: 0.023 c
1-1092385796
starik30
2004-08-13 12:29
2004.08.29
Многопоточность + FIBPlus


3-1091694318
Misha Uskov
2004-08-05 12:25
2004.08.29
проблемы с серверным курсором в ADO


1-1092236976
appendix
2004-08-11 19:09
2004.08.29
в двоичном виде


14-1092198512
stas_x
2004-08-11 08:28
2004.08.29
Патент на ПО


1-1092570049
jack128
2004-08-15 15:40
2004.08.29
Сохранение/загрузка Persistent a в поток