如下:
          SHIPNO :=ComboBox1.Text;
          query2.Close;
          query2.SQL.Clear;
          QUERY2.SQL.Add('SELECT UW_SHIP.SHIP_KEY,UW_SHIP.SHIP_NO,UW_SHIP.CUSTOMER_ID,UW_SHIP.CUSTOMER,UW_SHIP.CUSTOMER_PO,UW_SHIP_LINES.SHIP_QTY,UW_SHIP_LINES.PART_NO ');
          QUERY2.SQL.Add('FROM UW_SHIP,UW_SHIP_LINES WHERE UW_SHIP.SHIP_KEY=UW_SHIP_LINES.SHIP_KEY  AND UW_SHIP.SHIP_NO=:SHIPNO ');
          QUERY2.SQL.Add('AND UW_SHIP_LINES.PART_NO:=PARTNO1');
          query2.ParamByName('SHIPNO').AsString:=SHIPNO;
          query2.ParamByName('PARTNO1').asString := TRIM(EDIT1.TEXT);
          query2.Open;
          SHIPQTY:=QUERY2.fieldbyname('SHIP_QTY').ASSTRING ;
执行时出现错误如下:

解决方案 »

  1.   

    在sql语句中的参数前要加:  比如   :shipNO
      

  2.   

    在Delphi中写代有参数的SQL语句的格式是FieldName = :Param
    建议楼主将相对固定的SQL语句定义为资源字符串或是常量,如:
    resourcestring
      sSQL = 'Select .. From .. Where Field = ''%s'' AND Field = ''%s'''; //此处使用..代替字段列表,数据表名,Field代表具体的某一字段Query2.Active := False;
    Query2.SQL.Text := Format(sSQL, [Combobox1.Text, Trim(Edit1.Text)]);
    Query2.Active := True;
    .....
      

  3.   

    这个问题也修正.但是SHIPQTY:=QUERY2.fieldbyname('SHIP_QTY').ASSTRING   ;怎么会取不出来值啊.我应该如何修正。
      

  4.   

    你可以先在查询分析器中执行一下你动态拼装的SQL语句,首先确定SQL是能够查询到数据的。
      

  5.   

    建议 用 chris_mao 同志的写法,先确定sql是否取到有值,再来判断为什么取不到值
      

  6.   

    数据能在窗口显示出来.但是用SHIPQTY:=QUERY2.fieldbyname('SHIP_QTY').ASSTRING       ;怎么会取不出来值.