Главная страница
    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]
> Это у него грид так называется


Ну дык :-)

Интересно, сколько надо времени, чтобы понять, что бывает с данными в гриде после закрытия набора данных.
Подождём ;-)


 
Vlad   (2003-10-24 14:47) [41]

что бывает с данными в гриде после закрытия набора данных.
Это к чему ?


 
panov   (2003-10-24 14:54) [42]

>Vlad © (24.10.03 14:47) [41]
Это к чему ?

Вот к этому -

begin
with moduledata.Query do begin
Close;
SQL.Clear;


 
Vlad   (2003-10-24 15:02) [43]

>panov © (24.10.03 14:54) [42]
С чего вы взяли, что moduledata.Query подключен к гриду table ?
Если это так, то чушь какая-то получается.


 
Kinder   (2003-10-24 17:30) [44]

см. дадалее

procedure TForm1.FIO1Click(Sender: TObject);
begin
with moduledata.Query do
begin
if Active then Close;
SQL.Clear;
SQL.Add("SELECT *");
SQL.Add(" FROM people");
SQL.Add(" WHERE id="+table.SelectedField.Text);
try
Open;
except
exit;
end;
if RecordCount=0 then exit;
First;
while not eof do
begin
ShowMessage(FieldByName("FIO").AsString);
next;
end;
Close;
end;
end;


 
Kinder   (2003-10-24 17:31) [45]

Сегодня 7 делфу заинсталю. Посмотрю.


 
Sandman25   (2003-10-24 17:31) [46]

В таблице есть поле FIO?


 
Kinder   (2003-10-24 23:33) [47]

есть конечно :)


 
Kinder   (2003-10-26 13:17) [48]

ну что там. что-нить решили? у меня пока ничего.


 
Kinder   (2003-10-27 17:23) [49]

где идеи?


 
Sandman25   (2003-10-27 17:26) [50]

Пройти пошагово, найти строку, на которой возникает ошибка. Если это
FieldByName... то заменить на Fields[номер].
Проверить Fields[номер].IsNull.


 
Kinder   (2003-10-27 19:16) [51]

Ошибка идет после Next сразу.


 
Sandman25   (2003-10-28 10:14) [52]

Получается бродовая ситуация - Eof говорит, что конца набора данных еще нет, а Next говорит, что он уже есть.
Поставьте патч для Вашей версии Delphi, смените компоненты доступа, смените версию Delphi.


 
Дуся   (2003-10-28 11:50) [53]

Блин, народ.. Забыли все..
Either BOF or EOF is True, or the current record has been deleted. Requested operation requires a current record

тут Апдейты ныжны не только дельфовые, но и АДОшные.. http://info.borland.com/devsupport/delphi/fixes/delphi501/database.html#ado


 
Tumcoat   (2003-10-29 01:56) [54]


> Дуся © (28.10.03 11:50) [53]
> Блин, народ.. Забыли все..
> тут Апдейты ныжны не только дельфовые, но и АДОшные.. http://info.borland.com/devsupport/delphi/fixes/delphi501/database.html#ado


О как всегда все решается легко и просто.
Кстати вот еще одна ссылка:
http://delphi.mtu-net.ru/zip/ado_patch.zip



Страницы: 1 2 вся ветка

Текущий архив: 2003.11.17;
Скачать: CL | DM;

Наверх




Память: 0.56 MB
Время: 0.009 c
1-56577
Abrakadabra
2003-11-06 00:03
2003.11.17
Сравнение файлов


4-56965
zagzag
2003-08-05 12:51
2003.11.17
Наложение цветов и прозрачность


14-56822
VictorT
2003-10-23 23:01
2003.11.17
У кого-нить сохранилась легендарная ветка про обнуление...


11-56549
васёк
2003-02-25 17:28
2003.11.17
C++Builder + KOL?


1-56686
TRyaSS
2003-11-06 15:21
2003.11.17
Как в Паскале вычислить корень 3 или 4 или n степени





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский