データグリッドで、演算項目をリアルに表示するには?


ぷよぷよ  2008-01-22 10:05:13  No: 138703  IP: 192.*.*.*

VB勉強中の初心者です。教えてください。

  OS:Microsoft Windows server 2003 standard edition sp1
  言語:Microsoft visual basic 6.0
  データベース:Microsoft Access 2000
 
下記のようにしてデータグリッドに表示しています。
ところが、追加行に商品IDを入力しても引用されるべき商品名、単価が表示されません。また、演算項目である金額も表示されません。
ちなみに、同じSQLでAccessのクエリーとして実行すると、商品IDを入力するとすぐに商品名、単価が表示され、数量を入力すると金額が計算されて表示されます。
どうしてこの様に違ってくるのでしょうか?


Set rsd = New ADODB.Recordset

mysql = "select 伝票サブ.id,伝票サブ.伝票番号,伝票サブ.商品ID,商品一覧.商品名,商品一覧.単価,伝票サブ.数量, " _
    & "商品一覧.単価 * 伝票サブ.数量 as 金額 " _
    & "from 伝票サブ  inner join 商品一覧 " _
    & "on 伝票サブ.商品ID = 商品一覧.商品ID " _
    & "where 伝票サブ.伝票番号 = " & txt伝票番号.Text

rsd.Open mysql, cnd, adOpenStatic, adLockOptimistic

Set dbgsub.DataSource = rsd

dbgsub.Columns("id").Visible = False
dbgsub.Columns("伝票番号").Visible = False
dbgsub.Columns("商品ID").Width = 60 * 15
dbgsub.Columns("商品名").Width = 150 * 15
dbgsub.Columns("単価").Width = 60 * 15
dbgsub.Columns("数量").Width = 60 * 15
dbgsub.Columns("金額").Width = 60 * 15

編集 削除
たんやお  2008-01-22 17:14:20  No: 138704  IP: 192.*.*.*

Accessはフォームとテーブルの連結の機能があるのでフォーム内で連結している
値を入力で修正するとテーブルも反映されますが、VBにはそういった機能が
ないと思います。(思いますというのは自分が知らないだけかもということで
すが少なくとも上記コードだけではリアルに更新されません)
したがって、データ更新の命令文を作成する必要があります。

編集 削除
ぷよぷよ  2008-01-23 09:22:34  No: 138705  IP: 192.*.*.*

たんやおさん、コメントありがとうございます。
グリッドのDATASOURCEにレコードセットを設定するというのと
フォームとテーブルを連結するというのは意味がちがうのですか?

さしあたって、ご指摘のように自分で処理するようやってみたのですが
金額を算出・設定するステップで、

  実行時エラー  ’-2147217887(80040e21)'
  複数ステップの操作でエラーが発生しました。各状態の値を確認してください。

というエラーになってしまいました。
演算項目に、値を代入することは出来ないのでしょうか?
  


Private Sub dbgsub_AfterColEdit(ByVal ColIndex As Integer)

Dim mysql As String

    Select Case ColIndex
        Case 2
            Set rst1 = New ADODB.Recordset
            mysql = "select * from 商品一覧 where  商品ID = " & "'" & rsd!商品ID & "'"
            rst1.Open mysql, cnd, adOpenStatic, adLockOptimistic
            If rst1.EOF Then
                Exit Sub
            Else
                rsd!商品名 = rst1!商品名    ←引用項目は設定できました
                rsd!単価 = rst1!単価
            End If
            rsd!金額 = rsd!単価 * rsd!数量  ← 演算field set  エラー
        Case 5
            rsd!金額 = rsd!単価 * rsd!数量
            
    End Select

編集 削除
ひな  2008-01-23 22:24:12  No: 138706  IP: 192.*.*.*

>演算項目に、値を代入することは出来ないのでしょうか?

まず最初の問題を解決したらいかがでしょうか?

編集 削除
ぷよぷよ  2008-01-24 09:10:13  No: 138707  IP: 192.*.*.*

ひなさん、コメントありがとうございます。
処理を組み込まずに自動的に表示できれば理想的ですが、
何かヒントはいただけませんか?

編集 削除