从表单中选择选定的值以填充数据库表中的一列

时间:2013-05-02 09:22:39

标签: vb.net sql-server-2005

我成功地将我的vb.net表单字段中的数据提交到具有自动递增的唯一ID的SQL表中。我遇到的问题是我有多个具有相同字段名称的表单字段。例如,我将在我的数据库中的一个字段接受来自我的表单上的TextBox1,TextBox2,TextBox3或TextBox4的数据。这可能吗?

    Private Sub Button3_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button3.Click
    Using message As New MailMessage()
        Dim iReturn As Boolean

        Using con As New SqlConnection("Server=SGI-NOT-TTID01;Database=Commission;uid=****;pwd=******")
            Using com As New SqlCommand()
                With com
                    .CommandText = "INSERT INTO InputTable VALUES (@UniqueRequestNumber, @BusinessUnit, @ReasonCode, @Originator, @OnBehalfofName, @OnBehalfofEmail, @SalesTeam_CS, @SalesTeam_MISDBM, @DateEffectiveFrom, @DateEffectiveTo, @CustomerClientName, @CustomerAccNum, @MovingTo, @JustificationComments, @NewBusOrRenewal, @OthersImpacted, @ReasonCode2, @Target, @TargetPeriod, @ProposedScheme, @NewOTC, @ExistingRole, @Amount, @CustomerImapcted, @CurrentOTC, @PoundsInPocketEst, @NewRole ) "
                    .Connection = con
                    .CommandType = CommandType.StoredProcedure
                    .CommandText = "AddUniqueRequestNumberWithOutput"
                    .Parameters.AddWithValue("@UniqueRequestNumber", ParameterDirection.Output)
                    .Parameters.AddWithValue("@BusinessUnit", ComboBox1.Text)
                    .Parameters.AddWithValue("@ReasonCode", ComboBox4.Text)
                    .Parameters.AddWithValue("@Originator", TextBox1.Text)
                    .Parameters.AddWithValue("@OnBehalfofName", TextBox2.Text)
                    .Parameters.AddWithValue("@OnBehalfofEmail", TextBox3.Text)
                    .Parameters.AddWithValue("@SalesTeam_CS", ComboBox2.Text)
                    .Parameters.AddWithValue("@SalesTeam_MISDBM", ComboBox3.Text)
                    .Parameters.AddWithValue("@DateEffectiveFrom", DateTimePicker1.Text)
                    .Parameters.AddWithValue("@DateEffectiveTo", DateTimePicker2.Text)
                    .Parameters.AddWithValue("@CustomerClientName", TextBox4.Text)
                    .Parameters.AddWithValue("@CustomerAccNum", TextBox5.Text)
                    .Parameters.AddWithValue("@MovingTo", TextBox6.Text)
                    .Parameters.AddWithValue("@JustificationComments", TextBox7.Text)
                    .Parameters.AddWithValue("@NewBusOrRenewal", ComboBox6.Text)
                    .Parameters.AddWithValue("@OthersImpacted", TextBox13.Text)
                    .Parameters.AddWithValue("@ReasonCode2", ComboBox5.Text)
                    .Parameters.AddWithValue("@Target", TextBox5.Text)
                    .Parameters.AddWithValue("@TargetPeriod", ComboBox7.Text)
                    .Parameters.AddWithValue("@ProposedScheme", TextBox24.Text)
                    .Parameters.AddWithValue("@NewOTC", TextBox17.Text)
                    .Parameters.AddWithValue("@ExistingRole", TextBox19.Text)
                    .Parameters.AddWithValue("@Amount", TextBox8.Text)
                    .Parameters.AddWithValue("@CustomerImpacted", TextBox12.Text)
                    .Parameters.AddWithValue("@CurrentOTC", TextBox16.Text)
                    .Parameters.AddWithValue("@PoundsInPocketEst", TextBox10.Text)
                    .Parameters.AddWithValue("@NewRole", TextBox20.Text)

                End With
                Try
                    con.Open()
                    com.ExecuteNonQuery()
                    iReturn = True
                Catch ex As SqlException
                    MsgBox(ex.Message.ToString)
                    iReturn = False
                Finally
                    con.Close()
                End Try

                    'set to the from, to and subject fields
                    message.From = (New MailAddress(TextBox3.Text.ToString()))
                    message.[To].Add(New MailAddress("benjamin.boothe@experian.com"))
                    message.Subject = "Request Number"

                    If Not attachmentList Is Nothing Then
                    For Each attachment As System.Net.Mail.Attachment In attachmentList
                            message.Attachments.Add(attachment)
                        Next
                    End If



                    'display submitted box
               MessageBox.Show("Your request has been submitted!", "Congratulations!")
                    'close form
                    Me.Close()

                    Dim client As New SmtpClient()
                    client.Host = "mailhost"
                    client.Send(message)






            End Using
        End Using



    End Using

    Return
End Sub

这个函数背后的逻辑如下:

  1. 将值提交给SQL Server中的表。
  2. 发送电子邮件(可选择附带附件)。

1 个答案:

答案 0 :(得分:0)

您可以编写一个私有函数来搜索文本框并返回第一个文本框的内容。

Private Function SearchBehalfText() As String
    Dim behalfOf = TextBox3.Text.Trim
    if behalfOf.Length = 0 then 'textbox3 is empty, check the next one '
        behalfOf = TextBox4.Text.Trim
        if behalfOf.Length = 0 then  'textbox4 is empty, check the next one '
             ...... mode test here if you have more textboxes, stop when all the textboxes are verified for empty
        End If
    End If
    return behalfOf
End Function

现在,您创建参数的代码可以写成

.Parameters.AddWithValue("@OnBehalfofEmail", SearchBehalfText())

我发现这种情况有点弱。使用此信息还原相应的文本框