質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
PostgreSQL

PostgreSQLはオープンソースのオブジェクトリレーショナルデータベース管理システムです。 Oracle Databaseで使われるPL/SQLを参考に実装されたビルトイン言語で、Windows、 Mac、Linux、UNIX、MSなどいくつものプラットフォームに対応しています。

Access

Accessはマイクロソフトによるリレーショナルデータベース管理システムです。オブジェクト指向のアプリケーション作成に対応しており、テーブルや編集をはじめ、クエリ生成、入力フォーム作成、レポート作成など一通りの機能を備えています。

Q&A

解決済

1回答

1098閲覧

PostgreSQL15 書き込みが出来ない

sake

総合スコア52

PostgreSQL

PostgreSQLはオープンソースのオブジェクトリレーショナルデータベース管理システムです。 Oracle Databaseで使われるPL/SQLを参考に実装されたビルトイン言語で、Windows、 Mac、Linux、UNIX、MSなどいくつものプラットフォームに対応しています。

Access

Accessはマイクロソフトによるリレーショナルデータベース管理システムです。オブジェクト指向のアプリケーション作成に対応しており、テーブルや編集をはじめ、クエリ生成、入力フォーム作成、レポート作成など一通りの機能を備えています。

0グッド

1クリップ

投稿2023/03/22 07:58

Access VBA で PostgreSQL15 に ADO 接続しています。
データベースに書き込みが出来ません。

エラーメッセージ

実行時エラー '2147217887(80040e21)': 複数ステップの OLE DB の操作でエラーが発生しました。 各 OLE DB の状態の値を確認してください。 作業は終了しませんでした。

該当のソースコード

VBA

1Public ADO_TB As New ADODB.Connection 2Dim SE_SET As String 3Dim SQL As String 4Dim TB As New ADODB.Recordset 5 6 SE_SET = "" 7 SE_SET = SE_SET & "Provider=MSDASQL;" 8 SE_SET = SE_SET & "DRIVER=PostgreSQL Unicode;" 9 SE_SET = SE_SET & "SERVER=localhost;" 10 SE_SET = SE_SET & "DATABASE=test;" 11 SE_SET = SE_SET & "UID=postgres;" 12 SE_SET = SE_SET & "PWD=postgre" 13 Set ADO_TB = New ADODB.Connection 14 ADO_TB.CommandTimeout = 300 15 ADO_TB.Open SE_SET 16 17 Set TB = New ADODB.Recordset 18 SQL = "" 19 SQL = SQL & "SELECT tb_test.* " 20 SQL = SQL & "FROM tb_test " 21 SQL = SQL & "WHERE (tb_test.number = '12345')" 22 TB.Open SQL, ADO_TB, adOpenDynamic, adLockOptimistic 23 If TB.EOF = True Then 24 TB.AddNew 25 End If 26 TB!number = "12345" 27 TB!namae = Me!namae 28 TB!tel = Me!tel 29 TB.Update 30 TB.Close 31 Set TB = Nothing 32

試したこと

TB!number = "12345"
の所でエラーが出ます。
以前はPostgreSQL9.5を使用していましたが、問題なく動作していました。
If TB.EOF = True Then
TB.AddNew
End If
ここでは、TB.EOFはTrueでした。
しかし、エラーが出た後に確認するとTB.EOFはFalseになっていました。
データベースからの呼出しは出来ています。
どなたか、お力添えよろしくお願いします。

補足情報(FW/ツールのバージョンなど)

Windows11
Access2019
PostgreSQL15

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

sake

2023/03/22 18:21

コメントありがとうございました。 TB.Openの後にTB.Requeryを実行しましたが駄目でした。 PostgreSQL9.5を長年使ってきました。今までは何の問題もなく使用出来ていました。 PostgreSQL15に変更した途端このようなエラーが出ました。 インターネットで色々調べましたが、PostgreSQLでの新規データの追加は殆どが INSERT コマンドの例ですが、AddNewコマンドは使えないのでしょうか?
logres_Fan

2023/03/22 22:19

テーブルは、number、namae、telで全てですか?その他に何か項目がありますか?
sake

2023/03/23 00:45

質問の文章が長くなるので省略しましたが、全部で50項目ほどあります。
logres_Fan

2023/03/23 01:35

number、namae、telを含む全ての項目に値を代入している。オートナンバーを除き、記載漏れは無い。代入する値は、値の範囲を逸脱していない。Nullがあれば他の値に。0があれば他の値に。 よくわからないし、怪しいところもありますが、この辺りを確認したり、変更したりして改善されますか? 改善されなければ、力及ばずです。すみません。
sake

2023/03/23 02:04

記載漏れに対しての対策はしています。 PostgreSQL9.5では問題なく動作していたプログラムです。 PC についてですが、質問n補足情報にWindows11としていましたが、Windows10でした。 Windows11のPCでは問題なく動作しました。
YT0014

2023/03/23 03:31

PostgreSQL本体とやODBCなど、マイナーバージョンも含めて、Win10とWin11で差異がないか、確認されることをお勧めします。
sake

2023/03/23 04:07

YT0014様へ 適切なアドバイスありがとうございました。 ODBCドライバの問題でした。 最新のODBCドライバをインストールしたら問題が解決しました。
guest

回答1

0

自己解決

最新のODBCドライバをインストールしたら問題が解決しました。

投稿2023/03/23 04:07

sake

総合スコア52

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

YT0014

2023/03/23 04:43

解決して何よりです。 お手数ですが、後進の方々のために、問題があったバージョンと、解決したバージョンを追記していただくことをご検討ください。
sake

2023/03/23 08:43

Windows10 22H2 PostgreSQL15.2 psqlodbc_13_02_0000-x86 psqlodbc_13_02_0000-x64 PCのバージョン・OfficeのバージョンによってPsqlODBCのバージョンを変える必要があります。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問