こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

締切り済みの質問

パススルークエリの使い方について

パススルークエリーを使って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には加工ができないのでしょうか? 追加、更新ごとにパススルーを新たに作成する必要があるのでしょうか? ご指導をお待ちしております。

投稿日時 - 2013-08-30 09:06:30

QNo.8241853

困ってます

このQ&Aは役に立ちましたか?

3人が「このQ&Aが役に立った」と投票しています

回答(1)

ANo.1

Q_Data の定義に問題があると思います。
キーが1対1になっているクエリーは読み取り、更新とも可能ですが、
1対多ならば読み取りのみ可能となります。

Select * from Q_Data
でレコードの重複がないかどうかを確認してください。
 

投稿日時 - 2013-08-30 09:21:34

補足

早速のご返事有難うございます。Q_Data のパススルークエリーのプロパティ―には下記の接続文字ほか、レコード表示、ログメッセージ、ODBCタイムアウト、方向、サブデーターシートの高さ、等の表示はありますが、「定義」らしきものが見当たりません。SQL Server上のデーターベースにはテーブルは一つだけです。

ODBC;DSN=****;UID=sa;PWD=****;DATABASE=****

どのようにすれば、定義など確認できるのでしょうか? 

管理ツールのDSNの設定では「ポートを動的に決定する」にチェックが入っています。

投稿日時 - 2013-08-30 11:23:27

あなたにオススメの質問