奇怪的问题(100)

  • 主题发起人 主题发起人 胡鸣
  • 开始时间 开始时间

胡鸣

Unregistered / Unconfirmed
GUEST, unregistred user!
将Access数据库表中记录导出为Excel表,前面五个字段能正确显示,第六个字段“f”显示的是数字,如果显示的内容是“ok”或“no”也正常,是什么原因呢?各位帮帮忙吧。 myexcel.cells(1, 1):='姓名';//这里也能正常显示for i:=1 to count dobeginmyexcel.cells(i + 2, 1) := ADOquery.FieldByName('a').AsString; myexcel.cells(i + 2, 2) := ADOquery.FieldByName('b').AsDateTime; myexcel.cells(i + 2, 3) := ADOquery.FieldByName('c').AsDateTime; myexcel.cells(i + 2, 4) := ADOquery.FieldByName('d').AsDateTime; myexcel.cells(i + 2, 5) := ADOquery.FieldByName('e').AsString; if ADOquery.FieldByName('f').AsBoolean then myexcel.cells(i + 2, 6) :='是' else myexcel.cells(i + 2, 7) := '否';//显示为数字 DataModule1.xmdata.next;end;
 
).AsBoolean 是做转换的你应该写为if [red]ADOquery.FieldByName('f').AsBoolean=true[/red] then myexcel.cells(i + 2, 6) :='是' else myexcel.cells(i + 2, 7) := '否';//显示为数字 DataModule1.xmdata.next;
 
).AsBoolean 是做转换的你应该写为[red]if ADOquery.FieldByName('f').AsBoolean=true[/red] then myexcel.cells(i + 2, 6) :='是'问题不在这里,我就是不要这句,单独myexcel.cells(i + 2, 6) :='是',也是显示一串数字21542
 
我这边测试无法重现现象,你检查一下,是否存在其它地方更改了excell中的数据吧。ADOquery.FieldByName('f').AsBoolean 和 ADOquery.FieldByName('f').AsBoolean=true 是一个意思,没区别。
 
奇怪的是我改为myexcel.cells(i + 2, 6) :=ADOquery.FieldByName('e').AsString;也能正常显示,也就是说显示数据库字段值没问题,而赋值时则显示数字。
 
myexcel.cells(1, 1):='姓名';//这里也能正常显示for i:=1 to count dobeginmyexcel.cells(i + 2, 1) := ADOquery.FieldByName('a').AsString; myexcel.cells(i + 2, 2) := ADOquery.FieldByName('b').AsDateTime; myexcel.cells(i + 2, 3) := ADOquery.FieldByName('c').AsDateTime; myexcel.cells(i + 2, 4) := ADOquery.FieldByName('d').AsDateTime; myexcel.cells(i + 2, 5) := ADOquery.FieldByName('e').AsString; if ADOquery.FieldByName('f').AsBoolean then myexcel.cells(i + 2, 6) :='''是' else myexcel.cells(i + 2, 7) := '''否';//显示为数字 DataModule1.xmdata.next;end;
 
多人接受答案了。
 
后退
顶部