access2010について
以前、教えて!gooで部分一致検索の質問をして回答して頂き下記の写真の様な検索フォ
ームを作成しました。
VBAコードは、下記です。
Option Compare Database
Option Explicit
Private myRecordset As Recordset
Private SQL As String
Private Sub Form_Load()
SQL = ""
End Sub
Private Sub コマンド2_Click()
ResultShow (1)
End Sub
Private Sub ResultShow(flag As Integer)
SQL = "select * from テーブル2 where 商品名 LIKE" & "'*" & テキスト0.Value & "*';"
Set myRecordset = CurrentDb.OpenRecordset(SQL)
リスト5.RowSourceType = "Table/Query"
リスト5.RowSource = SQL
myRecordset.Close
End Sub
ここから質問なのですが検索してリストボックスに表示されたレコードをクリックもしくはダブルクリックなどを行い、クリックしたレコードが別の枠に移動し最終的に移動したレコードの金額が合計されるようなシステムを作ることはできますか?
不可能であれば諦めますが可能であれば教えて下さい。よろしくお願い致します。
A 回答 (1件)
- 最新から表示
- 回答順に表示
No.1
- 回答日時:
前の質問がどんな物なのかわからないので画像から勝手に判断しています。
ザックリ説明。
現在はリスト5 に SQL を使ってデータを参照させているかと思いますが、これをやめます。
リスト5 の値集合ソースを「テーブル/クエリー」ではなく「値リスト」にし、検索結果のレコードセットから 1件ずつ値を拾って手動で追加していきます。
このため、リスト5 に表示される一覧は [テーブル2] と切り離された関係になります。
リスト5 のダブルクリック イベントを使い、リスト5 で選択されている行の値を取得し、これをリスト6に手動で追加していきます。
すなわちリスト6 もリスト5 と同様に「値リスト」のタイプになっています。
さらに、リスト5 で選択されている行のアイテムをリスト5 から削除します。
これでリスト5 からリスト6 に値が移動しているように見えます。
それと同時に、リスト6 の全ての行をループさせて [金額] の列の合計を算出してテキストボックスに出力しています。
■ テーブル [テーブル2]
フィールド [ID] オートナンバー型
フィールド [商品名] テキスト型
フィールド [納入日] 数値型
フィールド [金額] 数値型
フィールド [セール金額] 数値型
■ フォーム [フォーム1]
コントロール [テキスト0] テキストボックス
コントロール [コマンド2] コマンドボタン
コントロール [リスト5] リストボックス ← 検索結果を表示する
コントロール [リスト6] リストボックス ← リスト5 でダブルクリックされたアイテムの移動先
コントロール [テキスト1] テキストボックス ← リスト6 の全アイテムの [金額] 列の合計値を表示する
■ コントロール [リスト5] と [リスト6] の設定
列数: "5" ← とりあえず ID, 商品名, 納入日, 金額, セール金額の 5列分を格納させる
列幅: "0cm;2cm;2cm;2cm;2cm" ← ID列は表示されないようにする
列見出し: "はい"
Private Sub ResultShow(flag As Integer)
Dim rs As DAO.Recordset
Dim sql As String
sql = "select * from テーブル2 where 商品名 like " & "'*" & テキスト0.Value & "*';"
' リスト5 を初期化する
リスト5.RowSource = ""
リスト5.RowSourceType = "Value List" ' 値リストにする
リスト5.AddItem "ID;商品名;納入日;金額;セール金額" ' タイトル行を追加する
' リスト6 を初期化する
リスト6.RowSource = ""
リスト6.RowSourceType = "Value List" ' 値リストにする
リスト6.AddItem "ID;商品名;納入日;金額;セール金額" ' タイトル行を追加する
' テキスト1 を初期化する
テキスト1.Value = 0
' 検索結果をリスト5 に反映させる
Set rs = CurrentDB.OpenRecordset(sql, dbOpenSnapshot)
Do Until rs.EOF
' 検索にヒットしたレコードの各フィールドの値をセミコロンで連結してリスト5 に追加する。
リスト5.AddItem rs.Fields("ID").Value & ";" & rs.Fields("商品名").Value & ";" & rs.Fields("納入日").Value & ";" & rs.Fields("金額").Value & ";" & rs.Fields("セールス金額").Value
rs.MoveNext
Loop
rs.Close
End Sub
Private Sub リスト5_DblClick(Cancel As Integer)
Dim varSelectedItem As Variant
' アイテム以外の場所をダブルクリックした場合は処理を抜ける
If リスト5.ListIndex = -1 Then
Exit Sub
End Sub
' リスト5 の選択行の各列の値をセミコロンで連結した値を作成
varSelectedItem = リスト5.Column(0) & ";" & リスト5.Column(1) & ";" & リスト5.Column(2) & ";" & リスト5.Column(3) & ";" & リスト5.Column(4)
' 作成した文字列をリスト6 に追加し、リスト5 で現在選択されている行のアイテムをリスト5 から削除する
リスト6.AddItem varSelectedItem
リスト5.RemoveItem リスト5.ItemData(リスト5.ListIndex +1)
' 金額の合計を算出
Dim i As Integer
Dim sumValue As Long
If リスト6.ListCount >= 1 Then
' リスト6 の 1行目 ( 0行目はタイトル行) から最終行までループ
For i = 1 To リスト6.ListCount -1
' 3列目 (金額の列) の値を加算していく
' 金額列の値が数値として評価できない場合は加算しない
' Null だった場合は 0 に置き換えて加算する
If IsNumeric(Nz(リスト6.Column(3, i), 0)) Then
sumValue = sumValue + Nz(リスト6.Column(3, i), 0)
End If
Next
End If
テキスト1.Value = sumValue
End Sub
x-1919さん。
回答ありがとうございます。
access初心者なので回答通りに挑戦している所です。
何故かrs.Fields("ID").Value & ";" &
と記述している時に&の位置でコンパイルエラー 修正候補:式というエラーが出て先に進めません。
何が原因なのでしょうか?
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
- ・漫画をレンタルでお得に読める!
- ・一回も披露したことのない豆知識
- ・これ何て呼びますか
- ・チョコミントアイス
- ・初めて自分の家と他人の家が違う、と意識した時
- ・「これはヤバかったな」という遅刻エピソード
- ・これ何て呼びますか Part2
- ・許せない心理テスト
- ・この人頭いいなと思ったエピソード
- ・牛、豚、鶏、どれか一つ食べられなくなるとしたら?
- ・あなたの習慣について教えてください!!
- ・ハマっている「お菓子」を教えて!
- ・高校三年生の合唱祭で何を歌いましたか?
- ・【大喜利】【投稿~11/1】 存在しそうで存在しないモノマネ芸人の名前を教えてください
- ・好きなおでんの具材ドラフト会議しましょう
- ・餃子を食べるとき、何をつけますか?
- ・あなたの「必」の書き順を教えてください
- ・ギリギリ行けるお一人様のライン
- ・10代と話して驚いたこと
- ・家の中でのこだわりスペースはどこですか?
- ・つい集めてしまうものはなんですか?
- ・自分のセンスや笑いの好みに影響を受けた作品を教えて
- ・【お題】引っかけ問題(締め切り10月27日(日)23時)
- ・大人になっても苦手な食べ物、ありますか?
- ・14歳の自分に衝撃の事実を告げてください
- ・架空の映画のネタバレレビュー
- ・「お昼の放送」の思い出
- ・昨日見た夢を教えて下さい
- ・ちょっと先の未来クイズ第4問
- ・【大喜利】【投稿~10/21(月)】買ったばかりの自転車を分解してひと言
- ・メモのコツを教えてください!
- ・CDの保有枚数を教えてください
- ・ホテルを選ぶとき、これだけは譲れない条件TOP3は?
- ・家・車以外で、人生で一番奮発した買い物
- ・人生最悪の忘れ物
- ・【コナン30周年】嘘でしょ!?と思った○○周年を教えて【ハルヒ20周年】
- ・10秒目をつむったら…
- ・人生のプチ美学を教えてください!!
- ・あなたの習慣について教えてください!!
- ・都道府県穴埋めゲーム
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
クリスタルレポートで0件時の表示
-
クリスタルレポートで文字列の...
-
アクセスでADO 並べ替えが適用...
-
Access Dcount関数で引数が指定...
-
ACCESSで日別集計をする場合
-
ACCESSデータベースにV...
-
AccessのDAOでフィールド名を配...
-
Accessのフィールド名に半角括...
-
INT64対応のprintf系関数はあり...
-
Access 2010で実行時エラー3061
-
テーブルのデータ型の変更がで...
-
改行ごとにフィールド分ける A...
-
AccessVBAで他テーブルのデータ...
-
2つ目のレコードの値を取得す...
-
DataTableに特定のフィールドが...
-
XMLでデータとして画像を指定す...
-
VBA 変数名に変数を使用したい。
-
vba フィルター 複数条件 3つ以...
-
『列名 '担当者CD' があいま...
-
VBAで OLEオブジェクト型のフ...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
Accessのフィールド名に半角括...
-
INT64対応のprintf系関数はあり...
-
accessでフィールド追加のあと...
-
DataTableに特定のフィールドが...
-
2つ目のレコードの値を取得す...
-
Access 2010で実行時エラー3061
-
日付と文字列を条件としてDLook...
-
クリスタルレポートで文字列の...
-
クリスタルレポート(8.5)の書式...
-
AccessのDAOでフィールド名を配...
-
アクセスでADO 並べ替えが適用...
-
テーブルのデータ型の変更がで...
-
NULLを含む文字列の結合で...
-
AccessVBAで他テーブルのデータ...
-
Access VBA 添付型フィールド
-
2次元のdictionary
-
ADOでNullフィールドの抽出
-
クリスタルレポートの式フィー...
-
ACCESSデータベースにV...
-
ACCESSで視覚的タイムテーブル...
おすすめ情報