コンボボックスでデータを取得して表示する方法

このQ&Aのポイント
  • VisualBasic2005とAccessを使用して、コンボボックスで選択した内容に基づいてデータベースからデータを取得し、ラベルに表示する方法を教えてください。
  • コンボボックスで選択した商品名に対応する金額を取得し、ボタンをクリックするとラベルに金額を表示する方法を教えてください。
  • コンボボックスで選択した商品名に対してデータベースから金額を取得し、ボタンをクリックするとラベルに金額を表示する方法を教えてください。
回答を見る
  • ベストアンサー

コンボボックスについて教えてください!!

タイトルが適していないかも知れませんが、 以下の内容についてわからず困っているので教えて頂きたく投稿します。 【プログラム】VisualBasic2005 【データベース】Access 【質問内容】 コンボボックスで選択した内容によって、ボタンを押下するとラベルに一致する内容のデータをデータベースから取得し表示する方法。 例えば… フォームに商品名を選択するコンボボックスがあります。 データベースの中身は、以下のようになっています。  ___________ | 商品名  | 金額  | | りんご   | 150   | | もやし   | 50    | | 豆腐    | 60    | | キャベツ | 200    |  ―――――――――――  《T1商品》 ※商品名はかなりの量があります。 このとき商品名(※コンボボックス名をSyohinと定義)に"りんご"を選択した場合、 値段(※ボタン名をNedanと定義)を押下すると 金額(※ラベル名をKingakuと定義)に150と表示したいです。 今の私のコードを乗せておきます。 これだとどの商品を選択しても1行目の150が表示されてしまいます。 あと何を追加したらよろしいのでしょうか? Private Sub Nedan_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Nedan.Click '値段を押下 '▼データ取得 Dim Cn As New OleDb.OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;Data Source = C:\Documents and Settings\My Documents\商品ツール.mdb") Dim SQLCm As OleDb.OleDbCommand = Cn.CreateCommand SQLCm.CommandText = "SELECT 金額 FROM T1商品" Dim Value As String Cn.Open() Value = SQLCm.ExecuteScalar Cn.Close() Kingaku.Text = (Value) End Sub 質問のしかたでわかりづらいかも知れませんが… わかる方がいらしたらご教授願います。 長文、失礼致しました。

質問者が選んだベストアンサー

  • ベストアンサー
noname#259269
noname#259269
回答No.1

SQLで選んだ商品を絞り込んでください。 下記は記述例です。そのまま動くかはわかりません。 SQLCm.CommandText = "SELECT 金額 FROM T1商品 WHERE 商品名='" + Syohin.SelectedValue + "'"

CRESCENT93
質問者

お礼

★edp3142様★ 回答ありがとうございます。 実際に試した結果、仰ったとおりの記述で動きました!!!! コンボボックスの値を変数とかにするのかと 私なりに考えたり調査していたんですが… SQLで絞り込むんですね!!!!!!! 参考になりました。 本当にありがとうございました<(_ _)>

