Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Начинающим";
Текущий архив: 2007.06.03;
Скачать: [xml.tar.bz2];

Вниз

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;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.49 MB
Время: 0.047 c
2-1179176488
redlord
2007-05-15 01:01
2007.06.03
ограничение скорости чтения из файла


6-1164270644
Cawa
2006-11-23 11:30
2007.06.03
IDHTTP некорректная докачка файла


15-1178307934
Knight
2007-05-04 23:45
2007.06.03
Где тут собака порыта?


15-1178805576
Magedon
2007-05-10 17:59
2007.06.03
Почему на форуме нет возможности превью написанного сообщения?


8-1159184998
Jimmy
2006-09-25 15:49
2007.06.03
Векторная графика





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский