写入dbf为何会内存不足?(100分)

  • 主题发起人 主题发起人 xuaner
  • 开始时间 开始时间
X

xuaner

Unregistered / Unconfirmed
GUEST, unregistred user!
我从sql server中选出符合条件的记录写入本地dbf 中以便做进一步的处理。但
老是显示内存不足('There is not enough memory to complete this operation...')
也不知道哪里有问题。急死了。
with updatedbf do begin
close;
sql.clear;
sql.add('insert into total(pdbh,pdhh,xx,ptxx,hhxx,rtquan,');
sql.add('price,memberno,id_no,abc,rtdate) values(:pdbh,');
sql.add(':pdhh,:xx,:ptxx,:hhxx,:rtquan,:price,');
sql.add(':memberno,:id_no,:abc,:rtdate)');
parameters.Refresh ;


end;

......

while not xply.Eof do begin
with updatedbf do begin
// Parameters.ParamByName('pdbh').Value:=
parameters[0].value:=
uppercase(xply.fieldbyname('pdbh').asstring);
Parameters.ParamByName('pdhh').value:=
uppercase(xply.fieldbyname('pdhh').asstring);
Parameters.ParamByName('hhxx').value:=
uppercase(xply.fieldbyname('hhxx').asstring);
Parameters.ParamByName('price').value:=
xply.fieldbyname('price').ascurrency;
Parameters.ParamByName('memberno').value:=
xply.fieldbyname('memberno').asstring;
Parameters.ParamByName('abc').value:='';
Parameters.ParamByName('rtquan').value:=
xply.fieldbyname('rtquan').asinteger;
if trim(xply.FieldByName('hhxx').asstring)='06' then
Parameters.ParamByName('id_no').value:='805' else
Parameters.ParamByName('id_no').value:=
xply.fieldbyname('id_no').asstring;
if length(trim(xply.fieldbyname('pdhh').asstring))=8 then
Parameters.ParamByName('xx').value:=
copy(trim(xply.fieldbyname('pdhh').asstring),7,2) else
Parameters.ParamByName('xx').value:='';
if (pos(uppercase(xply.fieldbyname('ptxx').asstring),
'ABCDEFGHIJKLMNOPQRSTUVWXYZ')>0)
then
Parameters.ParamByName('ptxx').value:=
uppercase(xply.fieldbyname('ptxx').asstring) else
Parameters.ParamByName('ptxx').value:='';
Parameters.ParamByName('rtdate').value:=
xply.fieldbyname('rtdate').asdatetime;

execsql;

end;

xply.Next;

end;
 
我估计上dbf数据的问题,
你可以不用参数方式生成一条SQL语句,再将这条SQL语句拷贝到Foxprow中执行看看。
 
FOXPRO中没有任何问题。
 
原来是字段值不能为空.
 
后退
顶部