関連するQ&A

  • Datagridviewのコンボボックスにつきまして

    vb2005です。 DataGridViewコントロールのデータセットにデータベースのテーブルをセットしています。 そのDataGridViewの1列目にコンボボックスを設定し、 そのコンボボックスのデータセットにも別のテーブルをセットしたいのです。 Dim dAdp As OleDb.OleDbDataAdapter Dim dSet As New DataSet Dim cn As OleDb.OleDbConnection = New OleDb.OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;" & "Data Source=C:\DB.mdb;") dAdp = New OleDb.OleDbDataAdapter("SELECT * FROM 商品", cn) dAdp.Fill(dSet, "t_商品") DataGridView1.DataSource = dSet.Tables("t_商品") dAdp = New OleDb.OleDbDataAdapter("SELECT * FROM 品種", cn) dAdp.Fill(dSet, "t_品種") Dim col As System.Windows.Forms.DataGridViewComboBoxColumn = DataGridView1.Columns(1) ・・・・★ col.DataSource = dtSet.Tables("t_品種") col.DisplayMember = "品種名" col.ValueMember = "品種コード" 上記のように記述しているのですが、★の部分で、下記のエラーになります。 型 'System.Windows.Forms.DataGridViewTextBoxColumn' のオブジェクトを型 'System.Windows.Forms.DataGridViewComboBoxColumn' にキャストできません データソースを指定したDataGridViewの列にはコンボボックス等の設定は 出来ないのでしょうか?

  • 2のコンボボックスの関連

    環境:Access2003 VB6.0 2つのコンボボックス関連させたいが、やり方がよくわからないです。 たとえばSCHOOLというテーブルに1YearとClassのフィールドがあります。そこで、YearのコンボボックスでYearフィールドの値を選択して、Classのコンボボックスに選択された値に対する値をセットしたいです。 例(1年と選択して、2個目のコンボボックスにA、B、C、Dとセットしたいです。 初心者で、説明がわかりにくいかもしれないですが、よろしくお願いします。 以下データベースの接続設定 Dim m_formlording As Integer Dim CONN As ADODB.Connection 'レコードセット Dim RECO As ADODB.Recordset Private Sub ConnOpen() Set CONN = New ADODB.Connection '接続文字列の設定 CONN.ConnectionString = "provider=Microsoft.jet.oledb.4.0;" _& "data source=D:\DB\dbstudent.mdb" 'コネクションをオープン CONN.Open End Sub Private Sub RecoSet() Set RECO = CONN.Execute("Select * From SCHOOL") End Sub 詳しい方、ご教授ください。

  • 同じコンボボックス、リストボックスを使うには?

    よろしくお願いします。 今、ユーザーフォームを使って製造計画表を作っています。 コンボボックスで会社名、リストボックスで会社ごとの製品名を選択させるとこまで出来ました。 1日に3つの製品を作ることが出来るので、同じ中身のコンボボックス、リストボックスを使って3つ作りたいと思っています。 ユーザーフォームの形的にはこのような感じですが。 1. コンボボックス  リストボックス 2. コンボボックス  リストボックス 3. コンボボックス  リストボックス 今は、1.のとこだけは出来たのですが、2.3.は1.と同じコードをコピーして必要と思われるとこだけをコンボボックス2と変えたりしてみたのですが、上手くいきませんでした。こんなコードですが。 Private Sub UserForm_initialize() 'ComboBox1セット Dim ico As Long ico = 1 With ThisWorkbook.Worksheets("Sheet1") Do While .Cells(1, ico) <> "" Me.ComboBox1.AddItem .Cells(1, ico).Value ico = ico + 1 Loop End With Me.ComboBox1.SetFocus End Sub Private Sub ComboBox1_Change() 'ListBox1セット Dim ico As Long 'Me.ListBox1.Clear ico = Me.ComboBox1.ListIndex + 1 With ThisWorkbook.Worksheets("Sheet1") Me.ListBox1.List = .Range(.Cells(2, ico), _ .Cells(.Cells(Rows.Count, ico).End(xlUp).Row, ico)).Value End With End Sub VBAも初めたばかりで質問の内容もわかりづらいとも思いますが、よろしくお願いします。

  • VB2008フォームのコンボボックスに、MSSQL2008のデータを表

    VB2008フォームのコンボボックスに、MSSQL2008のデータを表示させたい いつもお世話になっております。 以前、VB6を少しかじり、 最近、サンプルコードなどを見よう見まねでvb2008&MSSQL2008について勉強しております。 VB2008で作成したフォームからMSSQLサーバ2008に接続し、 フォームをロードした際、フォーム上にあるコンボボックス(Combobox1)に サーバの指定したテーブル・フィールドの値を表示させたいのですが、 データベースへの接続はできたものの、コンボボックスに表示させる方法がわかりません。 テーブル:社員マスタ フィールド:社員番号 のデータをコンボボックスに呼び出すにはどう処理を加えればよいでしょうか? 今現在、作成中のコードが下記になります。 ご教授お願いします。 Private Sub Frmjob_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load 'リモート接続に伴うパスを格納 Dim St As String Dim Cn As New System.Data.SqlClient.SqlConnection Dim sqlInsert As New SqlClient.SqlCommand Dim SQL As System.Data.SqlClient.SqlCommand Dim ServerName As String = "192.XXX.X.XX" 'サーバーのIPアドレス Dim UserID As String = "sa" 'ユーザーID Dim Password As String = "bluebird" 'パスワード Dim DatabaseName As String = "testDB" '接続先データベース St = "Server=" & ServerName & ";" St &= "User ID=" & UserID & ";" St &= "Password=" & Password & ";" St &= "Initial Catalog=" & DatabaseName Cn.ConnectionString = St SQL = Cn.CreateCommand 'データベースに接続 Cn.Open() 'サーバから呼び出し SQL = New SqlClient.SqlCommand("SELECT 社員番号 FROM 社員マスタ"'), Cn)     Me.ComboBox1.Items.Add(Item("JobCode")) Cn.Close() SQL.Dispose() Cn.Dispose() End Sub

  • コンボボックスに取得したレコードデータを表示したい

    環境:winxp、vb6、access2000 以下の様にアクセスから抽出したレコード"rstdata"をCombo1のデータソースに指定してコンボボックスに表示したいのですが、何も表示されません。 原因が分かる方がいらっしゃればご教示ください。 *******コード******** Dim cn As New ADODB.Connection Dim cmd As ADODB.Command Dim rstdata As ADODB.Recordset Dim strSQLdata As String Set cn = New ADODB.Connection cn.ConnectionString = _ "Provider=Microsoft.Jet.OLEDB.4.0;" & _ "Persist Security Info=False;" & _ "Data Source=aaa.mdb;" & _ "Mode=Read" cn.Open Set rstdata = New ADODB.Recordset strSQLdata = "Select 項目名 From T_SHIKENDATA order by ID" rstdata.Open strSQLdata, cn, adOpenStatic Set Combo1.DataSource = rstdata rstdata.Close Set rstdata = Nothing cn.Close Set cn = Nothing

  • コンボボックスを使った入力の改善

    コンボボックスを使った入力を全てのデータベースで利用しています。しかし、各コンボボックスがそれぞれ独立「単体動作」しているので、コンボボックスの初段目「最初」はレコード数が少ないのですが、2段目3段目になると選択候補が累積表示されるので、候補の数も多くなり使いづらさを感じるデータベースも増えました。この状況を改善したいと思っていますので、宜しくお願いします。尚、データベースで設定しているコンボボックス全てに言えることでもありますので、以下のケースを紹介させていただきますので、アドバイスをお願いしたいと思います。 [現状でのやり方] コンボボックス参照オブジェクトは以下の構成にて、コンボボックスは独立していて連動していません。なお、参照データの追加作業は別途作成したフォームを、データ入力フォームに配したコマンドボタンで開いて行っています。 [コンボボックス関連オブジェクト(例)] コンボボックス名:都道府県(値集合ソースで都道府県のみ選択) テーブル名:都道府県テーブル フィールド名:ID、都道府県 フォーム名(参照データ追加):都道府県追加フォーム ※「新規追加後の入力フォームへの即反映はアドバイスにより完結済」 コンボボックス名:市町村(値集合ソースで市町村のみ選択) テーブル名:市町村 フィールド名:ID、市町村 フォーム名(参照データ追加):市町村追加フォーム ※「新規追加後の入力フォームへの即反映はアドバイスにより完結済」 [改善させたいこと] コンボボックス「都道府県」で東京都を選択したとき、次のコンボボックス「市町村」では東京都の市町村だけが次の候補として表示させたいと思っています。又、現在は蓄積データの絞り込み検索で設定していますが、選択コンボボックスの次のコンボボックスを自動プルダウンさせ、候補も同時に表示させ入力できればと考えています。 以上ですが、宜しくお願いします。

  • accessのコンボボックスのことで質問です。

    accessを勉強しているのですが、ちょっとしたことで分からなくなってしまいました・・。 質問の内容なのですが、まずフォーム上にコンボボックスAとコンボボックスBを配置するとします。 レコードソースには仮に[情報テーブル]というテーブルが選択されているとします。 コンボボックスAには[情報テーブル]のフィールド名が、 例えば[顧客NO]、[商品]、[値段]というフィールド名が入っているとし、フィールドにはそれぞれ10件ずつデータが入力されています。 そしてコンボボックスAで[顧客NO]を選択するとコンボボックスBに[顧客NO]の10件のデータが挿入され、選択できるようにしたいのです。 他のフィールド名を選んだときにも同じようにコンボボックスBにフィールドのデータが入るようにしたいと思っています。 コンボボックスAにテーブル名を入れることはできたのですが、 コンボボックスAで選択されたフィールドのデータを、コンボボックスBで選択できるようにするというやり方がわからないのです・・。 accessは2002を使っています。 よろしくお願いします。

  • コンボボックスの絞込みについて

    こんにちは アクセス2000で発注書を作っています ど素人です。。 コンボボックスの絞りこみについて教えてください。 現在5つのコンボで絞込みをしています コンボ1仕入先(メインフォーム) コンボ2種類1(サブフォーム) コンボ3種類2(サブフォーム) コンボ4商品名(サブフォーム) コンボ5詳細(サブフォーム) です。 コンボ1は一度選択すると、変更はありません。 コンボ5で選択決定した後、コンボ2、コンボ3、コンボ4は空白に、 コンボ5は全表示に設定しているのですが それだとコンボ1で選択した仕入先以外の商品も入ってしまうので コンボ5に、コンボ1で仕入れた商品のみを全表示したい場合は どうしたらいいですか? 説明下手で申し訳ありませんが どなかたご教授の程よろしくお願いいたします

  • コンボボックス

    お願いします。 アクセスのフォームでコンボボックス(仕入先名)を使用していて、リスト一覧の中から選択していく訳ですが、1件の入力が終了して次のデータ入力に移り、コンボボックスのリスト選択の際に、直前に入力した「仕入先名」を一番最初に表示させることは可能でしょうか?  関連するのですが、 たとえば納品書で、同じ仕入先から一回に商品を30種類くらい仕入れるような場合、フォームに商品入力欄を複数行(5行位?)作って一度に複数行入力することはできるでしょうか? 必要なフィールドは商品名、数量、単価、備考(任意)です。 できるだけ入力の効率を上げたいと考えております。 よろしくご指導ください。

  • コンボボックスの値もクリアしたい!

    コンボボックスの値もクリアしたい! 現在下記のコードでtxtBoxの値をクリアしていますが、 同フォームにあるコンボボックスの値もクリアしたいのですが解りません。 教えてください。 Public Sub txtクリア(objForm As Object) Dim txtclear As Control For Each txtclear In objForm.Controls If txtclear.ControlType = acTextBox Then txtclear.Value = Null End If Next End Sub

専門家に質問してみよう