![](http://oshiete.xgoo.jp/images/v2/pc/qa/question_title.png?e8efa67)
A 回答 (2件)
- 最新から表示
- 回答順に表示
No.2
- 回答日時:
エラー3662は、IDENTITY列(主キーがオートナンバー型)を持つSQL Serverテーブルにアクセスする際に、OpenRecordsetでdbSeeChangesを使用する必要があることを示しています。
このエラーを解決するために以下の方法を試してみてください:レコードセットを更新可能なものに変更:IDENTITY列を持つテーブルにアクセスする場合、dbOpenDynasetではなくdbOpenDynaset | dbSeeChangesを使用する必要があります。以下のように修正してみてください:
Set rs = db.OpenRecordset("SELECT * FROM 見積 WHERE 得意先コード = '" & Me.得意先コード & "'", dbOpenDynaset | dbSeeChanges)
レコードセットの型を変更:オートナンバー型の主キーを持つテーブルにアクセスする場合、レコードセットの型を適切に設定することが重要です。dbOpenDynasetではなく、dbOpenTableを使用する方法もあります。以下のように修正してみてください:
Set rs = db.OpenRecordset("見積", dbOpenTable)
これらの修正を試してみてください。エラーが解消されると、SQL Serverテーブル「見積」にアクセスしやすくなるはずです。
No.1
- 回答日時:
エラーの原因は、「得意先コード」オブジェクトに対して.Refreshメソッドを使用しているためです。
Accessのフォームやレポートでは、フィールドの値を更新するために.Refreshメソッドを使うことはできません。代わりに、特定のレコードを更新する場合は、次の手順を試してみてください:
フォームのデータソースを特定のレコードに設定します。
更新したいフィールドに新しい値を代入します。
フォームのレコードを更新します(レコードセットの更新)。
例えば、得意先コードが特定のレコードを識別するキーである場合、以下のようなVBAコードを使用できます:
Private Sub 得意先コード_Enter()
Dim db As DAO.Database
Dim rs As DAO.Recordset
Set db = CurrentDb
Set rs = db.OpenRecordset("SELECT * FROM YourTableName WHERE 得意先コード = '" & Me.得意先コード & "'", dbOpenDynaset)
If Not rs.EOF Then
rs.Edit
' 更新したいフィールドに新しい値を設定
rs!フィールド名 = 新しい値
rs.Update
End If
rs.Close
Set rs = Nothing
Set db = Nothing
End Sub
上記のコードは、特定の得意先コードに関連するレコードを探し、そのレコードを編集して新しい値を設定し、最後に更新します。お使いのAccessデータベースの構造や具体的な要件に合わせてコードを調整してください。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Excel(エクセル) EXCELの外部データ取得ができない 1 2023/03/23 09:03
- Visual Basic(VBA) xmlドキュメントから別拡張子で保存したい 4 2023/09/12 11:08
- Visual Basic(VBA) エクセルVBA 3 2022/06/23 20:00
- Visual Basic(VBA) Excel マクロについての相談 5 2024/03/20 15:02
- Visual Basic(VBA) ACCESS DAO で不要なテーブルのフィールド(列)の削除 4 2022/06/23 12:13
- Visual Basic(VBA) Accessフォームで全レコードを指定のExcelのセルへ転送し印刷する方法について 2 2022/09/08 18:23
- Access(アクセス) Access DAOのExecuteメソッドのオプション(RecordsetOptionEnum)に 1 2022/09/19 07:34
- Visual Basic(VBA) VBAでのMATCH関数 3 2022/10/17 19:06
- Excel(エクセル) 【マクロ】1つのセルから結合されているセルへのコピー貼り付けについて 4 2024/01/28 21:30
- その他(データベース) 更新クエリをリンクデータベーステーブルに実行し実行時エラー3362固有インデックスに重複する値が含ま 1 2022/09/21 11:44
このQ&Aを見た人はこんなQ&Aも見ています
-
性格の違いは生まれた順番で決まる?長男長女・中間子・末っ子・一人っ子の性格の傾向
同じ環境で生まれ育っても、生まれ順で性格は違うものなのだろうか。家庭教育研究家の田宮由美さんに教えてもらった。
-
Excel-VBAのmsgBox()の不思議
Visual Basic(VBA)
-
access2021 メッセージボックスを大きくしたい
Access(アクセス)
-
VBAで大量のファイルをシート名ごとに転記やらいろいろしたい!
Visual Basic(VBA)
-
-
4
Vba 実数および実数タイプの変数について教えてください
Visual Basic(VBA)
-
5
エクセルVBA
Visual Basic(VBA)
-
6
CSVファイルについて質問です。
Excel(エクセル)
-
7
Excel VBA 選択範囲の罫線色の変更プロージャの動作速度の改善について
Visual Basic(VBA)
-
8
Sub 要具ライフ() ActiveSheet.Cells.Find(what:=TOPゴム")."
Visual Basic(VBA)
-
9
Excel2010で、今の、Excel2021 365のように、関数増やす機能ないですかね?追加で。
Excel(エクセル)
-
10
Excelにてある膨大なデータを管理しています。 そこで、特定の市町村にのみ色を付けたいです。 Ex
Excel(エクセル)
-
11
VBA SaveChanges 上書きされない
Visual Basic(VBA)
-
12
自動入力で今月はMONTH(TODAY())で良いのですが、翌月はどのようにすれば良いでしょうか。
Excel(エクセル)
-
13
VBA レジストリの値の読み方について教えてください
Visual Basic(VBA)
-
14
access2021 更新前に処理をしたい
Access(アクセス)
-
15
VBA一覧取得 再投稿
Visual Basic(VBA)
-
16
エクセルで上位バイトのセルと下位バイトのセルを1つのセルにして16進数を作る方法
Excel(エクセル)
-
17
職場の人から聞かれており、こんなことができるか教えて下さい。 vbaとかはできません。。 下記リスト
Excel(エクセル)
-
18
Excelデータをコピペして、ペースト先データを編集するとコピー元のlデータも編集されてしまう。
Excel(エクセル)
-
19
エクセルのハイパーリンクがうまく機能しない
Excel(エクセル)
-
20
Excelで、10000,20000,30000と表示されているのですが、時々10000,20000
Excel(エクセル)
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
IF文、条件分岐の整理方法
-
フィルターかけた後、重複を除...
-
Exel VBA 別ブックから該当デ...
-
access2003 クエリSQL文に...
-
JavaScriptの定数名が取り消し...
-
1日に1人がこなせるプログラム...
-
JANコードとPOSコードは同じ?
-
sinカーブの表示のさせ方
-
ホワイトノイズの生成コードに...
-
C# コードビハインドについて
-
ExcelVBAで「Shift_JIS(MS932)...
-
SQL
-
CheckBoxのコントロール配列に...
-
VBでシーケンサと通信。
-
COBOLの文法
-
ASCIIコードを文字に変換したい
-
Nullの使い方が不正です。
-
Javaの改行について
-
ペンダントライトのコードの色...
-
文字コード変換(Unicode To KS...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
フィルターかけた後、重複を除...
-
1、Rstudioで回帰直線を求める...
-
1日に1人がこなせるプログラム...
-
access2003 クエリSQL文に...
-
エクセルVBAコードで教えて下さ...
-
Exel VBA 別ブックから該当デ...
-
JavaScriptの定数名が取り消し...
-
COBOLの文法
-
access2021 VBA メソッドまたは...
-
PreviewKeyDownイベントが2回...
-
JANコードとPOSコードは同じ?
-
過剰なオブジェクト指向脳から...
-
特定行の背景色を変えたいのですが
-
ACCESSユニオンクエリでORDER B...
-
変数名「cur」について
-
Nullの使い方が不正です。
-
◾️Excel VBA 統合について Cons...
-
欠番の抽出について
-
VBA リストボックス(複数条件...
-
ACCESSで、履歴事項を管理する...
おすすめ情報
hectopascal 様
丁寧なご回答ありがとうございます。
いただいたレコードにコードを入力した際エラーが発生してしまいました。
実行エラー3662:
IDENTITY列を持つSQLServerテーブルにアクセスする場合
OpenRecordsetでdbSeeChangesを使用する必要があります。
エラーがついた場所
Set rs = db.OpenRecordset("SELECT * FROM 見積 WHERE 得意先コード = '" & Me.得意先コード & "'", dbOpenDynaset)
今回テーブルとして使う「見積」の主キーが「オートナンバー型」であることが原因だと思いますがどのように変更すればよいでしょうか?
hectopascal 様
丁寧なご回答ありがとうございます。
型によってコードを変えるのはとても大切ですね..........。
いただいたレコードにコードを入力した際再びエラーが発生してしまいました。
Set rs = db.OpenRecordset("SELECT * FROM 見積 WHERE 得意先コード = '" & Me.得意先コード & "'", dbOpenDynaset | dbSeeChanges)
→コンパイルエラー:
構文エラー:
Set rs = db.OpenRecordset("見積", dbOpenTable)
→実行エラー 3219
無効な処理です。
どちらも変更したレコードにエラー線がありました。
エラーが発生せず実行するのは厳しいでしょうか?