- ベストアンサー
データグリッドのセルにテキストを表示させる方法?
- VB6の初心者ですが、「売上管理」を作成しています。
- 売上伝票のフォーム上に売上明細をデータグリッドで表示していますが、価格のセルに商品台帳の価格を表示させたいです。
- 今回は商品の定価を覚えていないため、随時入力可能にしたいです。
- みんなの回答 (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データベースに、グリッドを表示させるため用の、テンポラリテーブルを用意する必要があります。 とりあえず、最低限 >売上伝票(メイン)、売上明細(サブ)、商品台帳 を利用しているというのであれば、個々のカラムの情報(テーブル構成)を教えてください。
その他の回答 (1)
- 1050 円(@1050YEN)
- ベストアンサー率69% (477/687)
※現状の確認 データグリッドをレコードセットの直結で利用し、データグリッド上で直接編集を行っているのですよね? それがそのままアクセスDBに反映されているのですよね? ※実現したい事の確認 編集を行うデータグリッドのセルの売上金額の初期値に、商品台帳の価格を表示したいということですよね? 上記どおりであれば、、、、 これは、売上更新用のグリッドではなく、売上の登録用グリッドですか? 編集には、初期値が関係ないと思うので、、、 もしそうであれば、グリッドで直接編集を行うような、アクセス的な考えを捨てたら良いと思います。
補足
早速の回答ありがとうございます。 行いたい事は、回答にある通り、おっしゃる通りです。 テキスト本では、データグリッドに商品番号(私の場合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 セル番地を指定するとかは、出来ないのでしょうか?
お礼
お礼が遅れました。SQLを作成し、出来ました。ありがとうございました。