我在想在用一个存储过程实现如下功能:我在一个EDIT1中输入内容:色号(关键字),该存储过程就帮了查找出相应的唯一条记录出来.并用EDIT2显示出这条记录中其中一个字段的内容.比如是客户色号语句如下:
1\adostoredproc1.Parameters.ParamByName('@色号').Value:=edit1.Text;
2\adostoredproc1.Active:=true;
3\adostoredproc1.Prepared:=true;
4\adostoredproc1.Open;
5\edit2.Text:=adostoredproc1.Parameters.ParamValues['@客户色号'];但总是提示
CAN'T CONVERT VARIANT OF TYPE (NULL) INTO TYPE(STRING)
我明白是类型是转换错误,但我不知道错在哪里?还有一个很奇怪的问题
其实第五行中
我是想用书上的写的(我参考书上的)
edit2.text:=adostoredproc1.Parameters.Parambyname('@客户色号').value;
但按照DELPHI7系统的圆点提示,PARAMETERS根本没有PARAMBYNAME这个属性,但为什么本本书都讲可以的,是不是书本讲错了.
还有一点,也是不明白的,如果我不用第五行,代码完全是可以运行,可以找出记录的,但运行一次只能查找一个记录,再在EDIT1中输入第二个色号查找时,显示记录的GRID1,显示的还是第一次查找的记录,是什么问题呢?我用上的REFRESH运行就出现错误

解决方案 »

  1.   

    你的表中存在NULL值,把空值删除掉就好了
      

  2.   

    delphi 不识别null值,
    存储过程中用函数处理一下,isnull(fielda,'')
      

  3.   

    field里含有null用isnull(field,'0')
      

  4.   

    @色号不能为空最好不要用REFRESH
    用:
      .close;
      .open;
      

  5.   

    to pokemonFK() 
    不能连续查找的问题根据你的提示解决了,请帮我看看其它的问题
      

  6.   

    运行到这一句时显示错误
    edit2.Text:=adostoredproc1.Parameters.ParamValues['@客户色号'];
    CAN'T CONVERT VARIANT OF TYPE (NULL) INTO TYPE(STRING)