元々はVisualStudio6.0VBユーザーなので
ソース的には問題ないと思っていますが・・・
コンボボックスについてです。
SqlServerよりデータを取得しコンボボックスにセットします。
データ例:
"01","aaa"
"02","bbb"
"03","ccc"
その際、第1項目はコンボボックスには表示しないようにします。
別のイベントより"01"が選択された場合
コンボボックスは"aaa"と表示したいのですが・・・
"02"と選択された場合"bbb"と表示したいのですが・・・
表示された第1項目"01"をSqlServerに更新したい。
VB6ではプロパティ等で実装できたことが
VS2005VBではどうコード化してよいか・・・
サンプルでよいのでどなたか教えていただけませんか?
どうぞ宜しくお願いいたします。
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...
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したほうがいいのかもしれませんが
今のところ問題が出てないのでそのまま使ってます
欠片
とんでもございません。
助かります。
早速明日にでも試してみます。
ありがとうございます。