Модераторы: Poseidon, Snowy, bems, MetalFan
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Опять TQuery. 
:(
    Опции темы
NiJazz
  Дата 5.4.2004, 07:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Jazz coder
****


Профиль
Группа: Экс. модератор
Сообщений: 2286
Регистрация: 10.8.2003
Где: Москва

Репутация: 6
Всего: 23



Код
with dmCrmMain.qrPhones do
 begin
   SQL.Clear;
   SQL.Add('select * from Phones where OrgName = "');
   SQL.Add(edOrgName.Text + '"');
   Open;
   First;
   while not Eof do begin
     cbPhones.Items.Add(FieldByName('Phone').AsString);
     Next;
   end;
   cbPhones.ItemIndex := 0;
 end;

Выдаётся ошибка: "Table is not indexed". Таблица Paradox 7. В Database Desctop'e я точно таблицу Phones проиндексировал. В чём может быть дело?
PM MAIL   Вверх
NiJazz
Дата 5.4.2004, 08:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Jazz coder
****


Профиль
Группа: Экс. модератор
Сообщений: 2286
Регистрация: 10.8.2003
Где: Москва

Репутация: 6
Всего: 23



Я добавил поле Id в таблицу типа +- (автоинкремент) как первичный ключ. Теперь ошибки нет. Только зачем это надо было? Я не силён в БД. sad.gif

Коли это вопрос почти решён, то теперь скажу о другой поблеме...
Есть опять Tquery и в нём выполняется тот же самый запрос:
Код
with dmCrmMain.qrPhones do
begin
  SQL.Clear;
  SQL.Add('select * from Phones where OrgName = "');
  SQL.Add(edOrgName.Text + '"');
  Open;
  First;
  while not Eof do begin
    cbPhones.Items.Add(FieldByName('Phone').AsString);
    Next;
  end;
  cbPhones.ItemIndex := 0;
end;

Но теперь проблема заключается том, что получаются пустые таблицы. Проверял: eof не работает, а RecordCount = 0. В чём может быть дело?



Добавлено @ 08:38
Забыл сказать, что в таблице точно есть записи. Это проверял, делая запрос ручками.
PM MAIL   Вверх
NiJazz
Дата 5.4.2004, 09:26 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Jazz coder
****


Профиль
Группа: Экс. модератор
Сообщений: 2286
Регистрация: 10.8.2003
Где: Москва

Репутация: 6
Всего: 23



Код
with dmCrmMain.qrPhones do
 begin
   SQL.Clear;
   SQL.Add('select * from Phones where OrgName = "'+edOrgName.Text+'"');
   Open;
   First;
   while not Eof do begin
     cbPhones.Items.Add(FieldByName('Phone').AsString);
     Next;
   end;
   cbPhones.ItemIndex := 0;
 end;

Если написать весь запрос в одну строку, то всё работает. Странно...
Какой-то монолог получился. smile.gif
PM MAIL   Вверх
Serggggg
Дата 5.4.2004, 10:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 136
Регистрация: 12.12.2003
Где: Донецк, Украина

Репутация: нет
Всего: нет



Попробуй выловить 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;
--------------------
C уважением, Serggggg.
PM MAIL ICQ   Вверх
Akella
Дата 5.4.2004, 11:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Творец
****


Профиль
Группа: Модератор
Сообщений: 18485
Регистрация: 14.5.2003
Где: Корусант

Репутация: 36
Всего: 329



Попробуй использовать функцию 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')
PM MAIL   Вверх
p0s0l
Дата 5.4.2004, 12:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Г-н Посол
****


Профиль
Группа: Экс. модератор
Сообщений: 3668
Регистрация: 13.7.2003
Где: 58°38' с.ш. 4 9°41' в.д.

Репутация: 58
Всего: 112



Цитата
Если написать весь запрос в одну строку, то всё работает. Странно...

Еще бы.
Ведь ты не пишешь так:
Select * From Table1 Where id > 123
456
если тебе надо получить записи с id > 123456 ?

И WHERE ты не разбиваешь на WHE RE ???

В данном случае при посылке запроса получилось так:
select * from Phones where OrgName = "_<имя организации>"
Т.е. после " вставлятся разделитель #13#10 - перевод строки и каретки...
Писал бы так:
Код
 SQL.Clear;
 SQL.Add('select * from Phones where OrgName = ');
 SQL.Add('"' + edOrgName.Text + '"');

И всё было бы ок...
Цитата
Какой-то монолог получился

Еще бы, сам за 1,5 часа всё решил. Ведь мы тут не реактивы...


--------------------
С уважением, г-н Посол.
PM   Вверх
NiJazz
Дата 5.4.2004, 17:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Jazz coder
****


Профиль
Группа: Экс. модератор
Сообщений: 2286
Регистрация: 10.8.2003
Где: Москва

Репутация: 6
Всего: 23



p0s0l
#13#10 - эти символы то же значат, что и chr(13) и chr(10)?
Цитата
Еще бы, сам за 1,5 часа всё решил. Ведь мы тут не реактивы...

smile.gif
PM MAIL   Вверх
x77
Дата 5.4.2004, 19:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Участник Клуба
Сообщений: 1255
Регистрация: 25.3.2002

Репутация: 19
Всего: 22



NiJazz, угу, то и значат smile.gif и со второй таблицей у тебя та же проблема.



--------------------
Я никогда не сопротивлялся искушению, поскольку узнал: что мне
не нравится, то меня не искушает.
© Джордж Бернард Шоу (Ирландия)
PM MAIL ICQ   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: Общие вопросы"
SnowyMetalFan
bemsPoseidon
Rrader

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Литературу по Дельфи обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • 90% ответов на свои вопросы можно найти в DRKB (Delphi Russian Knowledge Base) - крупнейшем в рунете сборнике материалов по Дельфи


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Snowy, MetalFan, bems, Poseidon, Rrader.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Delphi: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0538 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.