• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:大変苦しい説明ですが、これで精一杯です。)

VBとACCESSを使った伝票作成方法

このQ&Aのポイント
  • VBとACCESSを使用して伝票作成を行っています。利用環境はWindows Me、Visual Basic 6.0 Pro、ACCESS 2000です。伝票番号と商品コードと数量の情報を入力すると、商品名と金額が表示されます。
  • 伝票番号ごとに行番号と入力した商品コードと数量が出力されますが、現在のプログラムでは順番通りに出力されません。一つの伝票番号につき入力した行数分が一度に出力されるようなプログラムを教えていただきたいです。
  • Grid1のrowsやrow、rowselをFor文で反復していく方法を試しましたが、うまくいきませんでした。どのようなプログラムを行えば一つの伝票番号につき入力した行数分が一度に出力されるか、教えていただけないでしょうか?

質問者が選んだベストアンサー

  • ベストアンサー
  • bin-chan
  • ベストアンサー率33% (1403/4213)
回答No.2

すみません。ご質問内容を読み間違えてました。 ご質問の中に以下の2点が「問題点」として記述されていると思います。 > 入力した通りに出力されず、行番号昇順で順々に一行ずつ出力されます。 > 一つの伝票番号[10001]分丸ごと一遍に、行番号[1,2,3,…]と出力させるには しかし上記の記述は矛盾しているようですね。 通常、このようなご質問の場合は以下のようなものと思います。 「Insertした順に表示されてしまう。行番号の昇順にするにはどうすれば良いか?」 それで「order by が必要」としたのですが、 Insert順に表示したいのであれば、「order by」を記述しないでください。 「クエリを記述して」としたのはACCESS側のクエリで作成しておいて VB6のGridコントロールのDataSourceへ記述すれば済むように思ったからです。 select 行番号,商品コード,数量 from 注文詳細伝票テーブル where 伝票番号="10001"; (行番号順なら where 伝票番号="10001" order by 行番号; です) あらかじめACCESS側でクエリを作成し、結果確認できたものを指定すれば 苦労しなくて済むと思います。

noname#12942
質問者

補足

>通常、このようなご質問の場合は以下のようなものと思います。 >「Insertした順に表示されてしまう。行番号の昇順にするにはどうすれば良いか?」 …質問の仕方がまずかったようで… insertした時点では、一行ずつ保存しているカタチになっています。 が、出力する場合は3行文の入力を一遍に出力したいのです。 一応、伝票を作っているので…。 ACCESSでクエリを作成してから、コピーすれば手っ取り早い事は、私も知ってはいるのですが、 "(プログラム上では)一行ずつ保存した同じ伝票番号を、一気に出力"したいのです。 >「クエリを記述して」としたのはACCESS側のクエリで作成しておいて >VB6のGridコントロールのDataSourceへ記述すれば済むように思ったからです。 私はVB初心者故、こちらの意味がよくわかりません。 自分が初心者故に、"わからんわからん"を連呼し、bin-chanさん他色々な方に甘えてしまっていて、情けなく思っている今日この頃です。 どうかよろしくお願いします。

その他の回答 (1)

  • bin-chan
  • ベストアンサー率33% (1403/4213)
回答No.1

Gridは何を使用されていますか? Sourceでどうやってデータを取得しているんでしょうか? テーブルから直接取得しているなら、クエリーを記述しておけば解決しそうな気がします。 order by 行番号; の記述がありますか?

noname#12942
質問者

補足

>Gridは何を使用されていますか? MSFlexGrid >order by 行番号; の記述がありますか? あります。 こちらに↓失敗コードを記述します。 mySQL = "select * from 注文伝票詳細テーブル order by 伝票番号,行番号 asc" Set ds_syousai = db.OpenRecordset(mySQL, dbOpenSnapshot) If ds_syousai.EOF Then '省略します。 Else For j = 1 To Grid1.Row Text1.Text = ds_syousai.Fields("伝票番号") Grid1.Row = j Grid1.Col = 0 Grid1.Text = ds_syousai.Fields("行番号") Grid1.Col = 1 Grid1.Text = ds_syousai.Fields("商品コード") Grid1.Col = 3 Grid1.Text = ds_syousai.Fields("数量") Next j End If 全部左揃えになってしまい、大変読みづらいプログラムになってしまいました。 こちらでなんとかお願いします。

関連するQ&A