Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

[VS2005VBコンボボックスについて]

2 views
Skip to first unread message

koni

unread,
Nov 27, 2008, 9:15:02 AM11/27/08
to
早速ですが
VisualStudio2005VB
SqlServer2005
で作成します。

元々はVisualStudio6.0VBユーザーなので
ソース的には問題ないと思っていますが・・・

コンボボックスについてです。
SqlServerよりデータを取得しコンボボックスにセットします。
データ例:
"01","aaa"
"02","bbb"
"03","ccc"

その際、第1項目はコンボボックスには表示しないようにします。

別のイベントより"01"が選択された場合
コンボボックスは"aaa"と表示したいのですが・・・
"02"と選択された場合"bbb"と表示したいのですが・・・
表示された第1項目"01"をSqlServerに更新したい。

VB6ではプロパティ等で実装できたことが
VS2005VBではどうコード化してよいか・・・

サンプルでよいのでどなたか教えていただけませんか?

どうぞ宜しくお願いいたします。

sum

unread,
Nov 30, 2008, 4:37:56 AM11/30/08
to
なかなかフォローが付かないようなので、開発者同士が参加している
下記フォーラムのほうで、ご質問されてはいかがでしょうか。
フォーラムの使い方は先頭に、VB2005については Visual Studioの
Visual Basicあたりになるかと思います。
#VB.NETはともかく、SQL Serverの方はちょっとという状況なので・・・

http://forums.microsoft.com/msdn-ja/default.aspx?siteid=7

--
sum (Susumu Zenba)


"koni" <ko...@discussions.microsoft.com> wrote in message
news:52CF7A16-F885-4010...@microsoft.com...

koni

unread,
Nov 30, 2008, 8:54:01 AM11/30/08
to
度々のご回答ありがとうございます。
下記フォーラムのほうへ質問してみます・・・

k

unread,
Nov 30, 2008, 9:00:38 PM11/30/08
to
今更かもしれませんがこんな感じでどうでしょう

Imports System.Data.SqlClient

Public Class frmテスト材料

Dim Connection As New SqlConnection
Dim setデータ As New DataSet
Dim adaデータ As New SqlDataAdapter

Dim mbyt仕入先数 As Byte
Dim mbyt仕入先() As Byte

Dim mstr接続 As String = "Data Source=JAMES\SQLEXPRESS;Initial
Catalog=honryuu;Integrated Security=False;UID=sa;PWD=kakitubata;"

Private Sub frmLoad(ByVal sender As System.Object, ByVal e As
System.EventArgs) Handles MyBase.Load

Dim setTMP As New DataSet
Dim adaTMP As SqlDataAdapter
Dim vieTMP As New DataView
Dim rowTMP As DataRowView

Dim bytLoop As Byte
Debug.Print(gstr接続文字列)
Try
Connection.ConnectionString = mstr接続

'選択肢をTM_仕入先テーブルから読込
adaTMP = New SqlDataAdapter("SELECT * FROM TM_仕入先;", Connection)
adaTMP.Fill(setTMP, "TM_仕入先")
vieTMP.Table = setTMP.Tables("TM_仕入先")
vieTMP.Sort = "番号"

mbyt仕入先数 = vieTMP.Count
ReDim mbyt仕入先(mbyt仕入先数)

If vieTMP.Count > 0 Then
With cbo仕入先.Items
For bytLoop = 0 To vieTMP.Count - 1
mbyt仕入先(bytLoop) = vieTMP(bytLoop)("番号")
.Add(vieTMP(bytLoop)("社名"))
Next bytLoop
End With

cbo仕入先.SelectedIndex = 0
End If

'データをTM_材料から読込
adaデータ = New SqlDataAdapter("SELECT * FROM TM_材料 WHERE 番号 =
1;", Connection)
adaデータ.Fill(setデータ, "TM_材料")
vieTMP.Table = setデータ.Tables("TM_材料")
rowTMP = vieTMP(0)

For bytLoop = 0 To mbyt仕入先数
If rowTMP("仕入先") = mbyt仕入先(bytLoop) Then
cbo仕入先.SelectedIndex = bytLoop
Exit For
End If
Next bytLoop
Catch ex As Exception
Result = MsgBox(ex.Message, MsgBoxStyle.OkOnly + MsgBoxStyle.Critical,
"異常終了")
End
End Try

End Sub

Private Sub btn戻る_Click(ByVal sender As System.Object, ByVal e As
System.EventArgs) Handles btn戻る.Click

Dim vieTMP As New DataView
Dim rowTMP As DataRowView
Dim cmdbuilder As New SqlCommandBuilder

Try
'データをTM_材料に書込
vieTMP.Table = setデータ.Tables("TM_材料")
rowTMP = vieTMP(0)
rowTMP("仕入先") = mbyt仕入先(cbo仕入先.SelectedIndex)
rowTMP.EndEdit()

cmdbuilder.DataAdapter = adaデータ
adaデータ.Update(setデータ, "TM_材料")
Catch ex As Exception
Result = MsgBox(ex.Message, MsgBoxStyle.OkOnly + MsgBoxStyle.Critical,
"異常終了")
End
End Try

Dim fmrForm As New frmメインメニュー
fmrForm.Show()

Me.Close()

End Sub

End Class

私も最近VB2005とSQLserverを使い始めたので間違ってる所もあるかと思いますが
コンボボックスで番号と内容を兼ねる方法が解らないので自分で配列に番号を記録してます
各データベース接続用オブジェクトは終了時にDisposeしたほうがいいのかもしれませんが
今のところ問題が出てないのでそのまま使ってます

 欠片

koni

unread,
Dec 1, 2008, 8:43:02 AM12/1/08
to
> 今更かもしれませんがこんな感じでどうでしょう

とんでもございません。

助かります。
早速明日にでも試してみます。

ありがとうございます。

0 new messages