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

Вниз

Вопрос про клозет датасет   Найти похожие ветки 

 
vegarulez ©   (2008-01-28 05:45) [0]

Привет всем мастерам! Вопрос такой: я выбираю в цикле 10 записей из таблицы произвожу с ними манипуляции, и потом в этом же цикле в зависимости от результата манипуляций мне надо обновить запись, с которой в данный момент работаю, а так как она открыта в настоящий момент то получается, что апдейтить её в базе не получается... эксцептион -> процессор на сотку...  
Подскажите как можно выбрать 10 записей в какой -то созданый допустим мною датасет, и уже потом работать с этим датасетом, закрыв при этом запрос к базе, чтобы эти записи были в бд разблокированы на апдейт.
использую D7+ Zeos +Access

procedure TF1.DBW;
var
 s:string;
 j,i:integer;
begin

   with myzquery do
   try
     myzquery.Sql.Text:="Select top 10 `id`,`a`,`b` from `c` WHERE `d`=1 and e=-1";
     myzquery.open;
     if myzquery.RecordCount>0 then
     BEGIN
     While not Eof do
      Begin
       for j:=0 to myzquery.FieldCount-1 do
       db_values[j]:=myzquery.Fields[j].AsString;
        begin
         
          ...
          //далее блок действи с записями db_values[j] в ходе которых формируются переменные resultat[i]
          ...
         
          myzquery1.Sql.Text:="Update `c` set `d`="+resultat[4]+", `e`="+resultat[1]+",`a`=""+resultat[3]+"" where `id`="+db_values[0]+"";
            myzquery1.ExecSql();
            myzquery1.close;

       Next;
      End;
     END;
     
   except
   on E: Exception do
    Begin
     MessageDlg("Error2" +#10#13+ E.Message +#10#13+ inttostr(E.HelpContext), mtWarning,[mbOk], 0);
     myzquery.Close;
     myzquery1.close;
    End;
   end;
end;


 
ketmar ©   (2008-01-28 07:36) [1]

а что, создать ещё один TQuery нельзя? если уж неохота сначала накопить результаты и закрыть этот query?


 
vegarulez ©   (2008-01-28 07:45) [2]

Всмысле? не понимаю...?

так там как раз 2 TZQuery участвуют... myzquery и myzquery1
while идёт  по myzquery, а update по myzquery1...


 
ketmar ©   (2008-01-28 08:51) [3]

мда. не заметил, извиняюсь.

впрочем, вторая часть рекомендации в силе.


 
Sergey13 ©   (2008-01-28 09:14) [4]

> [0] vegarulez ©   (28.01.08 05:45)

1. Недурно бы запросы делать через параметры. Почему имена полей в апострофах?
2. Недурно бы весь код посмотреть, ибо есть сомнение - в том ли цикле ты делаешь запрос.

> получается... эксцептион

Какая ошибка?


 
ketmar ©   (2008-01-28 09:17) [5]

>[4] Sergey13©(28.01.08 09:14)
какая, какая… в архитектуре. ключевое слово — access. %-)


 
MsGuns ©   (2008-01-28 10:39) [6]

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


 
Sergey13 ©   (2008-01-28 10:50) [7]

> [6] MsGuns ©   (28.01.08 10:39)
> Отказаться от редактирования в гриде

А оно тут есть? 8-)


 
Anatoly Podgoretsky ©   (2008-01-28 15:06) [8]

> vegarulez  (28.01.2008 05:45:00)  [0]

Ну например TClientDataset + CachedUpdates



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

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

Наверх




Память: 0.48 MB
Время: 0.013 c
2-1201684718
Lex-85
2008-01-30 12:18
2008.02.24
Ошибка в Maskedit


2-1201686554
Guriev
2008-01-30 12:49
2008.02.24
(Работа с ADO) Kак организовать создание отчёта (НЕ таблицу)?


15-1201252151
tolyan
2008-01-25 12:09
2008.02.24
загрдиск


2-1201798008
batya-x
2008-01-31 19:46
2008.02.24
дождаться нажатия клавиши


2-1201680662
Venkin
2008-01-30 11:11
2008.02.24
URL выделенной картинки в TWebbrowser