VB6の初心者ですがお教え下さい。
現在「売上管理」を本を参考に作成しております。ACCESSで売上伝票(メイン)、売上明細(サブ)、商品台帳、、等のテーブルをデータベースとしています。
売上伝票(メイン)のフォーム上に売上明細(サブ)を「売上伝票番号」を元にしてデータグリッドで表示します。
参考本の記載では[価格]は商品台帳からひっぱっていますが、これでは、随時、異なった価格を入力するたび台帳の価格自体が変わってしまうため、私の場合「売上明細」の価格とリンクさせ、随時入力可能としました。
(お客様によって時々売値が変更するので)
そこで質問なのですが、その「価格」入力のセルに、商品台帳にある「価格」を一旦表示させる方法はないでしょうか?
(商品の定価を全て覚えてはいないので)
以前アクセスで同様のものを作成したときは、親子のフォームでしたので、
forms!txt1.text=[コントロール]みたいな感じでしました。
ちなみに下記はデータグリッドのSQLです。
( 定価*1 AS 価格と試しましたが変更でき ず、だめでした。)
ヒントとなるような事でも結構ですので宜しくお願いします。
Dim rsSub As New ADODB.Recordset
Dim mySQL As String 'SQLステートメント
'SQLステートメント
mySQL = "SELECT 売上伝票番号,NO,T売上明細.JAN,商品名,定価,価格,数量 " _
& "FROM T売上明細,T商品台帳 " _
& "WHERE ( 売上伝票番号 = " & txt売上伝票番号.Text & " ) " _
& "AND (T売上明細.JAN=T商品台帳.JAN) "
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データベースに、グリッドを表示させるため用の、テンポラリテーブルを用意する必要があります。
とりあえず、最低限
>売上伝票(メイン)、売上明細(サブ)、商品台帳
を利用しているというのであれば、個々のカラムの情報(テーブル構成)を教えてください。
No.1
- 回答日時:
※現状の確認
データグリッドをレコードセットの直結で利用し、データグリッド上で直接編集を行っているのですよね?
それがそのままアクセス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
セル番地を指定するとかは、出来ないのでしょうか?
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) EXCEL関数LOOKUPとFILTERについての質問です 1 2022/12/21 05:53
- Visual Basic(VBA) VBAコードで質問があります 2 2022/10/20 15:27
- Visual Basic(VBA) VBAで質問があります 1 2022/10/19 10:32
- 企画・マーケティング CM・広告を見て購買意欲を刺激され商品を買う連中は、本当に必要で良質で適正価格の商品なら 1 2022/12/15 12:46
- 簿記検定・漢字検定・秘書検定 棚卸減耗損について 2 2022/05/19 04:48
- スーパー・コンビニ 一斉値上 スーパーの食料品 値上や単価の仕組みは? 4 2022/06/01 16:18
- 簿記検定・漢字検定・秘書検定 簿記2級 売上原価の計算と期末商品の評価に関する質問 3 2023/06/24 23:50
- その他(お金・保険・資産運用) 至急!【Wolt】各メニューの価格設定の簡単な計算方法 3 2023/03/05 11:58
- Visual Basic(VBA) access count数を変数に格納 2 2022/03/30 19:21
- 消費者問題・詐欺 エディオンで店員に騙されました。どう対応すればよいですか? 8 2022/07/18 03:27
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
実績累計の求め方と意味を教え...
-
データグリッドのセルにtex...
-
Accessで別テーブルの値をフォ...
-
SQL文で右から1文字だけ削除す...
-
カレントレコードが無い事を判...
-
【SQL】existsでの商演算
-
ファイル書込みで一行もしくは...
-
複数テーブルのMAX値の行データ...
-
アクセス クエリ-で空白以外の...
-
複数の表の条件でのDELETE文
-
【初歩】ラジオボタンをつかっ...
-
Excelで、改行がある場合の条件...
-
集計後の数値が倍になる
-
【MYSQL】asでリネームしてwher...
-
SQLについて質問です。 AVG関数...
-
DataGridViewの内容をDBに反映...
-
ワードの差込印刷で教えて下さ...
-
OracleのSQL*PLUSで、デー...
-
アクセスでレポートの1印刷内...
-
月別、販売員別の集計がわかり...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
実績累計の求め方と意味を教え...
-
エクセルの指定したシートにエ...
-
エクセルのピボットテーブルの...
-
弥生販売08 得意先分類1の...
-
売上データに会社毎に請求番号...
-
ACCESS で、存在しないデータも...
-
弥生販売08を使用いているユー...
-
非連続したデータを別シートに...
-
EXCELを使って顧客管理
-
バーコード利用する方法を教え...
-
Accessのフォームでの合計欄を...
-
C言語を用いて書いた以下のプロ...
-
ACCESS SQL 括弧について
-
Accessで月間売り上げ目標達成...
-
GROUP BYを行った後に結合した...
-
Oracleでの文字列連結サイズの上限
-
Accessで別テーブルの値をフォ...
-
SELECTで1件のみ取得するには?
-
SQL文で右から1文字だけ削除す...
-
ADO VBA 実行時エラー3021
おすすめ情報