ログインしてさらにmixiを楽しもう

コメントを投稿して情報交換!
更新通知を受け取って、最新情報をゲット!

Visual Basic User's Clubコミュの教えてください VB Access  にてループで同レコードを指定数分作成する場合

  • mixiチェック
  • このエントリーをはてなブックマークに追加
はじめまして、とあるお仕事でツールを作っているのですが、やり方に困って検索しているうちに行き着きました。
管理人様、もし、不適切でしたらお手数ですが削除下さい。


AccessでVBで指定した数分、同じレコードをINSERTするマクロを作りたいのですが、
「オブジェクトが閉じている場合は・・・」とエラーが出てしまい、その原因がどうしても見つかりません。
何方かご伝授くださりますと幸いです。

以下、Src全文
========================
Option Compare Database

Private Sub データ追加_Click()
On Error GoTo Err_データ追加_Click

Dim cnn As ADODB.Connection
Dim rec As ADODB.Recordset
Dim strSQL As String
Dim blnOpen As Boolean

Dim i As Integer
Dim j As Integer
Dim k As Integer
j = InputBox("登録するデータ件数を入力して下さい。", "入力件数")
k = Me.管理番号
MsgBox Me.登録内容 + "を登録します", vbOKCancel



For i = 1 To j
MsgBox i, vbOKCancel
blnOpen = False
Set cnn = New ADODB.Connection
Set rec = New ADODB.Recordset
Set cnn = Application.CurrentProject.Connection
strSQL = "INSERT INTO データTBL(管理番号,登録内容) VALUES(" & k & ",'" & Me.登録内容 & "');"

MsgBox strSQL, vbOKCancel
rec.Open strSQL, cnn, adOpenDynamic, adLockReadOnly
If rec.EOF = True Or rec.BOF = True Then
MsgBox "登録できませんでした", vbOKCancel
End If

k = k + 1
' DoCmd.GoToRecord , , acNewRec
Next i


Exit_データ追加_Click:
Exit Sub

Err_データ追加_Click:
MsgBox Err.Description
Resume Exit_データ追加_Click

End Sub


========================
お願いいたします。。

コメント(7)

ループ内に
Set cnn = New ADODB.Connection
があるのも問題ですね。
毎回コネクションのインスタンスを作成する必要はないですね。

エラーの「オブジェクトが閉じている場合は・・・」の原因は、
コネクションのインスタンスは作成しているけど、オープンされていないからですね。
「オブジェクトが閉じている場合は・・・」とエラーが出てしまい・・・・

ということですが、問題は、2つありますね。

ひとつは、ループの内でレコードセットのオープンをしていた
場合、
rec.Open strSQL, cnn, adOpenDynamic, adLockReadOnly

明示的に、レコードセットをクローズしておかなくてはならない
点です。但し、今回の場合は、インサート文を使っているので。
これは、恐らく、エラーとはならないでしょう。

もうひとつは、ループ内部で
Set cnn = New ADODB.Connection
Set rec = New ADODB.Recordset
としている点です。これでは、コネクションもレコードセット
のインスタンスが、重複してしまいます。

よって、ループの外へ出すと良いでしょう。

これで、メッセージが消えるのではないでしょうか。
皆様

色々とアドバイス有り難うございました。
ループの外に出すことと、余計なIF文を消すことで無事に動くようになりました!
大感謝です <(_ _)>
有り難うございました。
シグルドさん、凄いっす(`・ω・´)!
まじ凄いっす(`・ω・´)!

ログインすると、みんなのコメントがもっと見れるよ

mixiユーザー
ログインしてコメントしよう!

Visual Basic User's Club 更新情報

Visual Basic User's Clubのメンバーはこんなコミュニティにも参加しています

星印の数は、共通して参加しているメンバーが多いほど増えます。

人気コミュニティランキング