如果您無法以 SQL 命令更新 MEMO 欄位的話, 可使用一個 TTable 元件
配合 UpdateSQL 做更新的工作,例如:資料表 Item 有一個備註欄位
'Notes',現在利用一個 TTable 來更新這個備註欄,其餘欄位仍舊使用
UpdateSQL 來更新,注意 TUpdateSQL 中更新的欄位必須排除 'Notes'。
以下範例中使用到的物件:
tblUpdate: TTable;
updItem: TUpdateSQL;
procedure TDmod.qryItemUpdateRecord(DataSet: TDataSet;
UpdateKind: TUpdateKind; var UpdateAction: TUpdateAction);
var
KeyFieldName, KeyVal: string;
begin
KeyFieldName := 'ITEM_NO';
tblUpdate.Close;
tblUpdate.TableName := 'Item';
case UpdateKind of
//-----------------------------------------------
ukModify:
begin
tblUpdate.Open;
KeyVal := DataSet.FieldByName(KeyFieldName).OldValue;
if not tblUpdate.Locate(KeyFieldName, KeyVal, []) then
begin
UpdateAction := uaFail;
Exit;
end;
tblUpdate.Edit();
tblUpdate.FieldValues['Notes'] := DataSet.FieldValues['Notes'];
tblUpdate.Post();
updItem.Apply(UpdateKind);
end;
//-----------------------------------------------
ukInsert:
begin
updItem.Apply(UpdateKind);
tblUpdate.Open;
KeyVal := DataSet.FieldByName(KeyFieldName).AsString;
if not tblUpdate.Locate(KeyFieldName, KeyVal, []) then
begin
UpdateAction := uaFail;
Exit;
end;
tblUpdate.Edit();
tblUpdate.FieldValues['Notes'] := DataSet.FieldValues['Notes'];
tblUpdate.Post();
end;
//---------------------------------------------------------
ukDelete:
updItem.Apply(UpdateKind);
end;
UpdateAction := uaApplied;
end;
               (
geocities.com/huanlin_tsai)