コンボボックスのデータが消えてしまうのを防ぐには?

解決


soushi  2004-12-13 13:45:43  No: 118269  IP: [192.*.*.*]

たびたびすいません。

Private Sub CreateDataSet()
        scn = New SqlClient.SqlConnection("workstation id=SATAKEN95;" & _
                                                    "user id=sa;" & _
                                                    "password=sataken;" & _
                                                    "data source=SATA-XP2;" & _
                                                    "persist security info=False;" & _
                                                    "initial catalog=test;")
        scd.Connection = scn
    End Sub

    'フォームロード時のイベント
    Private Sub frmAdd_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
        CreateDataSet()
        scn.Open()
        sda = New SqlClient.SqlDataAdapter("SELECT * FROM 社員IDマスター", scn)
        sdaSyozoku = New SqlClient.SqlDataAdapter("SELECT * FROM 所属マスター", scn)
        sdaYakusyoku = New SqlClient.SqlDataAdapter("SELECT * FROM 役職マスター", scn)
        sda.Fill(ds, "社員IDマスター")
        sdaSyozoku.Fill(ds, "所属マスター")
        sdaYakusyoku.Fill(ds, "役職マスター")
        cmbSyozoku.DataBindings.Add(New System.Windows.Forms.Binding("SelectedValue", Me.ds, "所属マスター.所属ID"))
        cmbSyozoku.DataSource = ds
        cmbSyozoku.DisplayMember = "所属マスター.所属名"
        cmbSyozoku.ValueMember = "所属マスター.所属ID"
        cmbYakusyoku.DataBindings.Add(New System.Windows.Forms.Binding("SelectedValue", Me.ds, "役職マスター.役職ID"))
        cmbYakusyoku.DataSource = ds
        cmbYakusyoku.DisplayMember = "役職マスター.役職名"
        cmbYakusyoku.ValueMember = "役職マスター.役職ID"
        scn.Close()
        cmbSyozoku.SelectedValue = 1
        cmbYakusyoku.SelectedValue = 1
        cmbBlood.SelectedItem = "A"
        cmbSex.SelectedItem = "男性"
    End Sub

    '保存ボタンが押された時のイベント
    Private Sub btnSave_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnSave.Click
        Dim myCommand As New SqlClient.SqlCommandBuilder(sda)
        CreateDataSet()
        scd.CommandText = "SELECT 社員ID ,名前 ,ふりがな ,性別 ,生年月日 ,所属ID ,役職ID ,血液型 ,電子メール ,郵便番号 ,住所 ,自宅電話番号 ,携帯電話番号 ,携帯短縮番号 ,内線番号 ,入社年月日 " & " [社員IDマスター]"
        Dim myRow As System.Data.DataRow
        Dim myTable As New System.Data.DataTable
        myTable.Clear()
        If txtNyuusya.Text = "" Then '入社年月日が記入されていないとき、1999年4月1日を代入する。
            txtNyuusya.Text = "1999/04/01"
        End If
        If txtBirthDay.Text = "" Then '生年月日が記入されていないとき、1975年4月4日を代入する。
            txtBirthDay.Text = "1975/04/04"
        End If

        myTable = ds.Tables("社員IDマスター") '保存先のテーブル名設定
        myRow = myTable.NewRow() '新しいデータ列の設定

        'データ行の設定
        myRow("社員ID") = txtID.Text
        myRow("名前") = txtName.Text
        myRow("ふりがな") = txtKana.Text
        myRow("性別") = cmbSex.SelectedItem
        myRow("生年月日") = CDate(txtBirthDay.Text)
        myRow("所属ID") = cmbSyozoku.SelectedValue
        myRow("役職ID") = cmbYakusyoku.SelectedValue
        myRow("血液型") = cmbBlood.SelectedItem
        myRow("電子メール") = txtEmail.Text
        myRow("郵便番号") = txtPost.Text
        myRow("住所") = txtAddress.Text
        myRow("自宅電話番号") = txtTel.Text
        myRow("携帯電話番号") = txtKeitai.Text
        myRow("携帯短縮番号") = txtTansyuku.Text
        myRow("内線番号") = txtNaisen.Text
        myRow("入社年月日") = CDate(txtNyuusya.Text)

        '新しいデータ列を作成
        myTable.Rows.Add(myRow)
        sda.InsertCommand = myCommand.GetInsertCommand
        sda.Update(ds, "社員IDマスター")
        ds.Clear()
        scn.Open()
        sdaSyozoku.Fill(ds, "所属マスター")
        cmbSyozoku.DataSource = ds
        sdaYakusyoku.Fill(ds, "役職マスター")
        cmbYakusyoku.DataSource = ds
        scn.Close()

    End Sub
    'リセットボタンが押された時のイベント
    Private Sub btnReset_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnReset.Click
        '全てのフィールドの初期化
        txtID.Text = ""
        txtName.Text = ""
        txtKana.Text = ""
        cmbSex.SelectedItem = "男性"
        txtBirthDay.Text = ""
        cmbSyozoku.SelectedValue = 1
        cmbYakusyoku.SelectedValue = 1
        cmbBlood.SelectedItem = "A"
        txtEmail.Text = ""
        txtPost.Text = ""
        txtAddress.Text = ""
        txtTel.Text = ""
        txtKeitai.Text = ""
        txtTansyuku.Text = ""
        txtNaisen.Text = ""
        txtNyuusya.Text = ""
    End Sub

上のコマンドのように、記述したんですが、一度、データベースに書き込みを行うと、データベースから読み込んできたコンボボックス(cmbYakusyokuとcmbSyozoku)の2個のデータが消えてしまいます。
どなたか、教えてください。

編集 削除
マルチ  2004-12-13 13:54:39  No: 118270  IP: [192.*.*.*]

http://dobon.net/cgi-bin/vbbbs/cbbs.cgi?mode=al2&namber=8014&rev=&no=0

編集 削除
soushi  2004-12-13 14:07:46  No: 118271  IP: [192.*.*.*]

マルチスレしてすいませんでした。

編集 削除
soushi  2004-12-14 10:25:15  No: 118272  IP: [192.*.*.*]

できました

編集 削除