Form1に条件を入力し 標準モジュールでレコードセットオブジェクトを開き それをForm2で表示したいのですが
「この操作を実行するために接続を使用できません。このコンテキストで閉じているかあるいは無効です。」
というエラーが出ます。
どうすればいいでしょうか?
・標準モジュール
Public Function rsSYAIN()
Set rs1 = New ADODB.Recordset
rs1.CursorLocation = adUseClient
strsql = "SELECT * FROM SYAIN WHERE iSyainNo BETWEEN " & Form1.Text1.Text & " AND " & Form1.Text2.Text & ""
rs1.Open strsql, cn, adOpenStatic, adLockOptimistic
End Function
cnはOpenしていますか?
>cnはOpenしていますか?
cnは 標準モジュールの方ではなくて Form_Loadの方で開いているのですが それでは駄目なのでしょうか?
Formに書かれているとか、標準モジュールに書かれているとかじゃなくて、
問題は、cnを使うとき、cnが生存していてcnがOpenされているか…ということなのでは?
>cnは 標準モジュールの方ではなくて Form_Loadの方で開いているのですが それでは駄目なのでしょうか?
「このコンテキストで閉じているかあるいは無効です。」
ということは、駄目なんでしょうね?
Form_Loadの方で開いた後、閉じていませんか?
どうでもいいけど 掲示板おかしくないですか?
一応 レコードセットオブジェクトを開けるようになったのですが
Form側で Callで呼び出しても ①のところで
「オブジェクト変数または With ブロック変数が設定されていません」
というエラーが出ます。
・標準モジュール
Public Function cnSYAIN()
Set cn = New ADODB.Connection
cn.ConnectionString = "Provider = Microsoft.Jet.OLEDB.4.0;" & "Data Source = M:KENSYUUDB_VB.mdb"
cn.Open
End Function
Public Function rsSYAIN()
Set rs1 = New ADODB.Recordset
rs1.CursorLocation = adUseClient
strsql = "SELECT * FROM SYAIN WHERE iSyainNo BETWEEN " & Form1.Text1.Text & " AND " & Form1.Text2.Text & ""
rs1.Open strsql, cn, adOpenStatic, adLockOptimistic
End Function
・Form
Private Function chkErr() As Boolean
Call rsSYAIN
If Text1.Text = "" Then '社員番号が空白の場合
〜
〜
〜
ElseIf IsNumeric(Text1.Text) And IsNumeric(Text2.Text) Then
If rs1.RecordCount > 0 Then・・・① '該当データがある場合
Form2.Show
Form1.Enabled = False
〜
〜
〜
End Function
cn rs1の変数はどこで定義していますか?
>cn rs1の変数はどこで定義していますか?
標準モジュールです。
自己解決しました。
>>自己解決しました。
だけで済ませるくらいなら質問しないでくれるかな
それじゃ何の情報も残らないよ
問題の解決で恩恵を受けた人が、問題・解決・参照リンクなどを簡潔に記述し、
まとめとして投稿しましょう。
情報を送ってくれた人たちへのお礼も大事ですけれど、
もっと大事なのは掲示板を支えている人々への情報のフィードバックです。
そうすれば同じようなトラブルが起きたときの助けとなります。
そしてまとめの掲示することによって、
あなたは、掲示板から恩恵を受ける(take)立場から、貢献する(give)立場に変わるのです。
ギブ・アンド・テイク(give & take)、これがコミュニティを支えます。
ツイート | ![]() |