procedure TCOMMONUTILS.AutoSignAture(AStingLisValue:string;ADataSetBroker:TDataSetBroker);
var
lQuery: TQuery;
SignedList: TStringList;
i: integer;
begin
if (ADataSetBroker.DataSet = nil) or not ADataSetBroker.DataSet.Active or
(ADataSetBroker.DataSet.State <> TDataSetState.dsEdit) then
exit;
SignedList := TStringList.Create;
SignedList.CommaText := AStingLisValue;
lQuery := TQuery.Create(nil);
lQuery.ConnectionString := 'DATABASEURL=Biz:\OPERATION\OperationDB.Database';
try
for i := 0 to SignedList.Count - 1 do
begin
if not(ADataSetBroker.DataSet.FieldByName(SignedList.Names).ReadOnly) then
begin
lQuery.CommandText:= 'Select Signed From YUser Where ID = ' +
ADataSetBroker.DataSet.FieldByName(SignedList.Names).AsString;
lQuery.Open;
if not lQuery.IsEmpty then
ADataSetBroker.DataSet.FieldByName(SignedList.Values[SignedList.Names]).Assign(lQuery.Fields[0])
else
ADataSetBroker.DataSet.FieldByName(SignedList.Values[SignedList.Names]).Clear;
end;
end;
finally
SignedList.Free;
lQuery.Close;
lQuery.Free;
end;
end;
procedure TMAINFORM.BizFormShow(Sender: TObject);
var
lSignedListCommaText:String;
lCOMMONUTILS:TCOMMONUTILS;
....
begin
.....
lSignedListCommaText:='XMGLBZYGCS=XMGLBZYGCSQM,XGBMZYGCS=XGBMZYGCSQM,YWBMZYGCS=YWBMZYGCSQM,'+
'XMJL=XMJLQM,XGBMJL=XGBMJLQM,YWBMJL=YWBMJLQM';
lCOMMONUTILS:= TCOMMONUTILS.Create(context);
try
lCOMMONUTILS.AutoSignAture(lSignedListCommaText,DataSetBroker);
finally
lCOMMONUTILS.Free;
end;
end;
这字段是个2进制流的字段,我从后台数据库中用SQL能写进去,但是在代码中
if not lQuery.IsEmpty then
ADataSetBroker.DataSet.FieldByName(SignedList.Values[SignedList.Names]).Assign(lQuery.Fields[0])
后面把ADataSetBroker.DataSet.ApplyUpdates之后
也会出现上面所述的问题