你这个得到的是字符串
begin
  combobox1.items.add(query1.fieldbyname('dw_id').asstring
    +'  '+query1.fieldbyname('dwmc').asstring);
  query1.next;
end;
而这个要求的是整型值能不出错吗?
sql.add('select * from table2 where dw_id=:dw_id');
  parambyname('dw_id').asinteger:=
    strtoint(trim(copy(combobox1,1,pos(' ',combobox1.text))));

解决方案 »

  1.   

    哦这样啊,那请问一下我在选择combobox里的内容的时候
    怎么样在combobox里显示dw_id
      

  2.   

    strtoint(trim(copy(combobox1,1,pos(' ',combobox1.text))));
    出错原因就在这句。
    当你pos返回-1时,也就是,没有‘  ’,strtoint('')肯定会出错
    即使pos返回不是-1,如果‘ ‘前的字符串不能转化为一个数字的话,也会出错
      

  3.   

    是啊我知道问题的解决方案了,但是
    还有一个没回答阿?就是
    怎么样在选择一个内容后,在combobo里只显示dw_id呢
      

  4.   

    text:=copy(combobox1,pos(' ',combobox1.text),99)
      

  5.   

    错了
      text:=copy(combobox1,1,pos(' ',combobox1.text))
    conbobox的style应为csDropDown
      

  6.   

    1)但是如果我在这个里直接输入dw_id查询
    然后得到纪录,为什么输入一个没有的dw_id就出错呢,请问怎么解决
    parambyname('dw_id').asinteger:=
        strtoint(trim(copy(combobox1,1,pos(' ',combobox1.text))));
    combobox1.text若沒有空格,那麼返回-1;再copy;再StrToInt是肯定有錯誤的
    StrToIntdef能屏蔽,不過我不知道你為甚麼把所有“dw_id,dwmc”显示在combobox里?,所以後來這個:
    2)
    还有怎么样在选择一个内容后,在combobo里只显示dw_id呢
    我也就不知你是何意思
      

  7.   

    为什么输入一个没有的dw_id就出错呢:
    用Try..except就可以屏掉
     
    在combobo里只显示dw_idcombobox1.items.add(query1.fieldbyname('dw_id').asstring
        +'  '+query1.fieldbyname('dwmc').asstring);
    改为:
    combobox1.items.add(query1.fieldbyname('dw_id').asstring
        );
      

  8.   

    strtoint(trim(copy(combobox1,1,pos(' ',combobox1.text))));
    出错原因就在这句。
    当你pos返回-1时,也就是,没有‘  ’,strtoint('')肯定会出错
    即使pos返回不是-1,如果‘ ‘前的字符串不能转化为一个数字的话,也会出错
    同意