投稿者 社会人  (社会人) 投稿日時 2014/5/26 15:21:18
使用ソフト
・Microsoft SQL server 2008 Management Studio
・Microsoft Visual Studio 2010 Professional内のVisual Basic2010

使用PC
・XP SP3


SQLserverに置かれているデータをVB2010でDataGridViewに表示させ、データをダブルクリックすると別のフォームで作成された修正画面にダブルクリックされたデータのコピーが表示され、そこから訂正や削除などの作業を行うプログラムを作っています。

(DataGridViewがあるフォームをFmA,修正画面フォームをFmBになっています)

コピー先がTextboxとComboBoxの二種類に分かれており、ComboBoxのコピーでエラーが発生しています
エラーの原因は分かりますが、その対処方法を教えて頂きたいです。

作成中のプログラムの説明を簡単に箇条書きですが記入します。

・SQLSeverに「23,VB太郎,VB県VB市0-0-0,男性」というデータがあります(列名は左から、年齢、名前、住所、性別)

・FmAのDataGridviewに「23,VB太郎,VB県VB市,男性」と表示させて、行をダブルクリックすると年齢から性別までをコピー後にFmBの表示が同時に出来るコードを作成。

・FmBには年齢から住所までのコピーが入るTextBoxの他に不可視、不加工のTextBoxが一つだけあり、そこに一旦FmAのComboBoxの値を移してからFmBのComboBoxに反映させようとした。

・性別以外はTextBoxからTextBoxに情報をコピーするだけなので問題はありませんが、性別だけはComboBoxで表示する際にエラーが発生。

InvalidCastExceptionはハンドルされませんでした。
String "諸口                " から型 'Integer' への変換は無効です。

・原因は「男性」という文字タイプのデータをそのままComboBoxに反映されても「0、1、2」と言った数字タイプのデータでしか認識出来ない事だと思い、「男性」なら0、「女性」なら1、と変換しようとしていますが、全てELSEの反応が返ってきます。
どこを修正して、男性なら0、女性なら1を帰ってきてComboBoxに反映されるのでしょうか?

Dim AA As String = DataGridView1.CurrentRow.Cells("性別").Value.ToString
        If aa = "男性" Then
            aa = "0"
        Else
            aa = "1"
        End If



以下はエラーが発生した際のコードです。

FmAのコード
Private Sub DataGridView1_CellContentDoubleClick(sender As Object, e As System.Windows.Forms.DataGridViewCellEventArgs) Handles DataGridView1.CellContentDoubleClick

Dim B As New FmB

Dim DgA As String = DataGridView1.CurrentRow.Cells("年齢").Value.ToString
Dim DgB As String = DataGridView1.CurrentRow.Cells("名前").Value.ToString
Dim DgA As String = DataGridView1.CurrentRow.Cells("住所").Value.ToString
Dim DgB As String = DataGridView1.CurrentRow.Cells("性別").Value.ToString

B.TextBox1.Text = DgA
B.TextBox2.Text = DgB
B.TextBox3.Text = DgC
B.TextBox4.Text = DgD

B.Show()

End Sub



FmBのコード
 Private Sub fmB(sender As System.Object, e As System.EventArgs) Handles MyBase.Load

        With ComboBox1
            .Items.Add("男性")
            .Items.Add("女性")
        End With

        ComboBox1.SelectedIndex = Me.TextBox4.Text
        
 End Sub