-1

TADOConnectionSQL Server に対して2 つの小さな db アプリケーションを実行しています。ADOTable最初の接続は、 、 、Datasourceおよびを使用して表示するためだけのものですDBNavigator。2 番目の接続は、次のコードを使用して実行時に作成されます。

aConnection:=TADOConnection.create(nil);

aTable:= TADOTable.create(nil);
aConnection.LoginPrompt := false;

.....
aTable.Edit;

aTable.Insert;

aTable.FieldByName(' ... ').AsInteger :=  .... ;

aTable.FieldByName(' .... ').AsString :=  ... ;

aTable.FieldByName(' .... ').AsString :=  ..... ;

aTable.Post;

aTable.active := false;

aConnection.connected :=false;

aTable.free;

aConnection.free;

このコードでレコードを挿入すると、Update Navigator ボタンを押しても変更されたデータが表示されません。新しく挿入されたデータをすべて表示するには、アプリケーションを再起動する必要があります。最初の dbconnection が 2 番目の接続で行った変更を認識しないのはなぜですか?

4

2 に答える 2

3

古い Delphi/Adoverions に問題があり、再クエリが正常に行われているにもかかわらず、更新が期待どおりに機能しないという問題があった場合は、これを試してください。

procedure TForm2.DBNavigator1Click(Sender: TObject; Button: TNavigateBtn);
begin
  if Button = nbRefresh then
  BEGIN
    if Assigned(TDBNavigator(Sender).DataSource) then
      if Assigned(TDBNavigator(Sender).DataSource.DataSet) then
        if TDBNavigator(Sender).DataSource.DataSet is TCustomAdoDataset then
          TADODataSet(TDBNavigator(Sender).DataSource.DataSet).Requery;
  END;
end;
于 2013-02-13T00:22:53.417 に答える