Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2002.09.16;
Скачать: 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 вся ветка

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

Наверх




Память: 0.47 MB
Время: 0.012 c
14-50937
M@k
2002-08-21 14:00
2002.09.16
Help!


1-50707
Yuri Btr
2002-09-03 11:24
2002.09.16
Как работать с невизуальным TListItems


7-51005
Чайник2
2002-07-04 06:42
2002.09.16
Click


1-50750
torick
2002-09-05 10:48
2002.09.16
PsRBExportDevices, TExtraDevices


3-50603
Gaber
2002-08-26 10:57
2002.09.16
Русский шрифт в Database Desktop