0

ユーザーが情報でデータベースを更新できるようにする Web サイトを設計しています。私が抱えている問題は、ページの読み込み時に非表示になるさまざまなコントロールを作成しましたが、ユーザーはクリックして非表示を解除して追加情報を追加できることです。

私が直面している問題は、どのコントロールが使用されているかを識別するための sql ステートメントを作成することです。どのパネルが表示されているかどうかを知るために、viewstate カウントがあります。

ViewState("count") = CInt(ViewState("count")) + 1
    Label1.Text = ViewState("count").ToString()

そして、私が持っているSQLクエリを書くためのコードビハインドは次のようになります

    Protected Sub Button2_Click(sender As Object, e As EventArgs) Handles Button2.Click
    Dim myConn As SqlConnection
    Dim cmd As SqlCommand
    Dim sqlstring As String
    Dim dd As String
    Dim mm As String
    Dim yy As String


    dd = Left(TextBox1.Text, 2)
    mm = Mid(TextBox1.Text, 4, 2)
    yy = Right(TextBox1.Text, 4)


    myConn = New SqlConnection("xxx")

    myConn.Open()

    Select Case Label1.Text
        Case Is = "0"
            sqlstring = "INSERT INTO Transactions (Date, Account, Payee, Chq_Num, Reference, GST_Rate, Amount, Document_Number, Bank_Account) VALUES ('" & yy & "-" & mm & "-" & dd & "','" & DropDownList3.SelectedValue & "','" & TextBox3.Text & "','" & TextBox5.Text & "','" & TextBox4.Text & "'," & DropDownList2.SelectedValue & "," & TextBox6.Text & "," & TextBox27.Text & ",'" & DropDownList1.SelectedValue & "')"
        Case Is = "1"
            sqlstring = "INSERT INTO Transactions (Date, Account, Payee, Chq_Num, Reference, GST_Rate, Amount, Document_Number, Bank_Account) VALUES ('" & yy & "-" & mm & "-" & dd & "','" & DropDownList3.SelectedValue & "','" & TextBox3.Text & "','" & TextBox5.Text & "','" & TextBox4.Text & "'," & DropDownList2.SelectedValue & "," & TextBox6.Text & "," & TextBox27.Text & ",'" & DropDownList1.SelectedValue & "') VALUES ('" & yy & "-" & mm & "-" & dd & "','" & DropDownList4.SelectedValue & "','" & TextBox7.Text & "','" & TextBox9.Text & "','" & TextBox8.Text & "'," & DropDownList5.SelectedValue & "," & TextBox10.Text & "," & TextBox27.Text & ",'" & DropDownList1.SelectedValue & "')"
    End Select


    cmd = New SqlCommand(sqlstring, myConn)
    cmd.ExecuteNonQuery()

    myConn.Close()

    Response.Redirect(Request.RawUrl, True)

End Sub

ケースが1の場合、最初の値のみが挿入され、2番目のセットは挿入されないため、私の問題は選択ケースにあります。追加の値のセットを追加するたびに、最大 6 つの「ケース」から選択できます。SQLサーバーは2008年です

どんな助けでも大歓迎です

4

4 に答える 4

0

問題は選択ケースではありませんでしたが、ビューステートがSQL文字列に正しく渡されませんでした。おそらく最良の解決策ではないことはわかっていますが、SQL文字列が適切に読み取ることができた非表示のテキストボックスにlabel.textを渡しました。Select Case の代わりに連結された IF ステートメントを使用するという Richard の提案は素晴らしいアイデアでした。

助けてくれてありがとう

于 2013-04-21T17:34:18.350 に答える
0

私は間違っているかもしれませんが、2 番目のステートメントでは、節VALUESが 2 回現れます。それがあなたの問題の原因かもしれません。

于 2013-04-20T11:27:11.947 に答える
0

SQL Server 2008 以降では、次のような複数値挿入句を使用できます。

INSERT [INTO] tbl [(...columns...)]
VALUES (....),(....),(....);

このようにクエリを作成しました

INSERT [INTO] tbl [(...columns...)]
VALUES (....)
VALUES (....)
VALUES (....)

また、個人的には、SELECT-CASE ブロックを使用せずに文字列連結を構築したでしょう。

If Label1.Text >= "0" Then
        sqlstring = "('" & yy & "-" & mm & "-" & dd & "','" & DropDownList3.SelectedValue & "','" & TextBox3.Text & "','" & TextBox5.Text & "','" & TextBox4.Text & "'," & DropDownList2.SelectedValue & "," & TextBox6.Text & "," & TextBox27.Text & ",'" & DropDownList1.SelectedValue & "')"
End If
If Label1.Text >= "1" Then
        sqlstring = sqlstring + "," + "('" & yy & "-" & mm & "-" & dd & "','" & DropDownList4.SelectedValue & "','" & TextBox7.Text & "','" & TextBox9.Text & "','" & TextBox8.Text & "'," & DropDownList5.SelectedValue & "," & TextBox10.Text & "," & TextBox27.Text & ",'" & DropDownList1.SelectedValue & "')"
End If
' etc

なんらかの難解な理由で複数値ステートメントが機能しない場合は、常に実証済みの真の複数ステートメント バッチを利用できます。つまり、

If Label1.Text >= "0" Then
    sqlstring = "INSERT ... VALUES (...);"
End If
If Label1.Text >= "1" Then
    sqlstring = sqlstring + "INSERT ... VALUES (...);"
End If
If Label1.Text >= "2" Then
    sqlstring = sqlstring + "INSERT ... VALUES (...);"
End If
' etc

バッチ内のセミコロン ステートメント ターミネータに注意してください。

于 2013-04-20T11:28:43.810 に答える
0

上記のように、ただし、6 番目のケースまでに恐ろしく長い文字列になってしまいます。前の文字列が不変である場合は、>= 各値をチェックするように再設計することをお勧めします。

于 2013-04-20T11:30:37.797 に答える