![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Вопрос про клозет датасет [D7, XP]
vegarulez © (2008-01-28 05:45:00)Привет всем мастерам! Вопрос такой: я выбираю в цикле 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;
Anatoly Podgoretsky (2008-01-28 15:06:00) [1]> vegarulez (28.01.2008 05:45:00) [0]
Ну например TClientDataset + CachedUpdates
Sergey13 (2008-01-28 10:50:00) [2]> [6] MsGuns © (28.01.08 10:39)
> Отказаться от редактирования в гриде
А оно тут есть? 8-)
MsGuns (2008-01-28 10:39:00) [3]Отказаться от редактирования в гриде, заменив правку запросами с переоткрытием по мере необходимости.
ketmar (2008-01-28 09:17:00) [4]>[4] Sergey13©(28.01.08 09:14)
какая, какая… в архитектуре. ключевое слово — access. %-)
Sergey13 (2008-01-28 09:14:00) [5]> [0] vegarulez © (28.01.08 05:45)
1. Недурно бы запросы делать через параметры. Почему имена полей в апострофах?
2. Недурно бы весь код посмотреть, ибо есть сомнение - в том ли цикле ты делаешь запрос.
> получается... эксцептион
Какая ошибка?
ketmar (2008-01-28 08:51:00) [6]мда. не заметил, извиняюсь.
впрочем, вторая часть рекомендации в силе.
vegarulez (2008-01-28 07:45:00) [7]Всмысле? не понимаю...?
так там как раз 2 TZQuery участвуют... myzquery и myzquery1
while идёт по myzquery, а update по myzquery1...
ketmar (2008-01-28 07:36:00) [8]а что, создать ещё один TQuery нельзя? если уж неохота сначала накопить результаты и закрыть этот query?