数据读取错误

qlonsh 2008-03-03 03:50:59
我TADOQUERY(ADOQueChA)组件读取数据库时,当有个记录值为空时,出现提示错误,说不把把空值转换为字符,请问怎么解决这个问题啊
procedure TFrmNumeralTV.ShowChanNum; ////窗体显示时,频道分类标题同步显示
var
i:integer;
str1,str2:string;
begin
for i:=1 to 8 do
begin
With ADOQueCha do
begin
close;
SQL.Clear;
SQL.Add('select ParentKind from Chanel where ParentKindID=:ID');
parameters.ParamByName('ID').Value:=i;
open;

STR1:=LEFTSTR(ADOQueChA.FieldValues['ParentKind'],3); //出现错误提示:不能把NULL转换为字符(STRING)
Case i of
1: LabTitle1.Caption:=STR1;
2: LabTitle2.Caption:=STR1;
3: LabTitle3.Caption:=STR1;
4: LabTitle4.Caption:=STR1;
5: LabTitle5.Caption:=STR1;
6: LabTitle6.Caption:=STR1;
7: LabTitle7.Caption:=STR1;
8: LabTitle8.Caption:=STR1;
end;
STR2:=ADOQueChA.FieldValues['ParentKind']; //显示完整的标题
Case i of
1: LabTitle1.Hint:=STR2;
2: LabTitle2.Hint:=STR2;
3: LabTitle3.Hint:=STR2;
4: LabTitle4.Hint:=STR2;
5: LabTitle5.Hint:=STR2;
6: LabTitle6.Hint:=STR2;
7: LabTitle7.Hint:=STR2;
8: LabTitle8.Hint:=STR2;
end;
end;
end;

end;
...全文
71 5 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
xjjrocker 2008-03-03
  • 打赏
  • 举报
回复
用ISNUll的函数判断就可以了.
delphiboy_lwb 2008-03-03
  • 打赏
  • 举报
回复
STR1:=LEFTSTR(ADOQueChA.FieldValues['ParentKind'],3); //出现错误提示:不能把NULL转换为字符(STRING)

因为读取的字符串为Null所以执行LeftStr时错误

改为
Str1:= ADOQueChA.FieldValues['ParentKind']
if Trim(Str1)< 3 then Continue;
Ascn 2008-03-03
  • 打赏
  • 举报
回复
晕,那就先判断一下:

if VarIsNull(ADOQueChA.FieldValues['ParentKind']) then
Str1 := ''
else
Str1 := LeftStr(ADOQueChA.FieldValues['ParentKind'], 3);
qlonsh 2008-03-03
  • 打赏
  • 举报
回复
还是不行啊,错误为Invalid variant operation
Ascn 2008-03-03
  • 打赏
  • 举报
回复
楼主试试改成这样:
STR1:=LEFTSTR(ADOQueChA.FieldByName('ParentKind').AsString,3);

因为我没遇到过这个问题,而我一直是这样取值的,所以我觉得这样应该能解决楼主的问题。

5,928

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 开发及应用
社区管理员
  • VCL组件开发及应用社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