H
hurryman
Unregistered / Unconfirmed
GUEST, unregistred user!
這個問題讓我搞了一下午﹐腦袋有些不清醒了﹐高手幫幫忙吧。
急!急!急!急!急!急!急!急!急!急!急!急!急!急!急!急!急!急!
明天交任務﹐沒有辦法了。
當我在樹形結構里面選中一個節點后﹕就在qypjtb,qypetb里面過濾出這些數據來。
with utdata.DataModule1 do
begin
qypjtb.Close ;
qypjtb.Filtered :=false ;
qypjtb.Filter :='proj_num='+#39+projnum+#39;
qypjtb.Filtered :=true ;
qypjtb.Open ;
qypetb.Close ;
qypetb.Filtered :=false ;
qypetb.Filter :='proj_num='+#39+projnum+#39;
qypetb.Filtered :=true ;
qypetb.Open ;
end ;
然后顯示在dbgrid1,dbgrid2里面,
dbgrid1的dataset是qypjtb﹐(table)
dbgrid2的dataset是qypetb。(table)
---------------------------------------------------------------------------
當我點一下導航條的添加按鈕的時候,如果開始在dbgrid2上面選擇的是第一條
或最后一條就append﹐如果是中間某條的時候就insert
procedure TForm6.DBNavigator2Click(Sender: TObject; Button: TNavigateBtn);
begin
case button of
nbinsert :
begin
if (datasource1.DataSet.RecNo=1) or (datasource1.DataSet.RecNo=datasource1.DataSet.RecordCount) then
datasource1.DataSet.Append
else
datasource1.DataSet.Insert ;
end;
end;
end;
-----------------------------------------------------------------------------------
procedure TForm6.DBGrid2KeyPress(Sender: TObject; var Key: Char);
begin
IF KEY=#13 THEN
begin
IF dbgrid2.SelectedIndex<2 THEN
dbgrid2.SelectedIndex:=dbgrid2.SelectedIndex+1
ELSE
BEGIN //當在dbgrid2上面回車的時候﹐前三欄的值由用戶手入﹐其它自動錄入。
with dbgrid2.DataSource.DataSet do
begin
if State=dsINSERT then
begin
FieldByName('proj_rate').Value :=100;
FieldByName('proj_allo').Value :=110;
FieldByName('proj_hres').Value :=1000;
fieldbyname('item_num').Value :=copy(fieldbyname('proj_num').AsString,1,5);
fieldbyname('tag').AsString :='Y';
Post ;
end;
end;
end;
end;
end;
這樣 ﹐一條記錄添加到了表里面﹐
----------------------------------------------------------------------------
我遇到這么一個問題﹐比如﹐
當我點一下導航條的添加按鈕的時候,如果開始在dbgrid2上面選擇的是中間某條的時候就insert
﹐但是﹐當我post了以后 ﹐為什么我添加的記錄總顯示在dbgrid2的最后﹐我想要實現的是
我在dbgrid2中間添加以后﹐那條記錄就在那個位置﹐而不要出現在最后一條 ﹐怎么解決﹖
我好著急﹐下午試了半天 ﹐不知道錯在那里了﹐
我用的是delphi+sql server
急!急!急!急!急!急!急!急!急!急!急!急!急!急!急!急!急!急!
明天交任務﹐沒有辦法了。
當我在樹形結構里面選中一個節點后﹕就在qypjtb,qypetb里面過濾出這些數據來。
with utdata.DataModule1 do
begin
qypjtb.Close ;
qypjtb.Filtered :=false ;
qypjtb.Filter :='proj_num='+#39+projnum+#39;
qypjtb.Filtered :=true ;
qypjtb.Open ;
qypetb.Close ;
qypetb.Filtered :=false ;
qypetb.Filter :='proj_num='+#39+projnum+#39;
qypetb.Filtered :=true ;
qypetb.Open ;
end ;
然后顯示在dbgrid1,dbgrid2里面,
dbgrid1的dataset是qypjtb﹐(table)
dbgrid2的dataset是qypetb。(table)
---------------------------------------------------------------------------
當我點一下導航條的添加按鈕的時候,如果開始在dbgrid2上面選擇的是第一條
或最后一條就append﹐如果是中間某條的時候就insert
procedure TForm6.DBNavigator2Click(Sender: TObject; Button: TNavigateBtn);
begin
case button of
nbinsert :
begin
if (datasource1.DataSet.RecNo=1) or (datasource1.DataSet.RecNo=datasource1.DataSet.RecordCount) then
datasource1.DataSet.Append
else
datasource1.DataSet.Insert ;
end;
end;
end;
-----------------------------------------------------------------------------------
procedure TForm6.DBGrid2KeyPress(Sender: TObject; var Key: Char);
begin
IF KEY=#13 THEN
begin
IF dbgrid2.SelectedIndex<2 THEN
dbgrid2.SelectedIndex:=dbgrid2.SelectedIndex+1
ELSE
BEGIN //當在dbgrid2上面回車的時候﹐前三欄的值由用戶手入﹐其它自動錄入。
with dbgrid2.DataSource.DataSet do
begin
if State=dsINSERT then
begin
FieldByName('proj_rate').Value :=100;
FieldByName('proj_allo').Value :=110;
FieldByName('proj_hres').Value :=1000;
fieldbyname('item_num').Value :=copy(fieldbyname('proj_num').AsString,1,5);
fieldbyname('tag').AsString :='Y';
Post ;
end;
end;
end;
end;
end;
這樣 ﹐一條記錄添加到了表里面﹐
----------------------------------------------------------------------------
我遇到這么一個問題﹐比如﹐
當我點一下導航條的添加按鈕的時候,如果開始在dbgrid2上面選擇的是中間某條的時候就insert
﹐但是﹐當我post了以后 ﹐為什么我添加的記錄總顯示在dbgrid2的最后﹐我想要實現的是
我在dbgrid2中間添加以后﹐那條記錄就在那個位置﹐而不要出現在最后一條 ﹐怎么解決﹖
我好著急﹐下午試了半天 ﹐不知道錯在那里了﹐
我用的是delphi+sql server