2016-04-03 42 views
-1

我想在database中插入一條記錄,其中有兩個groupboxgroupbox1(有男,女radio buttons)和groupbox2(有新生和老生radio buttons如何獲取組中的哪個單選按鈕,然後將其插入到數據庫中

enter image description here

在這種情況下,將有四個可能的輸入需求是檢查

  1. 男性和老學生
  2. 男與新生
  3. 女老學生
  4. 女和新生

通常,我會逐個檢查每個單選按鈕就這樣

If rbtMale.Checked And rbtOld.Checked Then 
      Dim OldStudent = rbtOld.Text.ToString 
      Dim Male = rbtMale.Text.ToString 
      Using cmd As New SqlClient.SqlCommand("dbo.uspInsert", cn) 
       cmd.CommandType = CommandType.StoredProcedure 
       cmd.Parameters.Add(New SqlParameter("@StudPic", SqlDbType.Image)) 
       If (Not String.IsNullOrEmpty(Me.Name) AndAlso System.IO.File.Exists(a.FileName)) Then 
        cmd.Parameters("@StudPic").Value = System.IO.File.ReadAllBytes(a.FileName) 
        cmd.Parameters.Add("@SurName", SqlDbType.VarChar, 100).Value = txtStudLN.Text 
        cmd.Parameters.Add("@FirstName", SqlDbType.VarChar, 100).Value = txtStudFN.Text 
        cmd.Parameters.Add("@Gender", SqlDbType.VarChar, 100).Value = Male 
        cmd.Parameters.Add("@Status", SqlDbType.VarChar, 100).Value = OldStudent 
        cmd.ExecuteNonQuery() 
        MsgBox("Save Record New record Successfully") 
       End If 
      End Using 
     End If 

但我認爲是檢查其radio buttongroupbox被檢查並將其插入智能方式一個database。下面是一些代碼,給了我這個想法,但問題是,我不知道如何傳遞groupbox中的值,然後將其插入到我的數據庫中。任何幫助將非常感激。謝謝

For Each Ctrl In GroupBox1.Controls 
    If Ctrl.checked Then MsgBox(Ctrl.name) 
Next 
+0

'我覺得有智能的方式'一個組合框允許一個控件指示多個狀態,所以你不必輪詢多個RB。他們也佔用較少的空間。 – Plutonix

+0

@Plutonix是你的權利。但是,你可以幫我用我的代碼,因爲我已經用單選按鈕設置了我所有的表單。 –

+0

'會有四種可能'不,有兩種。 SQL顯示了性別和狀態字段,因此有2個輸入。由於您選擇使用RB,所以像性別這樣的輸入/字段由2個控件表示。 – Plutonix

回答

1

你幾乎在你的問題底部的代碼段。這個函數有一個組框作爲參數,並返回檢查

Private Function GetGroupBoxCheckedButton(grpb As GroupBox) as RadioButton 
    For Each ctrl As RadioButton In grpb.Controls 
     If ctrl.Checked Then Return ctrl 
    Next 
End Function 

你會得到一個編譯器警告有關函數的所有代碼路徑不返回結果的單選按鈕,但這不應該與單選按鈕關係 - 假設您在groupbox中有多個單選按鈕 - 理論上是這樣。

或者,你可以用它來代替。它不會產生編譯器警告,但不易閱讀: -

Private Function GetGroupBoxCheckedButton(grpb As GroupBox) As RadioButton 
    Dim rButton As RadioButton = grpb.Controls.OfType(Of RadioButton).Where(Function(r) r.Checked = True).FirstOrDefault() 
    Return rButton 
End Function 

爲了獲取文本值只是使用類似

Dim value As String = GetGroupBoxCheckedButton(GroupBox1).Text 

我猜,你想在這裏做的是增加將RadioButton文本添加到數據庫中,而不是多次寫入上面的代碼,只需要一次就可以完成。所有你需要的就是去除IfEnd If語句和ammend代碼閱讀的第一位..

 Dim Status As String= GetGroupBoxCheckedButton(GroupBox1).Text 
     Dim Gender As String= GetGroupBoxCheckedButton(GroupBox2).Text 

順便說一句,你不要在這些線作爲.Text物業到底需要.ToString返回一個字符串,不需要轉換爲字符串

最後,將變量進一步更改到您的代碼以匹配。

 cmd.Parameters.Add("@Gender", SqlDbType.VarChar, 100).Value = Gender 
     cmd.Parameters.Add("@Status", SqlDbType.VarChar, 100).Value = Status 
+0

感謝您的評論。但我怎麼能在我的代碼中應用?如何傳遞選中的單選按鈕的值並將其插入到我的數據庫中? –

+0

單選按鈕名稱或文本值的名稱? –

+0

如果你想要的文字值,請參閱我更新的答案。然後,您可以將該變量傳遞到您的數據庫中。 –

相關問題