| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > Delphi: Общие вопросы > Опять TQuery. |
| Автор: NiJazz 5.4.2004, 07:48 | ||
Выдаётся ошибка: "Table is not indexed". Таблица Paradox 7. В Database Desctop'e я точно таблицу Phones проиндексировал. В чём может быть дело? |
| Автор: NiJazz 5.4.2004, 08:37 | ||
| Я добавил поле Id в таблицу типа +- (автоинкремент) как первичный ключ. Теперь ошибки нет. Только зачем это надо было? Я не силён в БД. Коли это вопрос почти решён, то теперь скажу о другой поблеме... Есть опять Tquery и в нём выполняется тот же самый запрос:
Но теперь проблема заключается том, что получаются пустые таблицы. Проверял: eof не работает, а RecordCount = 0. В чём может быть дело? Добавлено @ 08:38 Забыл сказать, что в таблице точно есть записи. Это проверял, делая запрос ручками. |
| Автор: NiJazz 5.4.2004, 09:26 | ||
Если написать весь запрос в одну строку, то всё работает. Странно... Какой-то монолог получился. |
| Автор: Serggggg 5.4.2004, 10:02 |
| Попробуй выловить ShowMessage'м сам текст запроса Query1.SQL.Text. Возможно, в синтаксисе есть ошибка. Кстати, чтобы не путаться с кавычками, можно при построении строки в запросе использовать #39 - это CHAR-код одинарной кавычки. Можешь также попробовать задать выборку через цикл For: Query1.First; For i:=0 to Query1.RecordCount-1 do begin cbPhones.Items.Add(FieldByName('Phone').AsString); Query1.Next; end; |
| Автор: Akella 5.4.2004, 11:01 |
| Попробуй использовать функцию QuotedStr или QuotedString() вместо двойных кавычек. Эта функция сама все сделает, как надо, я ею всегда пользуюсь и никогда нет путаницы, особенног если много параметров. SQL.ADD('SELECT * FROM Phones Where OrgName = '+QuotedStr(edOrgName.Text)); или используй Params QUERY1.Params[0]:=edOrgName.Text; или Query1.ParamByName('pOrg').AsString := edOrgName.Text SQL.ADD('SELECT * FROM Phones WHERE OrgName = :pOrg') |
| Автор: p0s0l 5.4.2004, 12:49 | ||||||
Еще бы. Ведь ты не пишешь так: Select * From Table1 Where id > 123 456 если тебе надо получить записи с id > 123456 ? И WHERE ты не разбиваешь на WHE RE ??? В данном случае при посылке запроса получилось так: select * from Phones where OrgName = "_<имя организации>" Т.е. после " вставлятся разделитель #13#10 - перевод строки и каретки... Писал бы так:
И всё было бы ок...
Еще бы, сам за 1,5 часа всё решил. Ведь мы тут не реактивы... |
| Автор: NiJazz 5.4.2004, 17:16 | ||
| p0s0l #13#10 - эти символы то же значат, что и chr(13) и chr(10)?
|
| Автор: x77 5.4.2004, 19:25 |
| NiJazz, угу, то и значат |