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で質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
- ・漫画をレンタルでお得に読める!
- ・【お題】絵本のタイトル
- ・【大喜利】世界最古のコンビニについて知ってる事を教えてください【投稿~10/10(木)】
- ・メモのコツを教えてください!
- ・CDの保有枚数を教えてください
- ・ホテルを選ぶとき、これだけは譲れない条件TOP3は?
- ・家・車以外で、人生で一番奮発した買い物
- ・人生最悪の忘れ物
- ・【コナン30周年】嘘でしょ!?と思った○○周年を教えて【ハルヒ20周年】
- ・ハマっている「お菓子」を教えて!
- ・最近、いつ泣きましたか?
- ・夏が終わったと感じる瞬間って、どんな時?
- ・10秒目をつむったら…
- ・人生のプチ美学を教えてください!!
- ・あなたの習慣について教えてください!!
- ・牛、豚、鶏、どれか一つ食べられなくなるとしたら?
- ・都道府県穴埋めゲーム
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
実績累計の求め方と意味を教え...
-
ADO接続からのACCESSデータシー...
-
GROUP BYを行った後に結合した...
-
select insertで複数テーブルか...
-
MERGE文を単体テーブルに対して...
-
固有レコード識別子の選択とは
-
SQLについての質問
-
SQLでの条件抽出方法の記述
-
使うべきでない文字。
-
アクセスで「空き番」の確認
-
select句副問い合わせ 値の個...
-
エクセルデータの末尾の改行を...
-
SQLServerからエクセルにデータ...
-
WHERE句でのデータ型について
-
[VBA] ADOの Clone と AddNew
-
SQLで集計キー毎の最大値を求め...
-
固定値を含む結合と複数テーブ...
-
Excelで、改行がある場合の条件...
-
Order by句でバインド変数を使...
-
sqlplusの処理が途中でとまる
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
実績累計の求め方と意味を教え...
-
エクセルの指定したシートにエ...
-
弥生販売08 得意先分類1の...
-
Accessで月間売り上げ目標達成...
-
売上データに会社毎に請求番号...
-
ACCESS で、存在しないデータも...
-
C言語を用いて書いた以下のプロ...
-
Access レポートの集計
-
Accessのフォームでの合計欄を...
-
GROUP BYを行った後に結合した...
-
Oracleでの文字列連結サイズの上限
-
Access終了時の最適化が失敗?
-
select insertで複数テーブルか...
-
SELECTで1件のみ取得するには?
-
Accessで別テーブルの値をフォ...
-
ADO VBA 実行時エラー3021
-
OracleのSQL*PLUSで、デー...
-
Excelでセルの書式設定を使用し...
-
SQL文で右から1文字だけ削除す...
-
select句副問い合わせ 値の個...
おすすめ情報