Главная страница
    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.48 MB
Время: 0.047 c
3-1173319054
Antoxa2005
2007-03-08 04:57
2007.06.03
Вопросик на зание SQL. (Дамы с праздником 8 марта)


2-1179133630
Zahadom
2007-05-14 13:07
2007.06.03
Копированиет с индикатором - ёлки-палки!


15-1178298367
N3xt
2007-05-04 21:06
2007.06.03
задачка)


15-1178189164
CCili
2007-05-03 14:46
2007.06.03
Какая-то функция, соединяющая Word, Excel


8-1149574339
Igors
2006-06-06 10:12
2007.06.03
midi библиотеки





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский