| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > Delphi: Базы данных и репортинг > Парамметрический SQL-запрос |
| Автор: Dolphinchik 19.12.2006, 08:36 | ||
| Имеется переменная типа string, которая представляет собой названия таблиц через запятую, Нам необходимо эту переменную, как параметр, поместить в SQL-запрос после from. Я сделала это следующим образом:
Вылетает ошибка, что тип данных поля "a" неизвестен, все парамметры запроса прописанны..да и вообще "a" - не поле..Конец рабочего дня, не понимаю где я могла допустить ошибку, помогите разобраться BDE, FoxPro. |
| Автор: Savek 19.12.2006, 09:01 |
| 1. Значение параметрам присваивай ПОСЛЕ того как установлено подключение к базе И присвоен текст запроса 2. Query1.ExecSQL; это лишнее, надо либо Open либо Active:=true |
| Автор: Rodman 19.12.2006, 13:16 | ||
|
| Автор: Savek 19.12.2006, 14:30 |
| Rodman, ExecSQL не вернет ни одной строки |
| Автор: Rodman 19.12.2006, 14:32 | ||
согласен... пропустил...
|
| Автор: Rodman 19.12.2006, 16:13 | ||
|
| Автор: Savek 19.12.2006, 16:58 | ||
От нечего делать поправлю немного
Кстати где автор? Для кого мы здесь стараемся? |
| Автор: Rodman 19.12.2006, 17:01 |
| Savek, что это такое??? (QuotedStr) - никогда не юзал... Но у меня и без этого работает... |
| Автор: Vas 19.12.2006, 20:05 |
| Rodman, QuotedStr заключает строку переданную параметром в эту функцию в одинарные кавычки, очень полезная функция. Да и будет работать если в Edit'ах числовые значения вводятся, а если строки то наврядли. |
| Автор: Rodman 19.12.2006, 23:08 |
| Vas, cенкс... |
| Автор: Savek 20.12.2006, 09:33 |
| Сначала я подумал что у нее поля строковые, но сейчас, глядя названия не уверен... В последней поправке могу быть и не прав |
| Автор: Vas 20.12.2006, 09:46 | ||
Из текста Dolphinchik:
параметр передается как строка, значит поля вероятнее всего строковые. |
| Автор: Mephisto 20.12.2006, 10:01 |
На сколько я знаю Delphi не разрешает помещать название таблиц как параметр. |
| Автор: Rodman 20.12.2006, 11:48 |
| Mephisto, в данном случае это не параметр... строка запроса формируется и все... |
| Автор: Mephisto 20.12.2006, 13:17 | ||
Я заметил. Добавлено @ 13:18 Dolphinchik, а в каком месте ошибка? |
| Автор: Dolphinchik 27.12.2006, 07:10 |
| добре, я автор, болела, вникаю заново. поля строковые. параметры убрала...делаю так: Query1.SQL.Add('select * from '+strok_s); Query1.SQL.Add('where INDFROM='+Edit2.Text); Query1.SQL.Add('and SER='+Edit3.Text); Query1.SQL.Add('and NUM='+Edit4.Text); Query1.Open; Добавлено @ 07:16 выдаёт ошибку... искл класса EDBEngineError Invalid use of keyword. Token: where Line number: 3. |
| Автор: Mephisto 27.12.2006, 10:05 | ||
| Dolphinchik, пробел перед where поставь! Добавлено @ 10:06
|
| Автор: Savek 29.12.2006, 17:56 | ||
Не спасет, это же не строка, а список Скорее всего неудачно выбраны имена полей, например NUM - это может быть служебное слово сервера БД. Попробуй заключить имена полей в квадратные скобки:
|
| Автор: Mephisto 3.1.2007, 09:49 |
| Savek, ты прав. Я провтыкал. |