Текущий архив: 2003.11.17;
Скачать: CL | DM;
ВнизКак обработать SQL запрос? Найти похожие ветки
← →
Kinder (2003-10-22 15:47) [0]Вот я написал
with moduledata.Query do begin
SQL.Text :=
"SELECT fio FROM people WHERE id="+table.SelectedField.Text;
ExecSQL;
Close;
end;
Как теперь взять массив со значениями fio?
← →
Reindeer Moss Eater (2003-10-22 15:50) [1]with moduledata.Query do begin
SQL.Text :=
"SELECT fio FROM people WHERE id="+table.SelectedField.Text;
open;
while not Eof do
begin
...
Next;
end;
Close;
end;
← →
bushmen (2003-10-22 15:51) [2]with moduledata.Query do begin
Close;
Clear;
SQL.ADD :=
("SELECT fio FROM people WHERE id="+table.SelectedField.Text);
Open;
end;
А потом, смотря куда тебе результат нужен.
← →
Kinder (2003-10-22 17:53) [3]Ну скажем в TstringList загнать значения fio из базы. Как?
← →
Sandman25 (2003-10-22 18:09) [4]with Query do
while Eof do
StringList.Add(FieldByName("fio").AsString;
← →
Kinder (2003-10-22 18:54) [5]Странно. Но пишет
Query: Field "fio" not found.
← →
Sandman25 (2003-10-22 18:55) [6]Тогда попробуйте Fields[0].AsString
← →
Vlad (2003-10-22 19:02) [7]>Sandman25 © (22.10.03 18:09) [4]
поправочка - while not Eof
← →
Kinder (2003-10-22 19:12) [8]Теперь работает, но цикл не останавливается.
procedure TForm1.tableCellClick(Column: TColumn);
begin
with moduledata.Query do begin
Close;
SQL.Text :="SELECT * FROM people WHERE id="+table.SelectedField.Text;
Open;
while not eof do
ShowMessage(Fields[1].AsString);
Close;
end;
end;
Всё время метка выводится с одним и тем же значением. Тут цикл должен пройти один раз и закончится вроде. А он повторяется бесконечно.
← →
Vlad (2003-10-22 19:16) [9]
while not eof do
begin
ShowMessage(Fields[1].AsString);
Next;
end;
← →
Kinder (2003-10-22 19:20) [10]Сделал
with moduledata.Query do begin
Close;
SQL.Clear;
SQL.Text :="SELECT * FROM people WHERE id="+table.SelectedField.Text;
Open;
while not eof do
begin
ShowMessage(Fields[1].AsString);
next;
end;
Close;
end;
Теперь пишет ошибку
Either BOF or EOF is True, or the current record has been deleted. Requested operation requires a current record.
← →
Vlad (2003-10-22 19:27) [11]Нет данных соответствующих SQL запросу.
Другими словами Query пуст.
← →
Kinder (2003-10-22 19:32) [12]И чего делать? Вроде же всё корректно.
← →
Fay (2003-10-22 19:33) [13]апдатесы ставил для D5?
← →
Kinder (2003-10-22 19:39) [14]Ставил. А причем тут это?
← →
Vlad (2003-10-22 19:41) [15]перед open напиши showmessage(sql.text) и убедись что запрос сформировался именно так как ты хочешь.
← →
MsGuns (2003-10-22 20:15) [16]Оформляй код как для себя, а не для врага (в т.ч. отступы):
procedure ....
begin
Form1.MyListBox.Clear;
with moduledata.Query do
begin
if Active then Close;
SQL.Clear;
SQL.Add("SELECT FIO, NAME");
SQL.Add(" FROM people");
SQL.Add(" WHERE id="+table.SelectedField.Text);
try
Prepare
Open;
except
exit;
end;
if RecordCount=0 then exit;
while not eof do
begin
Form1.MyListBox.Add(FieldByName("FIO").AsString)
// ShowMessage(Fields[1].AsString);
next;
end;
Close;
end;
end;
← →
MsGuns (2003-10-22 20:17) [17]Пардон, там в нескольких строчках нет концевиков ";"
Надеюсь, понятно в каких ;)
← →
Kinder (2003-10-22 23:13) [18]Спасибо :)
Но всё равно ошибка идёт.
Either BOF or EOF is True, or the current record has been deleted. Requested operation requires a current record.
← →
Anatoly Podgoretsky (2003-10-23 05:13) [19]Что поделаешь, ну нет записей
← →
NAlexey (2003-10-23 08:15) [20]Попробуй перед циклом вставить First:
First;
while not Eof do
begin
ShowMessage(Fields[1].AsString);
Next;
end;
← →
Johnmen (2003-10-23 09:10) [21]Обучение детей. On-line.
Грустно...
← →
Kinder (2003-10-23 18:39) [22]
Either BOF or EOF is True, or the current record has been deleted. Requested operation requires a current record.
First был вставлен. Всё равно ошибка.
← →
Sandman25 (2003-10-23 18:46) [23]В Before/AfterScroll что-то есть?
← →
Vlad (2003-10-23 18:50) [24]>Sandman25 © (23.10.03 18:46) [23]
А какая разница, если BOF=EOF значит набор данных пуст.
>Kinder (23.10.03 18:39) [22]
Попробуй, что вернет Query.IsEmpty, true или false ? (после Open)
← →
Sandman25 (2003-10-23 18:54) [25][24] Vlad © (23.10.03 18:50)
Может, там у него в BeforeScroll вызывается Edit. Тогда именно такая ошибка и будет вылазить.
← →
Kinder (2003-10-23 18:59) [26]2 Sandman25
А что такое Before/AfterScroll ?
← →
Vlad (2003-10-23 19:00) [27]>Sandman25 © (23.10.03 18:54) [25]
Вот так вот :)))
← →
Kinder (2003-10-23 19:02) [28]Query.IsEmpty -- false.
Т.е. один раз цикл срабатывает нормально, т.к. в запросе всего одно значение возвращается. А потом реально пусто, но почему цикл идет?
← →
Vlad (2003-10-23 19:02) [29]Kinder (23.10.03 18:59) [26]
Христа ради, развей мои сомнения.
Напиши строчку после OPen,
if Query.IsEmpty then Showmessage("папа у васи силен в математике");
И скажи нам было это сообщение или нет.
← →
Vlad (2003-10-23 19:03) [30]Kinder (23.10.03 19:02) [28]
Приведи еще раз код
← →
TohaNik (2003-10-23 19:10) [31]procedure TForm1.tableCellClick(Column: TColumn);
:))
← →
Kinder (2003-10-23 19:17) [32]Vlad
Да нету :)
procedure TForm1.tableCellClick(Column: TColumn);
begin
with moduledata.Query do begin
Close;
SQL.Clear;
SQL.Text :="SELECT * FROM people WHERE id="+table.SelectedField.Text;
Open;
{ if IsEmpty then Showmessage("папа у васи силен в математике");}
First;
while not eof do
begin
ShowMessage(Fields[1].AsString);
next;
end;
Close;
end;
end;
← →
Kinder (2003-10-23 19:27) [33]2TohaNik
Что смешного?
← →
sniknik (2003-10-23 21:44) [34]Fay (22.10.03 19:33) [13]
> апдатесы ставил для D5?
Kinder (22.10.03 19:39) [14]
> Ставил. А причем тут это?
без них именно эта ошибка на нормальных но пустых датасетах. и именно в D5.
Kinder (23.10.03 19:27) [33]
> 2TohaNik
> Что смешного?
перенеси код в
procedure TForm1.Button1Click(Sender: TObject);
лутше не стало?
← →
Sewer (2003-10-24 14:16) [35]А какое значение попадает в table.SelectedField.Text?
← →
Zacho (2003-10-24 14:21) [36]
> Sewer (24.10.03 14:16) [35]
А что такое "table.SelectedField" ?
← →
Плохиш_ (2003-10-24 14:29) [37]>TohaNik © (23.10.03 19:10) [31]
:-)))))))
>Kinder не пора ли книжки начать читать, да и мозги пора бы включить.
← →
Vlad (2003-10-24 14:31) [38]Zacho © (24.10.03 14:21) [36]
Это у него грид так называется
← →
Mike Kouzmine (2003-10-24 14:35) [39]First;
while not eof do
begin
ShowMessage(Fields[0].AsString);
next;
end;
Close;
end;
end;
Мне кажется надо 0, поле то одно.
← →
Плохиш_ (2003-10-24 14:40) [40]
> Vlad © (24.10.03 14:31) [38]
> Zacho © (24.10.03 14:21) [36]
> Это у него грид так называется
Ну дык :-)
Интересно, сколько надо времени, чтобы понять, что бывает с данными в гриде после закрытия набора данных.
Подождём ;-)
Страницы: 1 2 вся ветка
Текущий архив: 2003.11.17;
Скачать: CL | DM;
Память: 0.52 MB
Время: 0.01 c