Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2003.12.16;
Скачать: CL | DM;

Вниз

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;
Скачать: CL | DM;

Наверх




Память: 0.51 MB
Время: 0.016 c
1-52278
REA
2003-12-04 10:20
2003.12.16
ListView click


4-52449
Serg
2003-10-22 21:29
2003.12.16
Подскажите пожалуйста как...


1-52229
Piero
2003-12-03 22:53
2003.12.16
Как получить компанент


1-52255
alexnmsk
2003-12-04 13:47
2003.12.16
Маска редактирования текста


3-52110
softmaster
2003-11-23 10:17
2003.12.16
Станность с БД