Вниз
Скачать: CL | DM;

Обновление DBGrid после Update   Найти похожие ветки 

 
loto   (2002-08-26 01:21) [0]

Как сделать, чтобы после обновления данных с помощью UpdateSQL сразу отобразились изменения в DBGrig без новой выборки с помощью Query. Почему в коде dbDatabase.StartTransaction генерит ошибку:

Capability not supported.
[MySQL][ODBC 3.51 Driver]Transactions are not enabled.

Как это - в MySQL не поддерживаются транзакции?!

Код:

procedure TfrmMain.btnUpdateClick(Sender: TObject);
var
s:string;
i:integer;
begin
try
s:="";
for i:=1 to length(edRun.Text)do
begin
if(i>2)and(edRun.Text[i-2]<>"\")then
s:=s+edRun.Text[i];
if(i>1)and(edRun.Text[i]="\")and(edRun.Text[i-2]<>"\")then
s:=s+edRun.Text[i];
end;
edRun.Text:=s;
// frmStart.dbDatabase.StartTransaction;
try
selUpdateSQL.SQL[ukModify].Clear;
selUpdateSQL.SQL[ukModify].Add("update menu");
selUpdateSQL.SQL[ukModify].Add("set ");
selUpdateSQL.SQL[ukModify].Add(" name=""+edName.Text+"",");
selUpdateSQL.SQL[ukModify].Add(" run=""+edRun.Text+"",");
selUpdateSQL.SQL[ukModify].Add(" runparam=""+edRunParam.Text+"",");
selUpdateSQL.SQL[ukModify].Add(" progkey=""+edProgKey.Text+""");
selUpdateSQL.SQL[ukModify].Add("where ");
selUpdateSQL.SQL[ukModify].Add(" id="+inttostr(selQuery["id"]));
selUpdateSQL.SQL[ukModify].SaveToFile("d:\upd.SQL");
selUpdateSQL.ExecSQL(ukModify);
selQuery.Close;
selQuery.Open;
// gridMenus.Refresh;
DataModified:=False;
StatusBar1.Panels[0].Text:="Данные обновлены";
// frmStart.dbDatabase.Commit;
except
// frmStart.dbDatabase.Rollback;
DataModified:=False;
StatusBar1.Panels[0].Text:="Ошибка при обновлении данных";
end;
finally
gridMenus.Enabled:=True;
panelEdit.Visible:=False;
Application.ProcessMessages;
end;
end;


 
ЮЮ ©   (2002-08-26 06:00) [1]

Твой код, честно говоря, не имеет никакого отношения к UpdateSQL, несмотря на название selUpdateSQL :-)

следует у selQuery установить UpdateObject, который соответственно настроить. Тогда изменения, вносимые в Grid в нём, естественно, и будут отражаться сразу, а изменения в БД будут осуществляться посредством UpdateSQL.


 
loto   (2002-08-26 16:34) [2]

sel - это группа компонентов, связанных общей задачей.
Я вношу изменения не в Grid, а с помощью SQL-запроса.
Например такой запрос:

selUpdateSQL.SQL[ukModify]:=
"update menu "+
"set "+
" name="Notepad", "+
" run="Notepad.exe", "+
" runparam="", "+
" progkey="" "+
"where "+
" id=1";


Этот запрос запичкал в selUpdateSQL.SQL[ukModify], затем выполнил selUpdateSQL.ExecSQL(ukModify).
Установлено на этапе разработки:
selQuery.UpdateObject=selUpdateSQL
selQuery.AutoUpdate=True


 
ЮЮ ©   (2002-08-27 03:06) [3]

>Я вношу изменения не в Grid, а с помощью SQL-запроса
Пусть и не через Grid, но изменения нада вносить через DataSet (selQuery.Edit; selQuery.FieldByName("..").asXXX:=...; selQuery.Post)), а реально они внесутся через selUpdateSQL без дополнительного кода в TfrmMain.btnUpdateClick(Sender: TObject);
и отобразятся в Гриде.




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

Скачать: CL | DM;



Память: 0.46 MB
Время: 0.01 c
7-50999
Gayrus
2002-06-28 03:49
2002.09.16
LPT порт


1-50812
Konrads
2002-09-03 20:52
2002.09.16
%SystemRoot% %Temp%


1-50801
DiHLoS
2002-09-03 16:59
2002.09.16
Как развернуть TTreeView?


1-50811
mvg_first
2002-09-03 16:19
2002.09.16
Помогите отучить TVideoGrabber от наг-скрина!


6-50889
ANM
2002-07-10 22:46
2002.09.16
PHP из Дельфей




   Наверх