1

バックエンドで MS SQL 2008 にリンクされている MS Access 2010 アプリケーションがあります。

アプリケーションを実行すると、実行時エラー「2467」が発生します - 入力した式は、閉じられているか存在しないオブジェクトを参照しています。

[デバッグ] を選択すると、行は次を指します。

Forms!FRM_MAIN_HOME!FRM_SUB_EDIT.Form.RecordSource =

SSMS でクエリを実行しましたが、正常に動作します。

不足している参照を探しましたが、何もありません。

フォームを表示するために Shift を使用してアプリケーションを実行すると、別のエラーが発生します: 基準式のデータ型が一致しません。今回はデバッグ オプションはありませんが、これが本当の問題だと思います。

もう 1 つ: このアプリケーションを別のデータベースで実行すると、エラーなしで読み込まれます。

どんな助けでも大歓迎です。

ありがとう。


Forms!FRM_MAIN_HOME!FRM_SUB_EDIT.Form.RecordSource = _
   "SELECT V.VendorNumber, V.VendorName, T.DocumentNumber, " _
   & "T.DocumentDate, T.AmountInc, T.GSTClaim, T.GSTBatch " _
   & "FROM TBL_VENDOR_MASTER AS V INNER JOIN TBL_GST_01_TRANSACTIONS AS T " _ 
   & "ON V.AAVendorID = T.AAVendorID WHERE T.GSTBatch =" _
   & Me.BATCH_NUM & " ORDER BY V.VendorName" 

このコードを SSMS で実行すると、問題なく動作します。また、別のデータベースを選択すると、エラーなく動作します。

4

2 に答える 2

0

間違ったイベントでこれを実行していることは間違いありません。Open イベントを使用して、フォーム上のコントロールを参照することはできません。サブフォームのレコードソースを動的に設定している理由がわかりません。

レコードソースは次のとおりです。

SELECT V.VendorNumber, 
       V.VendorName,
       T.DocumentNumber,
       T.DocumentDate, 
       T.AmountInc,
       T.GSTClaim,
       T.GSTBatch 
FROM TBL_VENDOR_MASTER AS V 
INNER JOIN TBL_GST_01_TRANSACTIONS AS T 
ON V.AAVendorID = T.AAVendorID 
ORDER BY V.VendorName

次のようにリンク フィールドを設定する必要があります。

Link child field : GSTBatch
Link master field : BATCH_NUM 
于 2012-08-27T11:03:31.107 に答える
0

この問題は、テーブルが非常に大きい (そして私のマシンは最速ではない) ため、いくつかのメモリの問題に関連しているようですが、MS Access の実行中に表示されるエラー メッセージ (フィールドをクリックするたびに、タブ、または実際には何でも、デバッグオプションがないだけで同じエラーが発生します)、私が持っているテーブルに関連しており、MS Access は私が持っていたフィールドの 1 つを好きではありませんでした。

このエラーのトラブルシューティングを行うために、古いバックアップをロードし、いくつかの列を更新し、問題が見つかるまで MS Access のテストを開始しました。また、いくつかのインデックスを追加し、レジストリで ODBC のデフォルトのタイムアウトを 0 (無制限) に変更しました。

それはこの問題を解決するように見えました。

于 2012-09-06T05:18:03.253 に答える