- 締切済み
パススルークエリの使い方について
パススルークエリーを使ってAccess 2007 から SQL Server 2008 上のデーターに追加したいのですが、パススルークエリーが読取り専用のため何もできません。パススルークエリーは、Microsoft のサポートにあるとおりに作成しました。SQL欄には Select * from T_Data とのみ記述しただけですので、このクエリ (Q_Data) はSQLServer にあるテーブルのすべてを表示しています。 以下のように記述しましたが、何ともなりません。 Private Sub cmd_追加_Click() Dim db As DAO.Database Dim rs As DAO.Recordset Set db = CurrentDb() Set rs = db.OpenRecordset("Q_Data", dbOpenDynaset) rs.AddNew rs!カテゴリー = Me!txt_カテゴリー rs!商品名 = Me!txt_商品名 rs.Update MsgBox ("追加しました") rs.Close: Set rs = Nothing cn.Close: Set cn = Nothing End Sub この場合のQ_Dataには加工ができないのでしょうか? 追加、更新ごとにパススルーを新たに作成する必要があるのでしょうか? ご指導をお待ちしております。
- みんなの回答 (1)
- 専門家の回答
みんなの回答
- Saturn5
- ベストアンサー率45% (2270/4952)
Q_Data の定義に問題があると思います。 キーが1対1になっているクエリーは読み取り、更新とも可能ですが、 1対多ならば読み取りのみ可能となります。 Select * from Q_Data でレコードの重複がないかどうかを確認してください。
補足
早速のご返事有難うございます。Q_Data のパススルークエリーのプロパティ―には下記の接続文字ほか、レコード表示、ログメッセージ、ODBCタイムアウト、方向、サブデーターシートの高さ、等の表示はありますが、「定義」らしきものが見当たりません。SQL Server上のデーターベースにはテーブルは一つだけです。 ODBC;DSN=****;UID=sa;PWD=****;DATABASE=**** どのようにすれば、定義など確認できるのでしょうか? 管理ツールのDSNの設定では「ポートを動的に決定する」にチェックが入っています。