个位老兄看看这是什么错误? ( 积分: 10 )

  • 主题发起人 主题发起人 ruoxi_shuai
  • 开始时间 开始时间
R

ruoxi_shuai

Unregistered / Unconfirmed
GUEST, unregistred user!
Project gzgl.exe raised exceptiong class EVariantTypeCastError with message
'Could not convert of type(Nnll) into type(string)'.Process stopped.Use Step
or run to continue.
以上是程序运行后出现的错误,具体程序是鲜见一个主窗体,由其菜单打开子窗体,子窗体
有一DBGrid和DataSource连接了一个数据模块窗体的ADOTable。
实在不值什么错误,当将ADOTable换成ADOquery是,就没有错误了!奇怪!
 
不知道你代码什么内容阿,不好分析.
 
'Could not convert of type(Nnll) into type(string)'

数据类型转换错误
 
不能將NULL轉換為string類型;看看連接部分
 
procedure TForm1.FormShow(Sender: TObject);
begin
with DataModule2.ADOQuery_GZBM do
begin
Close;
SQL.Clear;
SQL.Add('select * from GZBMK');
Open;
end;
If DataModule2.ADOQuery_GZBM.FieldByName('BMBM').Value = null then
begin
Application.MessageBox('该表数据为空,请向该表中插入数据。','提示',0+64);
BitBtn1.Enabled := False;
BitBtn2.Enabled := False;
BitBtn5.Enabled := False;
BitBtn6.Enabled := False;
BitBtn7.Enabled := False;
end
else
EditValue;
// DisableEdit;
end;
procedure TForm1.EditValue;
begin
if DataModule2.ADOQuery_GZBM.FieldByName('BMBM').Value <> null then
begin
Edit1.Text := DataModule2.ADOQuery_GZBM.FieldByName('BMBM').Value;
Edit2.Text := DataModule2.ADOQuery_GZBM.FieldByName('BMMC').Value;
Edit3.Text := DataModule2.ADOQuery_GZBM.FieldByName('HZBS').Value;
// Edit4.Text:= DataModule2.ADOQuery_GZBM.FieldByName('编号').Value;
end
else
begin
Edit1.Clear;
Edit2.Clear;
Edit3.Clear;
Edit4.Clear;
end;
end;
{procedure TForm1.FindNext;
begin
if FindNextControl(ActiveControl,True,False,False)is TEdit then
if TEdit(FindNextControl(ActiveControl,True,False,False)).Enabled = True then
TEdit(FindNextControl(ActiveControl,True,False,False)).SetFocus
else
begin
ActiveControl := FindNextControl(ActiveControl,True,False,False);
FindNext;
end;
end; }
end.
以上是子窗体的程序代码,就是在子窗体显示时出现的!
 
估计EditValue中赋值出错
每个字段都不空吗
 
程序读到了空值.
解决的办法:1:先判断非空才执行 2:数据库设置默认值.如空字符.注:空值和空字符是两码事.
 
我的库文件是:*.dbf的,我想见了一个数据源d1,驱动程序选的是:driver Microsoft dBase (*.dbf),然后连接,这些步骤应该都对!因为当我试图用adoquery控件作为数据集时
没有出现上述错误,但已改为adotable就老是出现上面我列举的什么类型转换的错误!真郁闷!不知道是怎么回事了,指点一下吧,大哥们!
 
Edit1.Text := DataModule2.ADOQuery_GZBM.FieldByName('BMBM').AsString;
Edit2.Text := DataModule2.ADOQuery_GZBM.FieldByName('BMMC').AsString;
Edit3.Text := DataModule2.ADOQuery_GZBM.FieldByName('HZBS').AsString;
 
我也遇到了同样的问题,有哪位能帮一下我么?
我的程序很简单,窗体上分别放ADOConnection1,ADOTable1,DBGrid1,DataSource1,用的数据库用BDE的database和tabel时没问题。
我在写程序时将ADOTabel1.Active := true,DBGrid显示正确,这时按F9运行时,会报个楼主说的错,继续按F9又可以运行程序。而且这个程序用exe单独运行不会报错。
 
你用的驱动程序不对,应该新安装一个"微软VFP9_OLEDB_Provider数据源",安装后用"Microsoft OLE DB Provider for Visual FoxPro"连接。
 

Similar threads

S
回复
0
查看
3K
SUNSTONE的Delphi笔记
S
S
回复
0
查看
2K
SUNSTONE的Delphi笔记
S
D
回复
0
查看
1K
DelphiTeacher的专栏
D
I
回复
0
查看
970
import
I
后退
顶部