Форум: "Базы";
Текущий архив: 2003.12.16;
Скачать: [xml.tar.bz2];
ВнизSQL Найти похожие ветки
← →
Pako (2003-11-25 12:02) [0]Не могу выполнить 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
← →
Кщд (2003-11-25 12:08) [1]а закрыть?
← →
Johnmen (2003-11-25 12:13) [2]http://delphimaster.net/view/3-1069429720/
Это здесь, рядом...
← →
Pako (2003-11-25 12:44) [3]
> Кщд (25.11.03 12:08) [1]
Перед Clear?
Ошибка таже!Да и если посмотреть "по-шагам" то DM.qrStudentListRX.Active=FAlse после ExecSQL
← →
Pako (2003-11-25 12:46) [4]
> Johnmen © (25.11.03 12:13) [2]
> http://delphimaster.net/view/3-1069429720/
> Это здесь, рядом...
и где там ответ на вопрос? между строк?
← →
Кщд (2003-11-25 13:46) [5]query=?
← →
Pako (2003-11-25 13:59) [6]
> Кщд (25.11.03 13:46) [5]
> query=?
да, а вас это удивляет например в Watch List пишем
DM.qrStudentListRX.Active и при отладке после выполнения ExecSQL ...Active будет равно фальш
← →
Anatoly Podgoretsky (2003-11-25 14:06) [7]Не удивляет, а удивляет, что в query?, терра инкогнито.
← →
Pako (2003-11-25 14:45) [8]
> Johnmen © (25.11.03 12:13) [2]
> http://delphimaster.net/view/3-1069429720/
> Это здесь, рядом...
Если правильно понимаю - Johnmen имеет в виду параметры,
но даже если строчку
DM.qrStudentListRX.ParamByName("n").AsInteger:=l; поставить после Add ошибка та же
Хоть кто-нибудь четко ответить может в чем моя ошибка?
← →
Danilka (2003-11-25 14:48) [9][8] Pako (25.11.03 14:45)
DM.qrStudentListRX.SQL.Add( query);
чего ты хочешь, у тебя в запросе, который лежит в переменной query целых 4 ошибки!
← →
Pako (2003-11-25 15:17) [10]
> Danilka © (25.11.03 14:48) [9]
а откуда ты заешь что в query?
Если ошибки в delete, то укажи на них
← →
Danilka (2003-11-25 15:22) [11][10] Pako (25.11.03 15:17)
>а откуда ты заешь что в query?
телепатия, мой друг, самая что ни на есть телепатия.
ты-же так и не привел содержимое этой переменой, хотя тебя об этом уже и просили и намекали, вот и приходится только догадываться, сколько-же на самом деле там ошибок, раз на этом месте обламывается.
кстати, о том, какое сообщение об ошибке выскакивает похоже тоже придется с помощью телепатии выяснять.
← →
Pako (2003-11-25 15:32) [12]текст запроса в этой переменной работает 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); в других процедурах проходит
← →
Serg (2003-11-25 15:37) [13]а какой query ты используешь?
попробуй сделать ему Params.Clear перед Open
← →
Pako (2003-11-25 15:39) [14]
> Serg (25.11.03 15:37) [13]
TQueryRX
← →
Danilka (2003-11-25 15:43) [15]блин, надо-же как я проглядел. тебе еще в [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:46) [16]
> Serg (25.11.03 15:37) [13]
Params.Clear действительно помог:))) как я могла об этом не подумать!!!!
Большое Вам спасибо
← →
Serg (2003-11-25 15:46) [17]2Danilka © (25.11.03 15:43) [15]
datatype, кстати, можно не присваивать
2Pako
если Clear не поможет, попробуй query.prepare
← →
Pako (2003-11-25 15:48) [18]
> тебе еще в [2] Johnmen © (25.11.03 12:13)
> ответили :))
замечу, там ни слова о Params.Clear
← →
Danilka (2003-11-25 16:43) [19][18] Pako (25.11.03 15:48)
потому-что реально у тебя в другом месте ошибка.
почитай документацию, или хелп,там-же вполне понятно написано, что параметры создаются автоматом, ненадо их вручную создавать.
и еще, у тебя когда-нибудь бывает BL.Count больше единицы? честно говоря, сомневаюсь, что по второму разу цикл пройдет без ошибки..
Страницы: 1 вся ветка
Форум: "Базы";
Текущий архив: 2003.12.16;
Скачать: [xml.tar.bz2];
Память: 0.48 MB
Время: 0.008 c