アプリ版:「スタンプのみでお礼する」機能のリリースについて

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

A 回答 (1件)

Q_Data の定義に問題があると思います。


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

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

この回答への補足

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

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

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

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

補足日時:2013/08/30 11:23
    • good
    • 1

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

関連するカテゴリからQ&Aを探す