2020年9月21日月曜日

VBA 実行時エラーに悩まされる

久々にExcelのVBAプログラムを書いている。

VBAからPythonに開発言語が変わると噂有って久しいが、未だVBAである。
簡易的でとっつきやすいという印象があるが、割と難しい。

今回ADOを使用した、SQLServerと連携した処理を書いているのであるが、取得したRecordSetへの値代入のところで、次のエラーが発生。

> 実行時エラー '-2147217887 (80040e21) '
> 複数ステップの操作でエラーが発生しました。各状態の値を確認して下さい

なるほど、、、よくわからん。
調べて見る限り、RecordSet取得の際に指定するロックの指定の仕方がよろしくないとの回答有ったが、方法を変更しても結果変わらず。

調査して内容を読めば読むほど訳がわからなくなったのだが、色々試しているうちに、少ない文字数であれば、エラーが出ないことが確認できた。

結果的に、テーブル項目設定の方法の部分で、nvarchar(10)となっていた部分に、11文字を格納しようとしていた為に発生したエラーだった。。。

テーブルの項目の文字数を確認していなかった自分が悪いのではあるが、もう少しわかりやすい内容のエラーメッセージを出して欲しいものだ。

上記が解決し、やっと次に進めるかと思っていたが、すぐにレコードセットを閉じる際に、以下のエラーが発生。

> 実行時エラー 3219
> このコンテキストで操作は許可されていません。

これまた、意味が分からん。
これも感で、レコードセットに対して何らかの操作をしたあとに、Updateメソッドを実行せずに、レコードセットを閉じようとしていたので、Updateコマンドを実行した後に閉じるようにしたらでなくなった。

仮組みの状態で、ほぼ知識なしに実装しているので、今後の事を考えるとちょっとしんどいなと思ってしましった。

ただ、今更ながら言語としては楽しい部類だとは思うので、今後極めて行ければと思う。

0 件のコメント:

コメントを投稿