• ベストアンサー

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を介してテーブルにデータを入れていました。 アップサイジングする前は、問題なかったのですが、どういったことが原因になりますでしょうか?

質問者が選んだベストアンサー

  • ベストアンサー
  • KHSSSK
  • ベストアンサー率76% (13/17)
回答No.3

書き忘れました。 テーブルに主キーが設定されていないと Access側からレコードの更新はできません。

con014057
質問者

お礼

テーブルに主キーを設定後に書き込めるようになりました。 本当にありがとうございます。

その他の回答 (2)

  • KHSSSK
  • ベストアンサー率76% (13/17)
回答No.2

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 最後はクローズしてメモリーを解放しておきましょう。

con014057
質問者

お礼

daoというのはもう古いんですね.... adoに書き換えて試してみます。 ありがとうございます。

  • yorozu_ya
  • ベストアンサー率54% (76/140)
回答No.1

どんなエラーになりますか?

con014057
質問者

お礼

情報が少なく、申し訳ありませんでした。 access2007 sql server2005に接続しています。 エラーですが... 実行時エラー 3027 データベースまたはオブジェクトは読み取り専用なので、更新できません。 以上のようなエラーがでます。 テーブルのリンクを,sqlserverではなく,通常に戻したら上記のようなエラーは出ずに,テーブルにデータを入力することは可能でした。 アドバイス、よろしくお願いいたします。

con014057
質問者

補足

rs.addnewの箇所でエラーになります。