Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

SQL [D7, Paradox]


Pako ©   (2003-11-25 12:02:00) 

Не могу выполнить Open после выполнения ExecSQl
for i := 0 to BL.Count - 1 do
begin
DM.qrStudentListRX.GotoBookmark(Pointer(BL.Strings[i]));
l:=DM.qrStudentListRX.FieldValues["KodStudent"];
DM.qrStudentListRX.SQL.Clear;
DM.qrStudentListRX.Params.Add;
DM.qrStudentListRX.Params[0].Name:="n";
DM.qrStudentListRX.Params[0].DataType:=ftInteger;
DM.qrStudentListRX.ParamByName("n").AsInteger:=l;
DM.qrStudentListRX.SQL.Add("Delete from "Student.db" WHERE KodStudent=:n ");

if not DM.qrStudentListRX.Prepared then
begin
DM.qrStudentListRX.Close;
DM.qrStudentListRX.Prepare;
DM.qrStudentListRX.ExecSQL;
end;
end;
BL.Free;
DM.qrStudentListRX.SQL.Clear;
DM.qrStudentListRX.SQL.Add(query);
DM.qrStudentListRX.Open;
ошибка: Could not find object


Danilka   (2003-11-25 16:43:00) [1]

[18] Pako (25.11.03 15:48)
потому-что реально у тебя в другом месте ошибка.
почитай документацию, или хелп,там-же вполне понятно написано, что параметры создаются автоматом, ненадо их вручную создавать.

и еще, у тебя когда-нибудь бывает BL.Count больше единицы? честно говоря, сомневаюсь, что по второму разу цикл пройдет без ошибки..


Pako   (2003-11-25 15:48:00) [2]


> тебе еще в [2] Johnmen © (25.11.03 12:13)
> ответили :))

замечу, там ни слова о Params.Clear


Serg   (2003-11-25 15:46:00) [3]

2Danilka © (25.11.03 15:43) [15]
datatype, кстати, можно не присваивать

2Pako
если Clear не поможет, попробуй query.prepare


Pako   (2003-11-25 15:46:00) [4]


> Serg (25.11.03 15:37) [13]

Params.Clear действительно помог:))) как я могла об этом не подумать!!!!
Большое Вам спасибо


Danilka   (2003-11-25 15:43:00) [5]

блин, надо-же как я проглядел. тебе еще в [2] Johnmen © (25.11.03 12:13)
ответили :))
просто, сбило с толку: "Не могу выполнить Open после выполнения ExecSQl"

1. попробуй, например, вот-так:
DM.qrStudentListRX.SQL.Clear;
DM.qrStudentListRX.SQL.Add("Delete from "Student.db" WHERE KodStudent=:n ");
DM.qrStudentListRX.Params[0].DataType:=ftInteger;
DM.qrStudentListRX.ParamByName("n").AsInteger:=l;


дело в том, что Add() сам автоматом создаст параметр, если в тексте встретит двоеточие.

а вообще-то, все это хозяйство правильнее было-бы за пределы цикла вынести, а в цикле только параметру значение присваивать..


Pako   (2003-11-25 15:39:00) [6]


> Serg (25.11.03 15:37) [13]

TQueryRX


Serg   (2003-11-25 15:37:00) [7]

а какой query ты используешь?
попробуй сделать ему Params.Clear перед Open


Pako   (2003-11-25 15:32:00) [8]

текст запроса в этой переменной работает 100%, так как используется во многих др. местах, друг мой, и на "этом месте" не обламывается
для выяснения текста ошибки тебе телепатия не понадобится, внимательнее см. вопрос

> ты-же так и не привел содержимое этой переменой, хотя тебя
> об этом уже и просили и намекали

кто же это просил и намекал, и зачем намекать если можно прямо сказать
а в query вот что
SELECT S.KodStudent, S.Number, F.Surname||" "||N.Name||" "||P.Patronymic As FullName, G.Grup
FROM Student.DB S ,Surname.DB F , Name.DB N, Patronymic.DB P, Grup.DB G
WHERE S.KodSurname=F.KodSurName AND S.KodName=N.KodName AND S.KodPatronymic=P.KodPatronymic AND S.KodGrup=G.KodGrup
И если "обламывается" именно на этом месте, то мне непонятно почему при использовании DM.qrStudentListRX.SQL.Add(query); в других процедурах проходит


Danilka   (2003-11-25 15:22:00) [9]

[10] Pako (25.11.03 15:17)
>а откуда ты заешь что в query?

телепатия, мой друг, самая что ни на есть телепатия.
ты-же так и не привел содержимое этой переменой, хотя тебя об этом уже и просили и намекали, вот и приходится только догадываться, сколько-же на самом деле там ошибок, раз на этом месте обламывается.

кстати, о том, какое сообщение об ошибке выскакивает похоже тоже придется с помощью телепатии выяснять.


Pako   (2003-11-25 15:17:00) [10]


> Danilka © (25.11.03 14:48) [9]

а откуда ты заешь что в query?
Если ошибки в delete, то укажи на них


Danilka   (2003-11-25 14:48:00) [11]

[8] Pako (25.11.03 14:45)

DM.qrStudentListRX.SQL.Add( query);

чего ты хочешь, у тебя в запросе, который лежит в переменной query целых 4 ошибки!


Pako   (2003-11-25 14:45:00) [12]


> Johnmen © (25.11.03 12:13) [2]
> http://www.delphimaster.ru/cgi-bin/forum.pl?id=1069429720&n=1
> Это здесь, рядом...

Если правильно понимаю - Johnmen имеет в виду параметры,
но даже если строчку
DM.qrStudentListRX.ParamByName("n").AsInteger:=l; поставить после Add ошибка та же
Хоть кто-нибудь четко ответить может в чем моя ошибка?


Anatoly Podgoretsky   (2003-11-25 14:06:00) [13]

Не удивляет, а удивляет, что в query?, терра инкогнито.


Pako   (2003-11-25 13:59:00) [14]


> Кщд (25.11.03 13:46) [5]
> query=?

да, а вас это удивляет например в Watch List пишем
DM.qrStudentListRX.Active и при отладке после выполнения ExecSQL ...Active будет равно фальш


Кщд   (2003-11-25 13:46:00) [15]

query=?


Pako   (2003-11-25 12:46:00) [16]


> Johnmen © (25.11.03 12:13) [2]
> http://www.delphimaster.ru/cgi-bin/forum.pl?id=1069429720&n=1
> Это здесь, рядом...

и где там ответ на вопрос? между строк?


Pako   (2003-11-25 12:44:00) [17]


> Кщд (25.11.03 12:08) [1]

Перед Clear?
Ошибка таже!Да и если посмотреть "по-шагам" то DM.qrStudentListRX.Active=FAlse после ExecSQL


Johnmen   (2003-11-25 12:13:00) [18]

http://www.delphimaster.ru/cgi-bin/forum.pl?id=1069429720&n=1
Это здесь, рядом...


Кщд   (2003-11-25 12:08:00) [19]

а закрыть?


Наверх

Титульная страница Поиск, карта сайта Написать письмо