Форум: "Базы";
Текущий архив: 2002.09.16;
Скачать: [xml.tar.bz2];
ВнизОбновление 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;
Скачать: [xml.tar.bz2];
Память: 0.45 MB
Время: 0.458 c