我用了三個控件,DBGrid,DBNavigator,ADOQuery,都設置在同一個數據源,datasource。
ADOQuery寫了一個插入數據的代碼和一個顯示數據的方法:
with ADOQuery1 do
begin
ADOQuery1.close;
ADOQuery2.Close;
ADOQuery1.SQL.Clear;
ADOQuery1.SQL.Add('insert into xginfomation values');
ADOQuery1.SQL.Add('('''+bname+''','''+bcard+''','''+bsex+''','''+bportment+''','''+bphe+''','''+bpostid+''','''+xaddress+''','''+bpwd+''','''+bcardid+''')');
ADOQuery1.ExecSQL;
showmessage('用戶信息輸入成功!');
DBNavigator1.Refresh;
//刷新DBGrid11
with ADOQuery2 do
begin
close;
ADOQuery2.SQL.Clear;
ADOQuery2.SQL.Add('select XGid,XGname,XGcardid,XGsex,XGdepartment,XGphe,p.postXG,XGaddress,cardid from ');
ADOQuery2.SQL.Add('xginfomation xg join post p on xg.XGpostid=p.pid');
ADOQuery2.Open;
end;
begin
//清空輸入的內容
editXGname.Clear;
editcard.Clear;
editphe.Clear;
edtdepartment.Clear;
eidtxgpwd.Clear;
richedit.Clear;
end;
=================================
我使用DBNavigator的刪除功能,程序報錯,提示內容“找不到要跟新的資料列,最好讀取的值已被變更”。確定這個提示框后,
再在sqlserver2000中查詢數據,數據竟然被刪除了好幾行數據。。
各位大哥,大姐門。。幫幫偶。。
ADOQuery寫了一個插入數據的代碼和一個顯示數據的方法:
with ADOQuery1 do
begin
ADOQuery1.close;
ADOQuery2.Close;
ADOQuery1.SQL.Clear;
ADOQuery1.SQL.Add('insert into xginfomation values');
ADOQuery1.SQL.Add('('''+bname+''','''+bcard+''','''+bsex+''','''+bportment+''','''+bphe+''','''+bpostid+''','''+xaddress+''','''+bpwd+''','''+bcardid+''')');
ADOQuery1.ExecSQL;
showmessage('用戶信息輸入成功!');
DBNavigator1.Refresh;
//刷新DBGrid11
with ADOQuery2 do
begin
close;
ADOQuery2.SQL.Clear;
ADOQuery2.SQL.Add('select XGid,XGname,XGcardid,XGsex,XGdepartment,XGphe,p.postXG,XGaddress,cardid from ');
ADOQuery2.SQL.Add('xginfomation xg join post p on xg.XGpostid=p.pid');
ADOQuery2.Open;
end;
begin
//清空輸入的內容
editXGname.Clear;
editcard.Clear;
editphe.Clear;
edtdepartment.Clear;
eidtxgpwd.Clear;
richedit.Clear;
end;
=================================
我使用DBNavigator的刪除功能,程序報錯,提示內容“找不到要跟新的資料列,最好讀取的值已被變更”。確定這個提示框后,
再在sqlserver2000中查詢數據,數據竟然被刪除了好幾行數據。。
各位大哥,大姐門。。幫幫偶。。
如果是删除问题,就不会涉及到DBNavigator的工作失败;
应该是ADOQuery工作失败才对;
你对join得到的TDataSet进行删除;
ADOQuery会根据你的要求,做SQL解析;
而且ADOQuery对于Join表的SQL解析是很不稳定的;
有时候它会只删除Join左表所对应的记录,
有时候它会只删除Join右表所对应的记录,
有时候它会删除Join多个表所对应的记录,
-------------------------------------------------------------------------
建议把你的Inner Join改成Left Outer Join或者是 Right Outer Join;
还要通过SQL事件查看器看看ADOQuery解析的到底是什么SQL;
或者使用MDAC控件!
控件我還是只能用ADOQuery和DBNavigator因為我不會用別的控件,我是新手。
我改sql語句吧。按你方法用Left Outer Join或者是 Right Outer Join;
看下會有什麽結果。
謝謝了。
等下散分給你啊。。
=========================================================
ADOQuery2.SQL.Add('select xg.XGid,xg.XGname,xg.XGcardid,xg.XGsex,xg.XGdepartment,xg.XGphe,p.postXG,xg.XGaddress,xg.cardid from ');
ADOQuery2.SQL.Add('xginfomation xg left outer join post p on xg.XGpostid=p.pid');
=========================================================
還是刪除了好多行,我才點擊了幾下,數據庫的那個表的數據就差不多刪除沒了。
提示的錯誤還是“找不到要跟新的資料列,最好讀取的值已被變更”。
請再看看。謝謝了。
我有啊。我在主表XGinfomation有個主鍵,我定的是自動增長列。
其他的我就不太明白