我为了记录字段修改前后的值,在adoquery的beforepost中加了一下代码:
var
j:integer;
adoquery:tadoquery;
name:string;
begin
for j:=0 to adoquery1.fieldcount-1 do
begin
if string(adoquery1.fields[j].OldValue)<>adoquery1.fields[j].AsString then
begin
adoquery:=tadoquery.Create(application);
adoquery.connection:=form1.ADOConnection1;
adoquery.sql.add('select top 0 * from SH_RIZHI') ;
adoquery.open;
adoquery.append;
adoquery.FieldByName('wid').AsString:=jinghao;
adoquery.FieldByName('tbname').AsString:='岩屑描述记录';
adoquery.FieldByName('tkeyname').AsString:='开始井深';
adoquery.FieldByName('tname').AsString:='JP_yxm';
adoquery.FieldByName('mender').AsString:= username;
adoquery.FieldByName('mdate').AsDateTime:=Date;
if adoquery1.FieldList.Fields[j] is TStringField then
begin
adoquery.FieldByName('bvalue').AsString:=adoquery1.Fields[j].OldValue;
adoquery.FieldByName('avalue').AsString:=adoquery1.Fields[j].Value ;
end
else if adoquery1.FieldList.Fields[j] is tfloatfield then
begin
adoquery.FieldByName('bvalue').AsString:=formatfloat('0.00',adoquery1.Fields[j].OldValue);
adoquery.FieldByName('avalue').AsString:=formatfloat('0.00',adoquery1.Fields[j].Value);
end
else if adoquery1.FieldList.Fields[j] is TIntegerField then
begin
adoquery.FieldByName('bvalue').AsString:=inttostr(adoquery1.Fields[j].OldValue);
adoquery.FieldByName('avalue').AsString:=inttostr(adoquery1.Fields[j].Value);
end
else if adoquery1.FieldList.Fields[j] is tblobfield then
begin
adoquery.FieldByName('bblob').AsString:=adoquery1.Fields[j].OldValue;
adoquery.FieldByName('ablob').AsString:=adoquery1.Fields[j].Value;
end
else if adoquery1.FieldList.Fields[j] is TSmallintField then
begin
adoquery.FieldByName('bvalue').AsString:=inttostr(adoquery1.Fields[j].OldValue);
adoquery.FieldByName('avalue').AsString:=inttostr(adoquery1.Fields[j].Value);
end ;
adoquery.post;
adoquery.close;
adoquery.free;
break;
end;
end;
end;
在修改一个image字段时提示出错:
Could not convert variant of type (Array Byte) into type(Double)
用断点调试错误出在if string(adoquery1.fields[j].OldValue)<>adoquery1.fields[j].AsString then这一句
不知道怎么解决,问题很紧急,请各位大侠帮下忙!
var
j:integer;
adoquery:tadoquery;
name:string;
begin
for j:=0 to adoquery1.fieldcount-1 do
begin
if string(adoquery1.fields[j].OldValue)<>adoquery1.fields[j].AsString then
begin
adoquery:=tadoquery.Create(application);
adoquery.connection:=form1.ADOConnection1;
adoquery.sql.add('select top 0 * from SH_RIZHI') ;
adoquery.open;
adoquery.append;
adoquery.FieldByName('wid').AsString:=jinghao;
adoquery.FieldByName('tbname').AsString:='岩屑描述记录';
adoquery.FieldByName('tkeyname').AsString:='开始井深';
adoquery.FieldByName('tname').AsString:='JP_yxm';
adoquery.FieldByName('mender').AsString:= username;
adoquery.FieldByName('mdate').AsDateTime:=Date;
if adoquery1.FieldList.Fields[j] is TStringField then
begin
adoquery.FieldByName('bvalue').AsString:=adoquery1.Fields[j].OldValue;
adoquery.FieldByName('avalue').AsString:=adoquery1.Fields[j].Value ;
end
else if adoquery1.FieldList.Fields[j] is tfloatfield then
begin
adoquery.FieldByName('bvalue').AsString:=formatfloat('0.00',adoquery1.Fields[j].OldValue);
adoquery.FieldByName('avalue').AsString:=formatfloat('0.00',adoquery1.Fields[j].Value);
end
else if adoquery1.FieldList.Fields[j] is TIntegerField then
begin
adoquery.FieldByName('bvalue').AsString:=inttostr(adoquery1.Fields[j].OldValue);
adoquery.FieldByName('avalue').AsString:=inttostr(adoquery1.Fields[j].Value);
end
else if adoquery1.FieldList.Fields[j] is tblobfield then
begin
adoquery.FieldByName('bblob').AsString:=adoquery1.Fields[j].OldValue;
adoquery.FieldByName('ablob').AsString:=adoquery1.Fields[j].Value;
end
else if adoquery1.FieldList.Fields[j] is TSmallintField then
begin
adoquery.FieldByName('bvalue').AsString:=inttostr(adoquery1.Fields[j].OldValue);
adoquery.FieldByName('avalue').AsString:=inttostr(adoquery1.Fields[j].Value);
end ;
adoquery.post;
adoquery.close;
adoquery.free;
break;
end;
end;
end;
在修改一个image字段时提示出错:
Could not convert variant of type (Array Byte) into type(Double)
用断点调试错误出在if string(adoquery1.fields[j].OldValue)<>adoquery1.fields[j].AsString then这一句
不知道怎么解决,问题很紧急,请各位大侠帮下忙!
解决方案 »
- 关于XML文件里的节点
- 怎么样复制一个文件到别发目录下
- 热烈祝贺二个6:dephi2006和‘神州6号’发布成功!66大顺!大吉大祥!
- cxgird中实现复制当前单元格的功能
- Delphi8开发VCL Form Application的问题
- DELPHI的Indv上那么多VCL如何使用啊?
- 各位高手,我用下面的代码写文件,可是为什么???
- 高难度问题,同时测试一下CSDN改版后的人气:如何选中一条不规则曲线比如Bezier曲线?
- 一个在win2000下用odbc连接access的问题,急~~~~~~!!!!!
- 打印大小和实际大小不一样的问题。
- Delphi中的自定义类可否设置共享的类属性
- 讨论:COM+中用RecordSet查询/更新数据的优劣
因為oldvalue為Variant型數據
因為oldvalue為Variant型數據我已測試過﹐沒問題
看看