[リストへもどる]   [VBレスキュー(花ちゃん)]
一括表示

投稿時間:2006/07/31(Mon) 10:48
投稿者名:hide
Eメール:
URL :
タイトル:
VBのADOでAddNewの処理を行いたい
PostgreSQL初心者です。データベースのレコードを追加する時、
Ms-Accessで記述していた以下のイメージで処理を試みましたが、

---ソースのイメージ---
Set cn = CreateObject("ADODB.Connection")
cn.Open "dsn=PostgreSQL_02;uid=;pwd="
cn.CursorLocation = 3

Set rs = New ADODB.Recordset
rs.Open "testm", cn, adOpenKeyset, adLockOptimistic
rs.AddNew
rs!キー = "きー"
rs!データ1 = 1
rs!データ2 = 2
rs!データ3 = 3
rs.Update
rs.Close

Set rs = Nothing
cn.Close
---

PostgreSQLでは、
「 実行時エラー:80004005
 ERROR:Syntax error at or near "testm"
error while executing the query 」
とエラーになってしまいます。

PostgreSQLでAddNewやUPDATEはどの様に行うのでしょうか?
参考のHPでもかまいません教えて下さい。

投稿時間:2006/08/01(Tue) 13:43
投稿者名:neptune
Eメール:
URL :
タイトル:
Re: VBのADOでAddNewの処理を行いたい
PostgreSQL知りませんが、
> PostgreSQLでは、
> 「 実行時エラー:80004005
>  ERROR:Syntax error at or near "testm"
> error while executing the query 」
> とエラーになってしまいます。
とエラーになる通り、初期エラーですよね。
まずは接続の仕方から勉強しましょう。

> PostgreSQLでAddNewやUPDATEはどの様に行うのでしょうか?
> 参考のHPでもかまいません教えて下さい。
なぜ自分でググらないのでしょうか?不思議だ。

googleで「PostgreSQL ADO 接続」をキーワードで検索したら山のようにヒットしますよ。

投稿時間:2006/08/01(Tue) 16:23
投稿者名:hide
Eメール:
URL :
タイトル:
Re^2: VBのADOでAddNewの処理を行いたい
回答ありがとうございます。説明が簡単すぎたようですみません。

> とエラーになる通り、初期エラーですよね。
> まずは接続の仕方から勉強しましょう。
DBの接続でエラーが出るのではなく、AddNewを使用するために
レコードオープンを行う必要があるのですが、レコードオープンをしたときに
エラーが出力されます。
単純なSQLでの処理ならばDB接続のみでいいみたいでレコードを
オープンする必要もなく動作も問題ありませんでした。

> googleで「PostgreSQL ADO 接続」をキーワードで検索したら山のようにヒットしますよ。
何度も検索しましたがPostgreSQLでAddNewを使用している所がわかりませんでした。

投稿時間:2006/08/01(Tue) 16:33
投稿者名:黒麹
Eメール:
URL :
タイトル:
Re: VBのADOでAddNewの処理を行いたい
こんな感じで使っています。お役に立てれば。

Option Explicit

'テーブル作成
'CREATE TABLE testm
'(
'  "キー" int NOT NULL,
'  "データ1" int,
'  "データ2" int,
'  "データ3" int,
'  CONSTRAINT testm_pkey PRIMARY KEY (キー)
')

Private Sub Command1_Click()

    Dim strCon As String
    Dim strSql As String
    Dim Cn As ADODB.Connection
    Dim Rs As ADODB.Recordset
    
    Set Cn = New ADODB.Connection
    Set Rs = New ADODB.Recordset
    
'   Windows版 PostgreSQL 8.1.3 付属のODBCドライバを使用
'   8.1.4 にはUnicode対応のドライバは添付されていないようです。
'
'   サーバー名:localhost
'   データベース名:dbtest
'   UID、Pass等環境に合わせて変更してください。
'
'    strCon = "DRIVER={PostgreSQL ANSI};DATABASE=dbtest;SERVER=localhost;PORT=5432;UID=postgres"
'    strCon = "DRIVER={PostgreSQL Unicode};DATABASE=dbtest;SERVER=localhost;PORT=5432;UID=postgres"
    strCon = "DRIVER={PostgreSQL Japan};DATABASE=dbtest;SERVER=localhost;PORT=5432;UID=postgres"

    Cn.Open strCon

    '有り得ないレコードを抽出し、0行のレコードセットを生成する。
    
    strSql = "select * from testm where キー = -1;"
    Rs.Open strSql, Cn, adOpenKeyset, adLockOptimistic

    Rs.AddNew
    Rs!キー = 1
    Rs!データ1 = 1
    Rs!データ2 = 2
    Rs!データ3 = 3
    
    Rs.Update
  
    Rs.Close
    
    Set Rs = Nothing
    
    Cn.Close
    Set Cn = Nothing

End Sub

投稿時間:2006/08/01(Tue) 17:23
投稿者名:hide
Eメール:
URL :
タイトル:
有り難うございました
ご教示いただきました、ロジック参考にさせて頂きました。

動作確認した所正常に動作いたしました。

今回は本当に有り難うございました、大変助かりました。m(_ _)m