- ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:[VB6] 特定カラムのNULLチェックについて)
[VB6] 特定カラムのNULLチェックについて
このQ&Aのポイント
- Visual Basic 6.0にて、データベースからデータを取得し、スプレッドシートに表示する際に、NULLの列を表示せずに前の列を詰めて表示させる方法を教えてください。
- 方法1として、データ取得時のSQL文に条件を加えてデータを取得する方法があります。方法2として、全レコードを取得した後にVisual Basicで各列の値をチェックする方法があります。どちらがより良い方法でしょうか。
- 他にも、NULLチェックを行うための方法があれば教えてください。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
エクセルVBAである列の全行が空白の場合、以右のセル範囲全体を左詰めする方法がある(列削除)。 今はエクセルへのデータを持っていくにはどうしているのか質問に書いてないが、その後の処理で、それを出来なくもない。 列はRangeオブジェクトなのだが、それ全体を削除するのは、エクセルでその操作をしてマクロの記録を採ればエクセルでどういうコードになるか判る。 あとは例えばアクセスなどからエクセルへ入って、そこで簡単な処理をするコード例をGoogleででも勉強のこと。 基本的には前段階(データをエクセルにセットしたあと)で取得したエクセルの各オブジェクト名を、必ず各オブジェクトの限定に使うことである。 開発者グループの一員ならそれぐらい知っている仲間が居るだろう。 SQLで、結果的にあるフィールド全体が空白の場合はそのフィールドを表示しないというSQL文例は見たこと無いが、私が知らないだけの恐れがある。それだけ採り上げて、簡潔に表現して別質問してはどうです。 ADOのようにレコード処理するなら、全レコードを判定して、そのフィールドのすべてのデータが空白なら削除したものを別ファイルとしてアウトプットすることは可能だろう。
その他の回答 (1)
- tossy2011
- ベストアンサー率17% (3/17)
回答No.2
>1回で条件を満たすようなSQL文が >作成可能なのかどうかも、まだはっきりしていません。 使用するSQLも取得条件も分かりませんのでなんとも言えませんが 基本的にはSQL文を工夫するほうが早くなると思います。 ただしSQLの記述の仕方によってはそれほど差が出ないこともあります。 vb側でデータのNULLチェックを行う以外にもデータの整合性チェックなど行いエラー内容を吐き出すなどの処理があるならばvb側でやってもよいと思います。
補足
迅速かつ丁寧なご回答をしていただき、 非常に助かります。 ご説明が不足しており、大変申し訳ないです。 改めてですが、 スプレッドシートとは、 GrapeCity社の製品であるSPREADのシートです。 このシート上へのデータ展開方法については、 製品ヘルプ情報を確認しながら対処します。 SPREADシートへのデータ展開までの流れとしましては、 ORACLEのテーブルからデータを抽出して取得し、それを一旦、 VB側で用意した構造体のメンバに格納しておき、 各メンバに格納されたデータがNULLか否かをひとつずつチェックする方法で 対処するしかないかと、 ご回答いただいた内容をふまえた上で考えております。 やはり、 1回のSQLで条件を満たしたデータを取得し、特に列削除などを まったく意識することなく、単純にデータをスプレッドに展開するだけで良い、 というのは難しそうですね。