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所有的資料,如果今天有一筆不興增就出錯的感覺)
兩個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所有的資料,如果今天有一筆不興增就出錯的感覺)
2、query2是2个表的关联,它的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;
但已經都有給他值了??
2.建議用sql語句去delete...
您只的用SQL去刪
是只將SQL移到程式中
比如說
sql1='delete from aaa where(條件敘述)'query2.sql.add(sql);類示這樣嗎??
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
謝謝您提供我寫法
讓我了解到要怎麼用FOR去抓QUERY的資料
但他依舊停住不動,我猜想是不是因為DELECT的關係(本人純粹猜想)另外在請問,如果我把要新增的移到另外一個DBGRID呢??
就是當N變Y,的時候,請問他該怎麼顯示再另一個DBGRID?