![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
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]
а закрыть?