- ベストアンサー
accessからsqlserverにアップサイジングしましたが,テーブ
accessからsqlserverにアップサイジングしましたが,テーブルにデータを入力出来なくなってしまいました。 Dim rs As DAO.Recordset Dim db As DAO.Database Set db = CurrentDb() Set rs = db.OpenRecordset("確認用", dbOpenDynaset) rs.AddNew rs!品番 = Me.品番 rs.Update 上記のようにDAOを介してテーブルにデータを入れていました。 アップサイジングする前は、問題なかったのですが、どういったことが原因になりますでしょうか?
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
書き忘れました。 テーブルに主キーが設定されていないと Access側からレコードの更新はできません。
その他の回答 (2)
- KHSSSK
- ベストアンサー率76% (13/17)
SQLの場合はDAOではなくADOになります。 Dim cn As ADODB.Connection Dim rs As New ADODB.Recordset Set cn = CurrentProject.Connection rs.Open "テーブル名", cn, adOpenStatic, adLockOptimistic レコードの追加 rs.AddNew は同じ形式で可です。 レコードの更新 rs.Edit は不要で rs!列名 = 値: rs.Update または rs.Update "列名", 値 の形式になります。 レコードの検索 rs.FindFirst → rs.Find 以下形式は同じです。 また、直接クエリを発行してレコードセットを作成することも可能です。 Dim cn As ADODB.Connection Dim rs As New ADODB.Recordset Dim MySQL As String MySQL = "SELECT * FROM テーブル名 WHERE 検索条件" Set cn = CurrentProject.Connection rs.Open MySQL, cn, adOpenStatic, adLockOptimistic rs.Close: cn.Close: Set rs = Nothing: Set cn = Nothing 最後はクローズしてメモリーを解放しておきましょう。
お礼
daoというのはもう古いんですね.... adoに書き換えて試してみます。 ありがとうございます。
- yorozu_ya
- ベストアンサー率54% (76/140)
どんなエラーになりますか?
お礼
情報が少なく、申し訳ありませんでした。 access2007 sql server2005に接続しています。 エラーですが... 実行時エラー 3027 データベースまたはオブジェクトは読み取り専用なので、更新できません。 以上のようなエラーがでます。 テーブルのリンクを,sqlserverではなく,通常に戻したら上記のようなエラーは出ずに,テーブルにデータを入力することは可能でした。 アドバイス、よろしくお願いいたします。
補足
rs.addnewの箇所でエラーになります。
お礼
テーブルに主キーを設定後に書き込めるようになりました。 本当にありがとうございます。