如何从TDBLookupComboBox获取数据?(100分)

  • 主题发起人 主题发起人 wangjyy
  • 开始时间 开始时间
W

wangjyy

Unregistered / Unconfirmed
GUEST, unregistred user!
我想用TDBLookupComboBox从一个表中获取一个字段的值,可在调用过程中出现了一个错误:
问题描述:
用TDBLookupComboBox列出表_Table1中的所有ID(int,4)的值,通过TDBLookupComboBox控件写到另一个表_Table2字段ID(int,4)字段中,
代码如下:
我使用的是ADO连接SQL SERVER 2000 数据库
ADOTable1.FieldByName('id').AsInteger :=StrToInt(DBLookupComboBox.Text);
程序在运行时,从表_Table1的ID中选择一个数据往表_Table2的ID中写的时候,
程序提示 "" is not a valid integer value.
请问如何处理?

2、我往表中写日期型数据时,遇到如下问题,
表_Table1中的CreateDate(datetime,8)字段,该字段不为空,我用TEDIT向表中写数据
ADOTable1.Open;
ADOTable1.Insert;
ADOTable1.FieldByName('CreateDate').AsDateTime := StrToDateTime(edit1.text);
ADOTable1.Post;
可程序运行时出现如下提示:
无法将NULL值插入列"CreateDate",该列不允许空值,INSERT失败,请问这是怎么一回事?
 
1.DBLookupComboBox.KeyValue
但你的问题出在StrToInt(),里面的参数如果不是一个合法数值的话,就会出错。
你最好检查你的数据。
还有一个方法是直接用Table1.ParamByName().AsInteger直接从数据源读出数据。

2。如果Edit1.Text的值不是一个正确的日期格式,strtodatetime返回一个Null
 
第一个问题:
假如:tdblookupcombobox的数据源是从query1中来
那么:ADOTable1.FieldByName('id').AsInteger :=query1.fieldbyname('id').asinteger;
试一下
第二个问题:
你不是说CREATEDATE字段是不为空的么,那么NULL当然无法插入了,要不就是我理解错了

 
1.,TDBLookupComboBox的用法不是你这样用的,你需要设置她的listsource,keyfield,listfield,
datafield,datasource,具体用法可以看看帮助!
2.StrToDateTime(edit1.text),出现在这里,你没有转化成功,最好直接用一个DateTime控件,
 
来晚了:)
TDBLookupComboBox控件一般用 KeyValue 属性取得数据值的,是一个整数。
如果你的表中字短字义为整数那就不必用这个控件了。
 
后退
顶部