2016-11-17 82 views
0

私は今朝まで数年間よくうまくいっているデータベースを持っています。リモートテーブルの内容をローカルバックエンドにコピーしようとすると、「エラー3622 - dbSeeChangesオプションを使用する必要があります...」というメッセージが表示されます。MSAccess - dbSeeChangesエラー?

リモートテーブルはサーバー上にありますオートナンバー型属性を持つバックエンドテーブルは、自動ナンバリングデータ型を気にせず、単にナンバーとして定義されている単純な読み取り専用/静的スナップショットです。テーブル(スナップショット)がパフォーマンス上の懸案事項である必要があります。

dbSeeChanges変数を正常に追加しましたが、db.execute行(下記)の「パラメータが少なすぎます」と不平を言います。ここで

は私のDBからいくつかの詳細は以下のとおりです。私は

Dim db As Database 
dim strSQL as string 
Set db = CurrentDb() 

strSQL = "INSERT INTO Item " & _ 
    "SELECT dbo_Item.* " & _ 
    "FROM dbo_Item " & _ 
    "WHERE dbo_Item.MASTER_INVID= " & TempVars!my_InvID 

    db.Execute strSQL, dbFailOnError + dbSeeChanges 

何をしないのですか?回避する/訂正するための提案。これを行うには

+0

私はあなたのSQL文字列で起こって何かがあると思います。実行前に 'Debug.Print'します。 「動的SQLをVBAでデバッグする方法」(http://stackoverflow.com/questions/418960/managing-and-debugging-sql-queries-in-ms-access/1099570#1099570) – Andre

+0

debug.printはきれいに見えます: INSERT INTO項目SELECT dbo_Item。* FROM dbo_Item WHERE dbo_Item.MASTER_INVID = 4892 –

+1

@Andre - そこに何かがあるかもしれません!その「Master_InvID」attrがデータモデルの一部ではない間違ったサーバーに接続されました。そのattrは、私が接続していた場所から下流に作成されます。 - ありがとう! –

答えて

1

もう一つの方法は、ローカルテーブルにそれをひそかリンクテーブルのコピーを作成することです。

localTableName = "Item" 
DoCmd.CopyObject , localTableName , acTable, "dbo_Item" 
DoCmd.SelectObject acTable, localTableName , True 
RunCommand acCmdConvertLinkedTableToLocal 
+0

興味深いことに、私は 'acCmdConvertLinkedTableToLocal'について聞いたことがありませんでした。 ODBCリンクテーブルでも、Accessデータベースからリンクされたテーブルに対してのみ機能しますか? – Andre

+0

はい、SQLサーバーなどのODBCソースからも機能します。 – ClintB

関連する問題