2010年12月29日水曜日

年末も差し迫った中でADO?にはまってみました。「現在の Recordset は更新をサポートしていません。」

変なところではまってしまった・・・
こんなの知らなかったんだけど。

VB.netで

現在の Recordset は更新をサポートしていません。プロバイダか、選択されたロックタイプの限界の可能性があります。

と言われて、調べてたんだけどわからん。
ロジックはどうなっているのかというと、

dim sWkCd as string = "01"
dim strSQL as string
dim objRS as adodb.recordset 

コネクションうんちゃら・・・・やってSQLにSQLを書いて。
objRS.Open(strSQL, objCon, 3)



ここまでは問題なし。 objRS.Fields("フィード").Valueの値もちゃんと取れている。

dim l_HP = New cls_Holiday(sWkCd, objRS.Fields("フィード").Value)

ちなみに、 cls_Holidayでは新たなデータを取得して、l_HPのプロパティに検索結果をセット。
んだけど、なぜか落ちる!

で、結局、

dim_HP = New cls_Holiday(sWkCd, objRS.Fields("フィード").Value)
この赤字を別の領域に退避してやってみたらすんなりといきやんした。

dim swk as string

swk =objRS.Fields("フィード").Value
dim l_HP = New cls_Holiday(sWkCd, swk )

ってことは、と思ってcls_Holidayのパラメータを確認したら・・・・

ByRefで定義・・・・

ウップス・・・・

0 件のコメント:

コメントを投稿

とある規格化されたコード

世の中こんなもんまで規格化されていますよ、というお話 https://ja.wikipedia.org/wiki/ISO_5218 この辺が大変良くできた、ためになる(?)解説記事です。(長い https://qiita.com/aoshirobo/items/32deb...