TGraphicField v.s TUpdateSQL |
尚未結案
|
marlon_wu
一般會員 發表:5 回覆:6 積分:2 註冊:2002-09-20 發送簡訊給我 |
有一table內含圖片欄位,
圖片資料以 JPEGStream 存成 TStream,
再以TBlobField.LoadFromStream的方式讀入,
由於該table在select時有join其他table,
所以用TUpdateSQL來異動資料,
結果當該圖片欄位值為null, 且沒有異動該欄位時,
update的結果發現Delphi產生這樣的sql:
update tablename
set
field_n = xxx, ....
picture = 0x 結果picture值變成不是null了,
UpdateSQL的參數替換是參考李維的書:
procedure SetParams(FUpdateSQL: TUpdateSQL;
DeltaDS: TClientDataSet; UpdateKind: TUpdateKind);
var
I: Integer;
Old: Boolean;
Param: TParam;
PName: string;
Field: TField;
Value: Variant;
begin
if not Assigned(FUpdateSQL.DataSet) then
Exit;
with FUpdateSQL.Query[UpdateKind] do
begin
for I := 0 to Params.Count - 1 do
begin
Param := Params[I];
PName := Param.Name;
Old := CompareText(Copy(PName, 1, 4), 'OLD_') = 0;
if Old then
System.Delete(PName, 1, 4);
Field := DeltaDS.FindField(PName);
if not Assigned(Field) then
Continue;
if Old then
Param.AssignFieldValue(Field, Field.OldValue)
else
begin
Value := Field.NewValue;
if VarIsEmpty(Value) then
begin
Value := Field.OldValue;
end;
Param.AssignFieldValue(Field, Value);
end;
end;
end;
end;
|
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |