• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:データグリッドのセルにtextを表示させる方法?)

データグリッドのセルにテキストを表示させる方法?

このQ&Aのポイント
  • VB6の初心者ですが、「売上管理」を作成しています。
  • 売上伝票のフォーム上に売上明細をデータグリッドで表示していますが、価格のセルに商品台帳の価格を表示させたいです。
  • 今回は商品の定価を覚えていないため、随時入力可能にしたいです。

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

  • ベストアンサー
回答No.2

レスが遅れました。すいません。 VB6のデータグリッドは、データへの直結を行います。 更新作業時に、データグリッドのレコードセットそのものを利用していると、データグリッドに直結している単価を更新するのは当然です。 更新のタイミングで、データグリッドのレコードセットをそのまま利用するのではなく、別途INSERTのSQL文を作成し発行することになると思います。 ソースを見ると >rs!売上伝票番号 = txt売上伝票番号.Text という部分がありますね。画面イメージは以下のような感じですか? 以下の画面イメージを、メモ帳などのテキストエディタにコピペしてください。 ┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┓ ┣━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┫ ┃        《売上伝票明細フォーム》          ┃ ┣━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┫ ┣━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┫ ┃                              ┃ ┃┌────────────────────────────┐┃ ┃│データグリッドエリア                  │┃ ┃├─┬─────┬─────┬─────┬────────┤┃ ┃│行│伝票番号│JAN │価格  │商品名など  │┃ ┃├─┼─────┼─────┼─────┼────────┤┃ ┃│1│0000000001│JAN-000000│   1050│・・・・・・・・│┃ ┃├─┼─────┼─────┼─────┼────────┤┃ ┃│2│0000000002│JAN-000000│  111050│・・・・・・・・│┃ ┃├─┼─────┼─────┼─────┼────────┤┃ ┃│3│0000000003│JAN-AAAAAA│   1051│・・・・・・・・│┃ ┃├─┼─────┼─────┼─────┼────────┤┃ ┃│・│・・・・・│・・・・・│・・・・・│・・・・・・・・│┃ ┃└─┴─────┴─────┴─────┴────────┘┃ ┃                              ┃ ┃                              ┃ ┃ (上記の行を選択すると、テキストエリアにデータが反映)   ┃ ┃ 《仮に『行2』を選択したものとする》           ┃ ┃                              ┃ ┃ 伝票番号 ┌──────┐               ┃ ┃       │0000000002 │               ┃ ┃       └──────┘               ┃ ┃ JAN  ┌──────┐               ┃ ┃       │JAN-000000 │               ┃ ┃       └──────┘               ┃ ┃ 価格   ┌──────┐               ┃ ┃       │   111050│               ┃ ┃       └──────┘               ┃ ┃                              ┃ ┃                              ┃ ┃┌────────────────────────────┐┃ ┃│┌───────┐    ┌─────┐┌─────┐ │┃ ┃││新規入力ボタン│    │確定ボタン││削除ボタン│ │┃ ┃│└───────┘    └─────┘└─────┘ │┃ ┃└────────────────────────────┘┃ ┗━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┛ ※上記のような場合であれば、、、 グリッドの「商品名」は「商品台帳」からの参照表示でOKだと思います。 グリッドの「価格」は、同じJANでも伝票毎に異なるのであれば、「商品台帳」からではなく「売上伝票(明細?)」からになります。 ※上記と異なり、グリッドで直接JANを入力するようであれば、、、 Accessデータベースに、グリッドを表示させるため用の、テンポラリテーブルを用意する必要があります。 とりあえず、最低限 >売上伝票(メイン)、売上明細(サブ)、商品台帳 を利用しているというのであれば、個々のカラムの情報(テーブル構成)を教えてください。

tori123
質問者

お礼

お礼が遅れました。SQLを作成し、出来ました。ありがとうございました。

その他の回答 (1)

回答No.1

※現状の確認 データグリッドをレコードセットの直結で利用し、データグリッド上で直接編集を行っているのですよね? それがそのままアクセスDBに反映されているのですよね? ※実現したい事の確認 編集を行うデータグリッドのセルの売上金額の初期値に、商品台帳の価格を表示したいということですよね? 上記どおりであれば、、、、 これは、売上更新用のグリッドではなく、売上の登録用グリッドですか? 編集には、初期値が関係ないと思うので、、、 もしそうであれば、グリッドで直接編集を行うような、アクセス的な考えを捨てたら良いと思います。

tori123
質問者

補足

早速の回答ありがとうございます。 行いたい事は、回答にある通り、おっしゃる通りです。 テキスト本では、データグリッドに商品番号(私の場合JAN)及び数量のみを入力し(商品名、価格は自動)売上明細を作成するようになっています。  私の場合、価格も手動で入力するようにしました。そこでその価格に初期値が欲しいということです。 テキスト本抜粋(一部改良) Dim rsSub As New ADODB.Recordset Dim mySQL As String mySQL = "SELECT 売上伝票番号,NO,T売上明細.JAN,商品名,バラ単価,価格,数量 " _ & "FROM T売上明細,T商品台帳 " _ & "WHERE ( 売上伝票番号 = " & txt売上伝票番号.Text & " ) " _ & "AND (T売上明細.JAN=T商品台帳.JAN) " rsSub.Source = mySQL rsSub.ActiveConnection = deMain.cnHanbai rsSub.CursorType = adOpenStatic rsSub.LockType = adLockOptimistic rsSub.Properties("IRowsetIdentity") = True rsSub.Open Set dbgSub.DataSource = rsSub ---------------------- Dim rs As ADODB.Recordset Set rs = dbgSub.DataSource rs!売上伝票番号 = txt売上伝票番号.Text rs.Update rs.Requery セル番地を指定するとかは、出来ないのでしょうか?

関連するQ&A