Форум: "Начинающим";
Текущий архив: 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