代码如下://ado_excel是一个TADODATASET对象,通过它直接访问excel表。
//ado_userdata也是一个TADODATASET对象,通过它访问access数据库,字段'num'是字符型
if dm.ado_excel['主机编号']<>null then
dm.ado_userdata['num']:=dm.ado_excel['主机编号'];现在问题是:当excel表的'主机编号'列的单元格的数据全是数字时,它会当成是数字型。结果
dm.ado_userdata['num']得不到值。所以我想能不能得到 dm.ado_excel['主机编号']的数据类型?如下:if dm.ado_excel['主机编号'] is 数字型 then
dm.ado_userdata['num']:=inttostr(dm.ado_excel['主机编号'])
else
dm.ado_userdata['num']:=dm.ado_excel['主机编号'];这样就不会有数据丢失。请问,如何得到变量的类型?或者有更好的方法?
//ado_userdata也是一个TADODATASET对象,通过它访问access数据库,字段'num'是字符型
if dm.ado_excel['主机编号']<>null then
dm.ado_userdata['num']:=dm.ado_excel['主机编号'];现在问题是:当excel表的'主机编号'列的单元格的数据全是数字时,它会当成是数字型。结果
dm.ado_userdata['num']得不到值。所以我想能不能得到 dm.ado_excel['主机编号']的数据类型?如下:if dm.ado_excel['主机编号'] is 数字型 then
dm.ado_userdata['num']:=inttostr(dm.ado_excel['主机编号'])
else
dm.ado_userdata['num']:=dm.ado_excel['主机编号'];这样就不会有数据丢失。请问,如何得到变量的类型?或者有更好的方法?
解决方案 »
- win98下读取当前正在使用的即插即用设备(U盘)序列号
- 哪个大侠能在delphi使用indy10.2.3的UDP控件传送语音?
- 求关于球面运动的物体碰撞的检测思路
- 多表查询 缺少更新或刷新的健列信息
- 如何在一个登陆窗口中实现新用户的建立并且通过选择不同用户进入一个管理系统
- 这样的dll怎么写呢?
- 谁手里有delphi code arrange expert 感激不尽 [email protected]
- 在DBGgrid中用Return替代TAB的问题?
- 关联表的删除问题
- 哪里有关于各种"消息"的详细资料或帮助?
- TDbgrid的问题
- 急救,如何把array[1..199] of byte转换成string啊
或
if dm.ado_excel.FieldByName('主机编号').FieldType in [ftBCD, ftNumber, ftInteger, ftFloat, ftLongInt, ftSmallInt] then ...
第一种:
if dm.ado_excel['主机编号'] is TNumericField then出现的错误是:
[Error] : Operator not applicable to this operand type第二种:
if (dm.ado_excel['主机编号'].fieldtype) in [ftInteger,ftSmallInt] then出现的错误是:
[Error] : Incompatible types: 'Variant' and 'TFieldType'
if (dm.ado_excel['主机编号'].fieldtype = ftInteger) or
(dm.ado_excel['主机编号'].fieldtype = ftSmallInt) then
if dm.ado_excel.FieldByName('主机编号').Datatype in [ftInteger,ftSmallInt] then
dm.ado_excel['主机编号']会把该列的全部值当成是字符型,这时数字型的数据就会全部丢失,没有赋给
dm.ado_userdata['num'];当dm.ado_excel['主机编号']把列当成数字型时,字符型的数据又会全部丢失。
而至于什么时候当成字符型,什么时候当成数字型,我还没弄清楚。
dm.ado_userdata.FieldByName('num').AsString:=dm.ado_excel.FieldByName('主机编号').AsString;
最好用ADOQuery控件取代ADODataSet。ADODataSet经常会出现一些莫名其妙的问题,或许是我不太会用。
:)