with DM.OraSQL1 do
        begin
          SQL.Text:='Insert Into YJGZ(xh,jh,sjrq,gjmc,gjgg,sjcw,gjsd) Values(:xh,:jh,:sjrq,:gjmc,:gjgg,:sjcw,:gjsd)';
          ParambyName('xh').AsInteger:=xh1;
          ParambyName('jh').AsString:=Trim(jh1);
          ParambyName('rq').AsDate:=StrtoDate(rq1);
          ParambyName('mc').AsString:=Trim(mc1);
          ParambyName('gg').AsString:=Trim(gg1);
          ParambyName('cw').AsString:=Trim(cw1);
          ParambyName('sd').AsFloat:=sd2;
          Execute;
        end;其中jh,rq两个字段是关键字,连接的是Oracle数据库,上面的代码怎么能改成是一句SQL语句。
例如:
with DM.OraSQL1 do
begin
sql.text:='insert into yjgz ...';
execute;
end;
.....
还有
with DM.OraSQL1 do
begin
sql.text:='Update yjgz set ... where jh='''+jh+''' and rq='''+rq+'''';
execute;
end;
我没写过一句的,不知道是什么语法,知道的能赐教下吗?谢谢。

解决方案 »

  1.   


    with DM.OraSQL1 do begin
      SQL.Text := Format('Insert Into YJGZ(xh,jh,sjrq,gjmc,gjgg,sjcw,gjsd) Valus(%d,''%s'',cdate(%s),''%s'',''%s'',''%s'',%f)', [xh1,Trim(jh1),rq1,Trim(mc1),Trim(gg1),Trim(cw1),sd2]);
      Execute;
    end;
      

  2.   


    上面有一处错误:cdate(%s)---->应该改为cdate(''%s'')Oracle不熟悉....CDate()可能用得不对,或许是TO_DATE()?这个楼主再确认下。
      

  3.   

    SQL.Text:='Update yjgz set xh='''+xh1+''',jh='''+jh1+''',sjrq=to_date('''+sjrq1+''',''yyyy-mm-dd''),gjmc='''+gjmc1+''',gjgg='''+gjgg1+''',sjcw='''+sjcw1+''',gjsd='''+gjsd1+''' where jh='''+jh1+''' and sjrq=to_date('''+sjrq1+''',''yyyy-mm-dd'')'
      

  4.   


    with DM.OraSQL1 do begin
      SQL.Text := Format('Insert Into YJGZ(xh,jh,sjrq,gjmc,gjgg,sjcw,gjsd) Valus(%d,''%s'',to_date(''%s'',''yyyy-mm-dd''),''%s'',''%s'',''%s'',%f)', [xh1,Trim(jh1),rq1,Trim(mc1),Trim(gg1),Trim(cw1),sd2]);
      Execute;
    end;
    {楼主短信让用Format函数改写。其实我不懂Oracle,只有照着3楼内容来改。请楼主自己测试}
    {其实楼主可以网上搜一下Format函数用法,很常用的一个函数}
      

  5.   


    with DM.orasql1 do
    begin
      sql.text:=format('update yjgz set xh=%d,jh=''%s'',sjrq=to_date(%s),gjmc=''%s'',gjgg=''%s'',sjcw=''%s'',gjsd=%f',[xh1,Trim(jh1),sjrq1,Trim(gjmc1),Trim(gjgg1),Trim(sjcw1),gjsd2]);
      execute;
    end;
      

  6.   

    谢谢,我试试。我上面的也写错了吧。
    sjrq=to_date(%s,''yyyy-mm-dd'')
      

  7.   


    哦,楼主短信是要把这个Update句用Format函数改写SQL.Text:='Update yjgz set xh='''+xh1+''',jh='''+jh1+''',sjrq=to_date('''+sjrq1+''',''yyyy-mm-dd''),gjmc='''+gjmc1+''',gjgg='''+gjgg1+''',sjcw='''+sjcw1+''',gjsd='''+gjsd1+''' where jh='''+jh1+''' and sjrq=to_date('''+sjrq1+''',''yyyy-mm-dd'')'with DM.OraSQL1 do begin
      SQL.Text := Format('Update yjgz set xh=''%s'',jh=''%s'',sjrq=to_date(''%s'',''yyyy-mm-dd''),gjmc=''%s'',gjgg=''%s'',sjcw=''%s'',gjsd=%f where jh=''%s'' and sjrq=to_date(''%s'',''yyyy-mm-dd'')', [xh1,jh1,sjrq1,gjmc1,gjgg1,sjcw1,gjsd1,jh1,sjrq1]);
      Execute;
    end;
      

  8.   

    我在程序里试了,出的错误提示:missing Value Keyword.
    是不是找不到关键字?
    俺的关键字是jh,sjrq.
      

  9.   


    SQL.Text := Format('Insert Into yjgz(jh,sjrq,xh,yjgzrq,gjmc,gjgg,sjcw,gjsd) Values(''%s'',to_date(''%s'',''yyyy-mm-dd''),''%d'',to_date(''%s'',''yyyy-mm-dd''),''%s'',''%s'',''%s'',''%f'')', [Trim(jh1),sjrq1,xh1,yjgzrq1,Trim(gjmc1),Trim(gjgg1),Trim(sjcw1),gjsd1]);我面对的是ORACLE数据库,这家伙不认"只认''。
    上面的语句测试通过了,谢谢,结贴了。