虽然是简单问题,但我实在是查不到...请大家帮我,我只有这些分了.
         //***************把数据库备份出来************************//
         file_source:=trim(s_datadir);
         file_aim:=s_backdir+datetostr(date())+'.mdb';
         file_aim:=trim(file_aim);
         Form4.FileCopy(file_source,file_aim);     //调用dateback中的函数
         T_data.Last;                              //指向表date的最后一行
         id_last:=T_data.fieldbyname('Id').value;  //将表date的最后一行的Id赋给id_last
         T_data.Close;
         id_last:=id_last-row_control;
         Q_temp.Close;
         Q_temp.SQL.Clear;
         Q_temp.SQL.Add('delete from Data where Id<:ss');    //:ss'是什么???
         T_data.Open;
         Q_temp.Params[0].Value:=id_last;                    //将id_last赋给Data where Id<:ss中的第一个变量???
         Q_temp.Prepare;       //创建一个已准备好的查询
         Q_temp.ExecSQL;       //执行sql语句???不反回结果集的查询???
         Q_temp.close;
         T_data.close;请问这个:ss是什么东西啊?为什么加冒号?

解决方案 »

  1.   

    這明顯不是sql server 中的,oracle吧,是一個參數,一般會定義或者是在from界面裏面定義的
      

  2.   

    当然是pascal和sql啊,数据库是msaccess的,这个ss我在程序里都没有找到...
    其实这个程序的另一个子窗体里还有一句:
    Q_temp.SQL.Add('select * from Data where Id>=:ss and TagName=:tag');  //:ss???:tag???
    ss和tag都在程序里找不到.
      

  3.   

    这个是Delphi环境的方法,:ss 表示标识一个变量名称,那么就可以对变量赋值以执行SQL,赋值可以 Q_temp.Params[0].Value:=id_last; 这种对多个变量时,需标对序号数,也可以直接标明变量如: Q_temp.ParamByName('ss').Value :=id_last;
      

  4.   

    对多个变量?楼上的意思是满足Id>=:ss 的变量吧?可是ss这个变量在程序里甚至都没有声明......
    那么'delete from Data where Id<:ss'这句到底删除的到底是id小于什么的记录呢?ss么?
      

  5.   

    LZ 还是看一下Delphi 的基本语法吧.
    Id<:ss  , 通过Q_temp.ParamByName('ss').Value :=id_last;
     对ss变量赋值,比如 id_last 为 1 那么执行的SQL就转换为
     delete from Data where Id<1
      

  6.   

    ...但是就先后顺序来说是删除语句'delete from Data where Id<:ss'在前,赋值语句Q_temp.Params[0].Value:=id_last在后啊,这样也可以么?