procedure TForm1.DBGridEh1DblClick(Sender: TObject);
var
  s_id:integer;
begin
  //edit1.Text:=dbgrideh1.DataSource.DataSet.Fields[0].Text;
  s_id := strtoint(dbgrideh1.DataSource.DataSet.Fields[0].Text);
  with adoquery2 do
      begin
         close;
         sql.Clear;         sql.Add('select p_id,s_o_serial,st_id,');
         sql.Add('to_char(c_time,''yyyy-mm-dd hh:mi:ss'') 受理时间,');
         sql.Add('to_char(f_time,''yyyy-mm-dd hh:mi:ss'') 归档时间 ');
         sql.Add('from e.o_p_order WHERE p_id=s_id');
         //oracle数据库里p_id字段是数字型的,请问上一句正确的写法是怎样的?谢谢!!!!!!
         open;
         screen.Cursor:=crarrow;
       end;end;

解决方案 »

  1.   

    我是想双击DBGridEh1后取得p_id的值,然后,执行另一sql语句,发现sql.Add('from e.o_p_order WHERE p_id=s_id');
    的写法有问题,现在不知道正确写法是什么,请高手指教,谢谢!
      

  2.   

    sql.text := 'select .............. where p_id=' + IntToStr(s_id);
      

  3.   

    var
      str: string;
    begin
      str:= 'my num is %d';
      str := Format(str,[0]);
    ShowMessage(str);
    end;
      

  4.   

    你好,p_id是数字型的,我已经用strtoint转换成数字型了,怎么又要转换成字符串呢?
      

  5.   

    因为Sql.text最后是个字符串,所以要转。传给服务器的就是一个语句(字符串)