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

Вниз

Cannot perform this operation on a close dataset. В чем дело?   Найти похожие ветки 

 
Vlad Oshin ©   (2007-05-15 12:36) [0]

while not(ADOqueryOtelKey.Eof) do begin // ïî êàæäîìó îòåëþ,
  for i:=1 to ADOqueryDate.RecordCount do begin //ïî êàæäîé äàòå äåëàåì çàïðîñ
   ArrayADO[i]:=tADOquery.Create(nil);
   ArrayADO[i].Connection:=ADOConnection2;
   ArrayADO[i].Active:=false;
   ArrayADO[i].SQL.Clear;
   ArrayADO[i].SQL.Add(
"SELECT"+
"   TP_Key,"+
......
" and hd_key=:p3"+
" ORDER BY   pn_name, tp_key, days desc, ts_name"
   );
    ArrayADO[i].Parameters.ParamByName("p1").Value := Edit4.Text;
    ArrayADO[i].Parameters.ParamByName("p2").Value := ADOqueryDate.fieldByName("TD_DATE").AsString;
    ArrayADO[i].Parameters.ParamByName("p3").Value := ADOqueryOtelKey.fieldByName("hd_key").AsString;
    ArrayADO[i].Active;
    ArrayADO[i].first;
ERROR Cannot perform this operation on a close dataset

В чем м/б дело? Создал запрос, выполнил - 50 раз так делал и ничего..


 
McSimm_ ©   (2007-05-15 12:39) [1]


> ArrayADO[i].Active;

:= true ?


 
McSimm_ ©   (2007-05-15 12:40) [2]

Вообще дикость какая-то...
Делать кучу ADOQuery.


 
ЮЮ ©   (2007-05-15 12:43) [3]

> ArrayADO[i].Active;

ArrayADO[i].Open;

>Вообще дикость какая-то...
>Делать кучу ADOQuery.

Тем более с одним и тем же текстом


 
Vlad Oshin ©   (2007-05-15 12:44) [4]

черт, совсем могов нет :)
спасибо.

Да, там немного на самом деле(не более 4х). А надо для .. короче, мне так понятнее


 
Плохиш ©   (2007-05-15 12:44) [5]


>    ArrayADO[i].Active:=false;

Бессмысленно, после создания набор данных не активен

>    ArrayADO[i].SQL.Clear;
>    ArrayADO[i].SQL.Add(

Что за не любовы к свойству Text?

>     ArrayADO[i].Active;

McSimm_ уже сказал :-)

>     ArrayADO[i].first;

Бессмысленно, после открытия указатель устанавливается на первую запись набора данных.


 
Jan1   (2007-05-15 13:26) [6]


>   ArrayADO[i].Parameters.ParamByName("p2").Value := ADOqueryDate.
> fieldByName("TD_DATE").AsString;

это ты так дату заносишь? ну-ну... А чем AsDateTime неугодил?


 
Jan1   (2007-05-15 13:27) [7]


> for i:=1 to ADOqueryDate.RecordCount do begin

а чего здесь не while Eof?


 
zdm ©   (2007-05-15 14:00) [8]

передача данных парматерами, тем и хороша, что ненадо задумывться о формате.  просто ParamByName("дата").Value=now,,или DateTimePicker.Date.....хотя ADO глюкует иногда.. AsDateTime-рулит! а не Asdate:) ну и соотвественно в полях БД -крткий формат данных даты...или в отображении


 
zdm ©   (2007-05-15 14:03) [9]


> McSimm_ ©   (15.05.07 12:40) [2]
> Вообще дикость какая-то...Делать кучу ADOQuery

почему? если MDI приложение, то как иначе? что-бы данные отображались в одном окне, а селектя или инсертя, апдейтя -отоброжение не менялось в привязанной к датасоурц окне с гридом?


 
Vlad Oshin ©   (2007-05-15 14:40) [10]


> Jan1  zdm ©  

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


> Jan1   (15.05.07 13:27) [7]
>
> > for i:=1 to ADOqueryDate.RecordCount do begin
>
> а чего здесь не while Eof?
> <Цитата>

а разница?


 
Jan1   (2007-05-15 14:41) [11]


> а разница?

попробуй на серверном курсоре.


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

не понял. ты дату как хранишь?


 
Vlad Oshin ©   (2007-05-15 14:52) [12]


> не понял. ты дату как хранишь?

сейчас поле не типа DATA, а типа varchar
но, можно и сделать как надо. Вопрос: Как заставить понять формат дд.мм.гггг
вот что накопал

Если у Вы используете MS SQL, тогда "#" не надо
(Просто привык к Access"у).
Тогда надо делать так:
select * from Zevent where dat_e BETWEEN "04/28/2004" AND "05/01/2004"
В MS SQL используется "американский" формат даты, когда сначала пишется месяц, потом день, а потом год.

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



> попробуй на серверном курсоре.

не возможно, по условию


 
Jan1   (2007-05-15 14:59) [13]


> сейчас поле не типа DATA, а типа varchar
> но, можно и сделать как надо.

млин, так в чем проблема?


> Вопрос: Как заставить понять формат дд.мм.гггг

а так:

set dateformat dmy
GO
select cast("31.12.2006" as datetime)
GO
set dateformat mdy
GO
select cast("12.31.2006" as datetime)
GO

в крайнем случае есть универсальный формат: YYYYMMDD


 
Jan1   (2007-05-15 15:44) [14]


>
> не возможно, по условию

по какому еще условию? Я Вам про то что while Eof не вызовит ошибки, а Ваш вариант чреват...


 
Anatoly Podgoretsky ©   (2007-05-15 23:23) [15]

> Плохиш  (15.05.2007 12:44:05)  [5]

Не бессмысленно, бессмысленно это делать после создания.


 
Anatoly Podgoretsky ©   (2007-05-15 23:25) [16]

> Vlad Oshin  (15.05.2007 14:52:12)  [12]

> сейчас поле не типа DATA, а типа varchar

Так и не надо это датой называть, прямо говори, что это строка


 
Плохиш ©   (2007-05-16 01:59) [17]


> Anatoly Podgoretsky ©   (15.05.07 23:23) [15]
> > Плохиш  (15.05.2007 12:44:05)  [5]
>
> Не бессмысленно, бессмысленно это делать после создания.

В данном конкретном случае - бессмысленно. А другии случаи будем рассматривать по мере поступления...



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

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

Наверх




Память: 0.51 MB
Время: 0.046 c
2-1178989842
Gaara_of_the_Desert
2007-05-12 21:10
2007.06.03
Создание объектов на форме


11-1160942958
Psychedelic
2006-10-16 00:09
2007.06.03
как обратиться к KOLProject не через инспектор?


15-1178619022
Jeer
2007-05-08 14:10
2007.06.03
В память о войне


15-1178300863
vasya123123
2007-05-04 21:47
2007.06.03
Свой инсталлятор / installer


15-1178611316
Knight
2007-05-08 12:01
2007.06.03
Чё-то я вообще местную модерацию понимать перестал..