dポイントプレゼントキャンペーン実施中!

お世話になります。

現在、Visual Basic 6.0 にて 開発をおこなっております。

下記内容で DBからデータを取得し、スプレッドシート(GrapeCity社の製品)に
データを表示させる必要があるのですが、
実現方法がよくわからず、非常に困っています。

・スプレッドシートに取得データを表示する際、
すべての行において データがNULLの列に関しては、
その列自体を表示せず、その次の列を前につめて表示させる

まず、上記を実現しようとする場合、
1. データ取得時のSQL文にて、上記内容を満たすようなデータを
取得する
2. 全レコードを取得後、Visual Basic側で構造体に格納した各列の値を
保持した変数の中身をひとつひとつNULLかどうかチェックをする

の2つの方法を考えているのですが、1回で条件を満たすようなSQL文が
作成可能なのかどうかも、まだはっきりしていません。

また、上記1、2のどちらがより良い方法なのかも、よくわかりません。
(あるいは、それ以外の方法があれば、それをぜひ知りたいのですが、)

どなたか、大変申し訳ないのですが、ご教授願えますか?

A 回答 (3件)

そのデータを1回のSQLで取得するのは不可能に近いと思います。


現実的なやり方としては、
一旦普通に取得したレコードセットを1件ずつ読み、
NULL判定をしながら配列もしくは構造体に入れる方法になるでしょう。
そして出来上がった配列もしくは構造体を基に、
スプレッドに値を出力していけば良いでしょう。
    • good
    • 0

where条件で「”すべての列がNullのもの”ではない行」を書くのでは駄目ですか?



where not (列1 is null and 列2 is null ・・・ and 列n is null)
状況に応じて、andで他の条件加えてください。
    • good
    • 0

別解:



最初に、全レコードの集計を求めるSQLを投げて、
その結果から、Null以外のフィールドだけを対象にSQLを組む。
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

関連するカテゴリからQ&Aを探す