ADOオブジェクトによるアクセスでMoveNext 等が実行できません

解決


ユーリン  2003-05-18 18:28:36  No: 107165  IP: [192.*.*.*]

いつもお世話になっております。
以下の記述で、勘違い、言葉の理解の間違い等があると思いますが、よろしくお願いします。

(A)   http://www.niji.or.jp/home/ashizuka/jikken/vb6.0_02.htm

は、Data Environment デザイナによってコネクションを作り、これをドラッグしたフォームによって MicrosoftAccess97 形式のデータベースにアクセスするコードで、正常に動作しているように見えます。
このプロジェクトを流用して、

(B)   http://www.niji.or.jp/home/ashizuka/jikken/vb6.0_03.htm

を作りました。これはADOオブジェクトによって同データベースにアクセスするものですが、次のふたつの点がおかしいのです。

(1) Form_Unloadのプロシージャで

    rs.Close

というメソッドを発行しているにもかかわらず、毎回最初に rs.Close してやらないと、
−−−−−−−−−−−−−−−−−−−−−−−−−−
3705
オブジェクトが開いている場合は、アプリケーションが要求した操作は許可されません。
−−−−−−−−−−−−−−−−−−−−−−−−−−
というエラーが出ます。また、

(2) 最初に  rs.Close して、デバッグモードで実行すると、正常な流れで実行が行われているようなのに、MoveNext 等のメソッドを実行していないようです。つまり、カレントレコードの移動がまったくできません。しかし、エラーにはなりません。

(2)の不具合に(1)が関係しているのかどうかもわかりませんが、何かおわかりになることがありましたら、お教え下さい。どうかよろしくお願いします。

編集 削除
nanashi  2003-05-18 19:15:45  No: 107166  IP: [192.*.*.*]

Data Environmentは使ったことないので合ってるか分かりませんが、

    Set rs = DataEnvironment42.rscmd顧客名簿

既にこの時点で目的のレコードセットが出来上がっている(開いてる)のではないでしょうか?
もしそうであれば その状態でOpenすれば当然(1)のエラーが出ます。

(2)はrs.Closeで閉じた後、rs.Openで空のレコードセットを開いているので
(OpenメソッドはSQL文やConnectionを指定しないとメモリ上に空のレコードセットを作る)
レコード移動が出来ないんじゃないかと思います。

Form_Loadのrs.Close及びrs.Openを消してみて下さい。

編集 削除
ユーリン  2003-05-19 08:25:15  No: 107167  IP: [192.*.*.*]

nanashi さん、ありがとうございます。

nanashi さんがおっしゃるとおり、Form_Loadのrs.Close及びrs.Openを消してみて、MoveNext 等のメソッドを実行させると、カレントレコードの移動を行おうとします。ただ、項目の表示が変わる際に

Field not updatable, Bound Property Name Text, Field Name: 電話番号

というようなメッセージが表示され、OKをクリックしないと次の項目が変わりません。このとき、表示の変化は下の項目から上の項目へと起こりますが(エラーが出るのでわかるんです)一件目のレコードが

顧客ID:1101
顧客名:技術評論社
郵便番号:160-0005
都道府県:東京都
住所:新宿区愛住町xx-xx
電話番号:03-3225-xxxx

二件目のレコードが

顧客ID:1102
顧客名:かもめ社
郵便番号:140-0022
都道府県:東京都
住所:中野区東五反田xx-xx
電話番号:03-1111-xxxx

だった場合、都道府県以外の項目について、一件目の内容から二件目の内容に変わったあと、

Field not updatable, Bound Property Name Text, Field Name: 電話番号

というメッセージが表示され、OKの応答要求がきます。つまり、変わったのに、変わった後にその項目が not updatable だと言ってくるということになります。また、一件目と二件目の内容が同じ項目については、このエラーは表示されないようです。

HELP が使えない環境ですし、”Field not updatable,”とうい文字列でネット上を検索しましたが、日本語のページはヒットしませんでした。
申し訳ありませんが、何かおわかりになることがありましたら、お教え下さい。どうかよろしくお願いします。

編集 削除
ユーリン  2003-05-21 14:56:11  No: 107168  IP: [192.*.*.*]

最後の問題が解決できませんが、ひとまず、質問を取り下げさせていただきます。
ありがとうございました。

編集 削除