delphi 6
兩個tquery:query1跟query2
一個dbgrid:grid1(顯示query2的資料)
一個dbedit:dbedit1(輸入查詢號碼"a.car1_no")
兩個bitbtn:ok跟insert
query1的SQL為:select * from aaa a
query2的SQL為:select b.no1,b.name1,a.car1_no,a.car1_name from bbb b, aaa a where a.car1_no = b.car1_no當輸入號碼後按下ok, grid1會顯示查詢出來的資料,grid1的最前面會有一個欄位是放"是否要新增"(要新增是Y,不要是N)
點選好要不要新增後,按下insert(程式碼如下)
query2.DisableControls;
query2.First;
while not query1.eof do
begin
   if L2.IndexOf(query2car1_no.value) <> -1 then 
   begin
   Detailsql.Edit;
   query2car1_no.Value := query1car1_no.Value;
   query2cat1_name.Value := query2car1_name.Value;
   query2.next;
   end
   else
   query2.Delete;//這裡如果不新增的話,會跳來這行,我猜想是不是就把所有資料刪掉了,可是如果把這行刪掉~按下離開會出現錯誤訊息,或是在while裡面一直跑跳不出去....   end;
   query2.EnableControls;
end;
query2.EnableControls請問該如何把有點選要新增的資料放入另外一個dbgrid2裡面,然後在做dbgrid2的新增,或是可以把while改成for迴圈,讓他有要新增的放入資料庫沒有的就跳下一筆直到找到要新增的(因為while感覺好像是抓query2所有的資料,如果今天有一筆不興增就出錯的感覺)

解决方案 »

  1.   

    1、本人基本不在query里直接delete,都是发sql删除
    2、query2是2个表的关联,它的delete,可能会有歧义仅供参考
      

  2.   

    那如果用quey2去連結TupdateSQL的delete呢??
    我只是在想~如果把query2.Delete拿掉
    改成next為什麼在後面做
      try
        dbbase.applyupdates([query2,query3]);//query3也有連結另一個updatesql
      except
        MessageDlg(error,mtWarning,[mbok],0);
        Screen.Cursor :=crdefault;
        query3.edit;
        Abort;
      end;他會出現ora-01400,停在dbbase.applyupdates([query2,query3]);說car1_no欄位不可以是nul;
    但已經都有給他值了??
      

  3.   

    1.可以改用for to do...
    2.建議用sql語句去delete...
      

  4.   

    to kye_jufei :
    您只的用SQL去刪
    是只將SQL移到程式中
    比如說
    sql1='delete from aaa where(條件敘述)'query2.sql.add(sql);類示這樣嗎??
      

  5.   

    var 
      i,n :integer;
    query2.DisableControls;
    n := query2.recodecount ;
    query2.Last;
    for i := 0 to n -1 do
    begin 
      if L2.IndexOf(query2car1_no.value) <> -1 then 
      begin
        Detailsql.Edit;
        query2car1_no.Value := query1car1_no.Value;
        query2cat1_name.Value := query2car1_name.Value;
        query2.Prior
      end
      else 
      query2.Delete;   
    end;
    query2.EnableControls
      

  6.   

    to aroc_lo :
    謝謝您提供我寫法
    讓我了解到要怎麼用FOR去抓QUERY的資料
    但他依舊停住不動,我猜想是不是因為DELECT的關係(本人純粹猜想)另外在請問,如果我把要新增的移到另外一個DBGRID呢??
    就是當N變Y,的時候,請問他該怎麼顯示再另一個DBGRID?