tagCANDY CGI VBレスキュー(花ちゃん) の Visual Basic 2010 用 掲示板(VB.NET 掲示板) [ツリー表示へ]   [Home]
一括表示(VB.NET VB2005)
タイトルコンボボックスの記入位置
記事No2170
投稿日: 2005/09/19(Mon) 09:22
投稿者
[OSのVer]:Windows2000    [VBのVer]:VB.NET2003

はじめまして、私、雨と申します。
.NETをはじめて1週間ほどになります。
皆様に教えていただきたい事があり、書き込みいたしました。 
どうか、宜しくお願い致します。

一つのフォームで、会員情報の登録・修正・削除を行うフォームです。
コンボボックスで選択する項目が複数あります。
1つめのコンボボックスでは、会員の居住する地区
2つめのコンボボックスでは、会員の分類
です。
上記の処理を『フォームのロード時』に処理するように記入したのですが、
1つ目のコンボボックスの処理は反映されていなくて、
2つ目のコンボボックスの内容しか反映されていません。

そもそも、2つのコンボボックスの処理をどう一緒に
記入したら良いかもいまいちよく分かっていません。

現在のロジックは

Public Form_Load ・・・・

try
データ接続
1つ目コンボボックスの処理
・・・
end try

try
データ接続
2つ目コンボボックスの処理
・・・
end try

end sub


になっています。
どなたかご教授おねがいできませんでしょうか?
宜しくお願い致します。

[ツリー表示へ]
タイトルRe: コンボボックスの記入位置
記事No2171
投稿日: 2005/09/19(Mon) 19:51
投稿者なおこ(・∀・)
お世話になります。

↓ここのソースを、差し支えない程度で、
もうちょっと見せていただかないと、
多分誰も回答できないんじゃないかと思います…。

> 現在のロジックは
>
> Public Form_Load ・・・・
>
> try
> データ接続
> 1つ目コンボボックスの処理
> ・・・
> end try
>
> try
> データ接続
> 2つ目コンボボックスの処理
> ・・・
> end try
>
> end sub

[ツリー表示へ]
タイトルRe^2: コンボボックスの記入位置
記事No2172
投稿日: 2005/09/20(Tue) 09:30
投稿者
[OSのVer]:Windows    [VBのVer]:VB.NET  
説明が足らずにすみません。
コードは下記のようになっています.
ただ、このようにコンボボックスの処理を列挙してもいいのかかが、わかりません・・。
すみません。

また、この処理でコンボボックスに 
複数行・・・ 所属コード・所属名と表示したいのですが、良い方法等ございませんでしょうか。
皆様にはお手数をお掛けして申し訳ございません.



    Private Sub F_社員メンテ_Load(ByVal sender As Object, ByVal e As System.EventArgs)
Handles MyBase.Load

        Dim oConn As New OleDb.OleDbConnection
        Dim oCommand As New OleDb.OleDbCommand
        Dim oDataAdapter As New OleDb.OleDbDataAdapter
        Dim oDataSet As DataSet = New DataSet


    '1個目のコンボボックス

        Try
            oConn.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;" & _
            "Data Source=C:\SyaDBmdb"

            oCommand.Connection = oConn
            Const strselect As String = "SELECT * FROM T_分類"
            oCommand.CommandText = strselect

            '分類テーブルから全レコードデータを取得
            oDataAdapter.SelectCommand = oCommand
            oDataSet.Clear()
            oDataAdapter.Fill(oDataSet, "T_分類")

            'コンボボックスに分類テーブルを連結する
            cmd_CD.DataSource = oDataSet.Tables("T_分類")
      
      'コンボボックスに区分名・分類名表示設定
            cmd_CD.DisplayMember = "区分名"
            'cmd_CD.DisplayMember = "分類名"

            '区分名・分類名に対応した分類コードを設定
            cmd_CD.DisplayMember = "分類コード"

        Catch
            MsgBox(Err.Number & "," & Err.Description)
        End Try


    '2個目のコンボボックス

        Try
            oConn.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;" & _
            "Data Source=C:\SyaDBmdb"

            oCommand.Connection = oConn

            Const strselectb As String = "SELECT * FROM T_所属"
            oCommand.CommandText = strselectb

            'T_所属テーブルから全レコードデータを取得
            oDataAdapter.SelectCommand = oCommand
            oDataSet.Clear()
            oDataAdapter.Fill(oDataSet, "T_所属")

            'コンボボックスにT_所属テーブルを連結する
            cmd_SCD.DataSource = oDataSet.Tables("T_所属")

            'コンボボックスに分類名を表示設定
            cmd_SCD.DisplayMember = "所属名"
            ''所属名に対応した所属コードを設定
            'cmd_SCD.DisplayMember = "所属コード"
        Catch
            MsgBox(Err.Number & "," & Err.Description)
        End Try

