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

.NETの初心者です。

只今、.NETで売上の実績表を作ろうとしています。
SQL Serverに店舗No.や売上額などのデータが入ったテーブルから取り出し、図の様に作りたいのですが「FOR」「While」を使ってもうまくいきません。

店舗NO.を1から順番にループし、その店舗NO.がデータにあればエクセルに書き込む、なければ次の番号へといった処理をしたいのですが、どうすれば良いのでしょうか?

漠然とし分かりづらい質問で申し訳ありませんが、ヒントやアドバイスを頂けたら幸いです。
ご教授の程宜しくお願いします。

「VB.NETについて」の質問画像

A 回答 (1件)

老婆心ながら。




「SQL Serverにあるデータを集計処理してExcelブックに書きこむ」という処理を、

For や While という反復処理のキーワードが魔法のようにやるというわけではありません。


次のような流れですね。

SQL Server  … (A) RDBだからSQLで操作。テーブル、レコードとかフィールドとか。
 |      … (B) ADO.NET、ADO、ODBC など
VB.NET    … (C) アルゴリズム
 |      … (D) OLE(COM)、ブックではなくCSVならファイルの読み書き
Excel ブック … (E) Excel、CSV?

画像では (E) の最終形しか示されてませんが、まず (A) のテーブル構造がわからないと、(C) のロジック(あなたがいう For とか While の部分)の指針を示しようがないですね。また、具体的なコードを示そうとしても、(B)がどういった方式かわからないので、コードの示しようがないです。また、(E) はブックといってますが、(D) の方式がわからないし、(E) はほんとうにブックでしょうか?CSVのテキストファイルではないですか?


さて。
(A) が一般的な正規化をされていて、(B)がADO.NET、(D) がOLE、(E) がブックだとすると、

(A) は 売上ID、店舗名、商品名、売上高 だとすれば、

(C) では、店舗名、商品名、売上高を順に並べ替えて DataSetを取得しましょう。このとき、店舗名、商品名をキーにして、売上高で合計してあればよいですが、SQLは割愛します。

並べ替えられ、集計されたDataSetが取得できたならば、あとはブックに順にはめていくだけです。

VB.NET で OLE で Excel を新しくひらくときは、以下。

Dim xlBooks As Excel.Workbooks = xlApp.Workbooks
Dim xlBook As Excel.Workbook = xlBooks.Add
Dim xlSheets As Excel.Sheets = xlBook.Worksheets

そうすると、xlSheets 変数に、ワークシートの参照ができるから、Range や Cells プロパティで座標を指定してはめていけばよいでしょう。

DataSetが複数行に対して、Excel一列になりますから、For は列を中心にするとわかりやすいかな。列を固定して、DataSetが、同一店舗で、商品名が前のレコードと違えば、セルの行を次へ。店舗、商品名の両方がちがえば、For は つぎのループをまわしてください。


お悩みなのは、典型的なキーブレイクの処理です。
まず、方式を明らかにしましょう。これが明らかになったなら、どこにどういう値が入らなければならないかという現象(I/O)を理解したうえ、順次、判断、繰り返しを用いたフローチャートを書くこと。一生懸命考えてください。
キーワードがなにかすべてをやってくれるわけではないですよ。


がんばってください。
 
 
    • good
    • 0
この回答へのお礼

分かりづらい質問の中で回答をして下さってありがとうございます。

方式などは書いて下さった通りです。また方式等をしっかりと理解し、考えていこうと思います。

お礼日時:2011/02/02 08:13

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