こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

解決済みの質問

Access ADO RecordSetについて質問です。

Access ADO RecordSetについて質問です。
Openイベントでフォームにレコードセットを挿入しています。
その際のフォームにはレコードセットをコントロールソースとしてテキストボックスが10個ほどあります。

しかし、テキストボックスを修正しようとしても、入力が出来ません。
レコードセットの作り方が悪いのか、フォームがおかしいのかわかりません。

流れとしては、帳票フォームより、単票フォームを呼び出し、IDでSQLを発行し、レコードセットを挿入しています。
その単票フォームは修正フォームとして更新したいのですが、入力が出来ず困っています。
詳しい方や同じ事で悩んだ方のアドバイスよろしくお願いいたします。

Private Sub Form_Open(Cancel As Integer)
Call SetRecordSet("SELECT * FROM T_Agent WHERE ID =" & Me.OpenArgs, Me)
End Sub

Public BackEndCn As ADODB.Connection
Public BackEndRs As ADODB.Recordset

Public Sub SetRecordSet(strSQL As String, FormName As Form)
Set BackEndCn = New ADODB.Connection
Set BackEndRs = New ADODB.Recordset

BackEndCn.ConnectionString = DbPass
BackEndCn.Open
BackEndRs.Open strSQL, BackEndCn, adOpenKeyset, adLockOptimistic
Set FormName.Recordset = BackEndRs

BackEndRs.Close: Set BackEndRs = Nothing
BackEndCn.Close: Set BackEndCn = Nothing
End Sub

投稿日時 - 2010-04-20 18:34:34

QNo.5839543

すぐに回答ほしいです

質問者が選んだベストアンサー

>Recordsetオブジェクトが参照のみということは、
>テキストボックスにフィールドのValueをコピーして
>入れておく方法になるのでしょうか?

そうですね。2002以降ではRecordsetオブジェクト
をフォームのプロパティに入れて更新できますが、
2000では読み取りのみに限定されます。したがって、
値をコピーし、更新は更新クエリで更新する、というのが
2000での方法になります。

随分以前のものですが、以下のようなAccess2000での
ADOの限界について記したサイトがあります。
http://www.int21.co.jp/pcdn/vb/noriolib/vbmag/9910/db_solu/

2000でのADO接続に関するマイクロソフトのメッセージ
http://support.microsoft.com/kb/227053/

2000以外に関して
http://support.microsoft.com/kb/281998/ja

投稿日時 - 2010-04-21 18:43:24

お礼

ありがとうございます。
リンクも多く載せていただいて、大変参考になりました。

少し手間はかかりますが、レコードセットの書くフィールド
をコピーすることで、対応しました。

ありがとうございました。m(__)m

投稿日時 - 2010-04-24 08:38:11

このQ&Aは役に立ちましたか?

4人が「このQ&Aが役に立った」と投票しています

回答(2)

ANo.1

Access2002以降なら可能ですが、2000ではフォームの
RecordsetプロパティにADOのRecordsetオブジェクト
を入れても参照のみになります。
MSDataShapeおよびSQLServer OLEDBプロバイダから
開かれていれば可能なはずです。その場合は
コードを書き換える必要があります。

投稿日時 - 2010-04-21 02:44:46

お礼

ありがとうございます。

Recordsetオブジェクトが参照のみということは、
テキストボックスにフィールドのValueをコピーして
入れておく方法になるのでしょうか?

OLEDBについてはもう少し調べさせていただきます。
m(_ _)m

投稿日時 - 2010-04-21 07:27:39

あなたにオススメの質問