コードは
このようになっています。

宜しくお願い致します。

[ツリー表示へ]
タイトルRe^3: コンボボックスの記入位置
記事No2174
投稿日: 2005/09/20(Tue) 10:17
投稿者なおこ(・∀・)
お世話になります。

あんまり、雨さんのコードを変えていないんですが、
とりあえず、下のコードで動きました。

> また、この処理でコンボボックスに 
> 複数行・・・ 所属コード・所属名と表示したいのですが、良い方法等ございませんでしょうか。
この件に関しては、2つ目の処理のところでコメントアウトしている行を
参照して下さい。
なお、Accessのコンボボックスのプロパティで列数=2
とした時のような表示をお望みなのであれば、この方法は違います。
ちなみに、私はその方法は知りません。

Private Sub Form1_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles
MyBase.Load
  Dim oConn As OleDb.OleDbConnection
  Try
    oConn = New OleDb.OleDbConnection
    oConn.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;" & _
    "Data Source=C:\db1.mdb"
    oConn.Open()

    '1つ目
    Try
      Dim cd_Da As OleDb.OleDbDataAdapter = New OleDb.OleDbDataAdapter
      Dim cd_Ds As DataSet = New DataSet
      cd_Da.SelectCommand = New OleDb.OleDbCommand("SELECT * FROM T_分類", oConn)
      cd_Da.Fill(cd_Ds, "T_分類")
      With Me.cmd_CD
        .Text = ""
        .DropDownStyle = ComboBoxStyle.DropDownList
        .Items.Clear()
        .DataSource = cd_Ds.Tables("T_分類")
        .DisplayMember = "区分名"
        .ValueMember = "分類コード" 'これを設定すると、cmd_CD.SelectedValueで分類コー
ドが取得できる
      End With
    Catch ex As Exception
      Throw ex
    End Try

    '2つ目
    Try
      Dim scd_Da As OleDb.OleDbDataAdapter = New OleDb.OleDbDataAdapter
      Dim scd_Ds As DataSet = New DataSet
      scd_Da.SelectCommand = New OleDb.OleDbCommand("SELECT * FROM T_所属", oConn)
      'scd_Da.SelectCommand = New OleDb.OleDbCommand("SELECT *,所属コード&所属名 AS
TESTFIELD FROM T_所属", oConn) '2項目連結
      scd_Da.Fill(scd_Ds, "T_所属")
      With Me.cmd_SCD
        .Text = ""
        .DropDownStyle = ComboBoxStyle.DropDownList
        .Items.Clear()
        .DataSource = scd_Ds.Tables("T_所属")
        .DisplayMember = "所属名"
        '.DisplayMember = "TESTFIELD" '2項目連結
        .ValueMember = "所属コード" 'これを設定すると、cmd_SCD.SelectedValueで所属コ
ードが取得できる
      End With
    Catch ex As Exception
      Throw ex
    End Try
    oConn.Close()
  Catch ex As Exception
    Trace.WriteLine(ex.StackTrace)
  Finally
    If Not IsNothing(oConn) Then
      oConn.Close()
      oConn.Dispose()
    End If
  End Try
End Sub

[ツリー表示へ]
タイトルRe^4: コンボボックスの記入位置
記事No2176
投稿日: 2005/09/20(Tue) 11:57
投稿者
[OSのVer]:Windows 2000   [VBのVer]:VB.NET 2003

お世話になっています。
早々のお返事ありがとうございます。

ありがとうございます。
とても、勉強になりました。

もっと勉強をして、
これからの仕事に役立てたいと思います.
ありがとうございました.

[ツリー表示へ]