Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 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.011 c
1-56685
Olegas
2003-11-07 18:20
2003.11.17
ТАБЛИЦА В QREPORT E


11-56542
Эль
2003-02-10 18:56
2003.11.17
вопрос


7-56941
BASIS_UA
2003-09-08 18:39
2003.11.17
Использование чип привода в ACER T620 Series???


1-56652
Zn
2003-11-05 11:06
2003.11.17
Как сделать цикл по всем элементам формы.


1-56651
Cosinus
2003-11-05 11:54
2003.11.17
Вопрос по массивам данных





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский