![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
SQL + функция Format [D6, PostgreSQL]
reticon © (2004-08-03 18:35:00)Есть запрос, отформатированный по разному с помощью ф-ции 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)?
Не пойму я что-то, в чем проблема?
reticon (2004-08-04 13:09:00) [1]все, спасибо, разобрался..
reticon (2004-08-04 12:22:00) [2]ну да, параметрический запрос, если это будет работать...
Соловьев (2004-08-04 11:57:00) [3]
> А как сделать его ДИНАМИЧЕСКИМ?
т.е. парамметры? TQuery.Params+F1
или что ты имеешь ввиду под динамическим?
reticon (2004-08-04 11:55:00) [4]Это все понятно... но немного не то.
вот это:
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 10:52:00) [5]>reticon © (03.08.04 18:35)
Количество апострофов ни на какие мысли не наводит?
QuotedStr
Соловьев (2004-08-04 10:46:00) [6]
> date = %s', [ComboBox1.Text, DateTimePicker1.Date]));
или приводи типы. DateToStr(DateTimePicker1.Date)
Соловьев (2004-08-04 10:36:00) [7]
> 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]));
используй параметры
reticon (2004-08-04 10:35:00) [8]делаю так:
...
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]));
...
та же фигня...
Johnmen (2004-08-03 23:42:00) [9]Так делается же макроподстановка строкового ЗНАЧЕНИЯ.
Надо
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"']));