2

ACCESS データベース (バックエンド) を SQL Server 2008 データベースにインポートしました。私のフロントエンドはまだ ACCESS 2007 で、バックエンドは SQL Server 2008 です。私が気付いたのは、(特定のレコードで) フォームを開いてから、いくつかのテキスト フィールドに入力するはずの計算を行う場合です。そのフォーム (そのレコード) で自動的に、それらのテキスト フィールドの値はその時点では入力されません。ここで、フォームを閉じて同じレコードを再度開くと、値が表示されます。ですから、遅延のようなものがあり、それが他のことが起こらないようにしています。誰かがこれについて私に手を差し伸べることができますか?ODBC ドライバー SQL Server と SQL Server Native Client 10.0 を試しましたが、どれも機能しませんでした。

どうもありがとうございました

4

2 に答える 2

1

サーバー バックエンドでは、フォームを最新の状態に保つために Access に支援が必要です。まず、すべてのテーブルには主キーが必要です (適切に設計されたテーブルには主キーがありませんが、これは Jet で正常に機能し、SQL Server やその他の ODBC バックエンドにアップサイズすると機能しなくなる可能性があります)。次に、タイムスタンプ フィールドをすべての SQL Server テーブルに追加することをお勧めします。これにより、レコード内のすべてのフィールドを評価しなくても、レコードが更新されたかどうかを Access が知ることができるからです。これにより、余分な作業を行うことなく、Access でフォームの表示バッファーを更新することもできます。

于 2009-07-07T02:01:34.130 に答える
1

フォーム内のほとんどの機能は、ローカル テーブルまたは SQL Server にリンクされたテーブルを使用する場合と同じように機能します。

ただし、ここでの重要な違いの 1 つは、追加モードでフォーム内の情報の編集を開始した場合でも、プライマリ キーがローカル フォームに即時に追加されることです。これは、何らかのルックアップ、おそらくサブ フォーム、または主キーの使用に基づくその他の式がある場合、これらの表示は、MS Access のローカル エディションを実行しているときに入力を開始すると即座に更新されることを意味します。

ただし、リンクされたテーブルを SQL サーバーに使用する場合、レコードが実際に保存されるまで自動採番の主キー ID は生成されません。したがって、これらの式が情報の表示に主キーを使用および依存しているかどうかを確認する必要があります。

上記が問題である場合は、おそらく、ユーザー共通のデータを入力するコントロールの 1 つで、ディスク書き込みを強制します (したがって、プライマリ キーの生成を強制します)。

したがって、入力する主要なテキストボックス (フィールド) の「更新後」イベントでは、次のようなディスク書き込みを強制できます。

If isnull(me!id) = true then
   ‘ we have no primary key, force a disk write
   If me.Dirty = false then
      Me.Dirty = true
   End if
End if

どのような種類の式が機能していないかについて、拡張して詳細を提供することをお勧めします。ただし、主キーがどの時点で作成され、フォーム上の他の式で使用できるようになるかという点で、上記の最も大きな違いがあります。

于 2009-07-07T01:28:36.397 に答える