with query1 do
begin
 close;
  sql.clear;
  sql.add('delete from tablename where youx=true');
  execsql
end;

解决方案 »

  1.   


    记得删除之后pack一下才能真正删除
      

  2.   

    老鱼,不pack有什么后果我从来没想到过要pack.
    这个与vf里头的一样吗?????
    我发现我真是一无所有。
      

  3.   

    with query1 do
    begin
    close;
      sql.clear;
      sql.add('delete from tablename where youx=true');
      execsql
    end;
      

  4.   

    with query1 do
    begin
    close;
      sql.clear;
      sql.add('delete from tablename where youx=true');
      execsql
    end;
      

  5.   

    with query1 do
    begin
    close;
      sql.clear;
      sql.add('delete from tablename where youx=true');
      execsql
    end;
      

  6.   

    TO: highroad(流冰)/各位高手
    我按你的寫法,先在from1中加入了一個Query1控件,然后在Button1Click加入代碼如下:
    procedure TForm1.Button1Click(Sender: TObject);
    begin
      with query1 do
      begin
        close;
        sql.clear;
        sql.add('delete from l_zunpsh.dbf where youx=true');
        execsql
      end;
    end;以上程序在運行中提示錯誤!原因是在當前的路徑下找不到l_zunpsh.dbf表。
    而我又不想在此處指定l_zunpsh.dbf表的絕對路徑。理由如下:
        1. 為了保証本程序有較好的可移植性,我把所有的*.dbf表都放在Data Module中Ttabel內。在
           程序運行時,根據本程序*.exe文件所在的位置為每一個Ttabel指定相對的路徑。
        2. 在DataM.t_l_zunpsh中我已經指定了l_zunpsh.dbf表所在的位置。請問以上程序應該如何修改?
      

  7.   

    你要把提取 xxx.dbf 表的位置写全 才行。
      

  8.   

    可以一条一条记录的删除:
    for i:=0 to DataM.t_l_zunpsh.RecordCount-1 do
    begin
        if DataM.t_l_zunpsh.fieldByName('youx').AsBoolean=True then
            DataM.t_l_zunpsh.Delete;
    end;
      

  9.   

    用函数ExtractFilePath()就可以找到当前你运行的程序的路径
      

  10.   

    详细说明一下函数的写法
    ExtractFilePath(Application.ExeName);
    不用改动,照搬上去就可以了。
      

  11.   

    1. 我在DataM.t_l_zunpsh中我已經指定了l_zunpsh.dbf表所在的位置。而我又不想在此處指定l_zunpsh.dbf表的絕對路徑。請問有沒有辦法使delete from 語句從DataM.t_l_zunpsh中得到l_zunpsh.dbf表的路徑?
    2. 我試過Query1.dataSource屬性可以選為DataM.t_l_zunpsh,請問還有沒有其它的刪除方式?
    3. 有誰試過,一條一條刪除和用delete from語句在速度上哪個快一點?
      

  12.   

    同意 newyj(方恨少;寻找第二把刷子的人)
    with query1 do
    begin
    close;
      sql.clear;
      sql.add('delete from tablename where youx=true');
      execsql
    end; 
    Query要设置DataBase Name 属性!
      

  13.   

    你好myperry,你试试把 .dbf 去掉,看行不行?
      

  14.   

    各位仁兄:能不能看一下下面的帖子,我已经不能再贴了,多谢!
    http://www.csdn.net/expert/topic/330/330632.shtm
      

  15.   

    to: rouyue(月儿)
    如果要用delete from 就必須指定tabelname的路徑,而我不想這樣做,因為在我的程序中tabelname的路徑是不確定的(而且不是*.exe所在的位置),我在每次啟動程序時通過一個參數在datamodule中為tabelname指定路徑,然后每個單元在使用數据庫時直接引用datamodule即可。所以我在這里不想再次指定tabelname的路徑,這是問題的關鍵,請問有沒有辦法能達到刪除的目的?
      

  16.   

    既然启动时已经指定了tablename的路径了,怎么会还找不到数据表的位置呢?
    我又不太明白了
      

  17.   

    to: xiaofeng_cxy(萧风)
    例如: l_zunpsh.dbf在c:\abc下面,我的程序文件在s:\mdir下面,我在每次啟動程序時會用一個參數來告知程序中的Data module單元,l_zunpsh.dbf在c:\abc,在其它的單元中要用到l_zunpsh.dbf中的數据時就引用Data module單元中的對應Ttable對象,一般操作都沒問題。
    現在的問題是我要刪除l_zunpsh.dbf中DataM.t_l_zunpsh.fieldByName('youx').AsBoolean=True;的記錄錄。使用delete語句需要這樣寫:'delete from c:\abc\l_zunpsh.dbf where youx=true'執行絕對沒問題。但是你看清楚了,在這里我們指定了一個絕對路徑c:\abc,如果客戶在使用時將(l_zunpsh.dbf路徑的)參數改為c:\ddff,那我上面的程序在執行時肯定會出錯的!!! 為了保証整套程序有很好的移植性,我們應該允許客戶根据需要來修改相關參數。
      

  18.   

    我試用以下語句時:
      with query1 do
        begin
          sql.clear;
          sql.add('delete from C:\My Documents\delphi\hrpb\data\l_zunpsh.dbf where youx=false');
          execsql
        end;
    提示如下錯誤:
    Invalid use of keyword.
    Token:?
    Line Number:1'.
    請問我錯在那里.
      

  19.   

    我动态创建一个query控件就好了,也不太清楚是什么原因