私は、クエリからの3つの文字列値を取得しようとしているが、関数への呼び出し:関数から文字列の配列を返すにはどうすればよいですか?
...がERRのMSGでコンパイルに失敗し、「タイプの値 『文字列』にすることはできません。「文字列の1次元配列」に変換された「
もその関数のコンパイルの末尾に次の行を行います。
Return args
...で失敗し、」タイプの値「1次元のar ray of String 'は' String 'に変換できません。「
私は3つのヴァルスの文字列の配列として、そのようなargValsを宣言しています:ここでより多くのコンテキストについては
Protected Function GetArgValsForCompanyName(coName As String) As String
、:
Dim argVals(2) As String
...などなどの機能
Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
Dim connStr As String = "SERVER=PLATYPUS42;DATABASE=duckbilldata;UID=vonnegut;PWD=ryecatcher"
Dim upd8DML As String = "UPDATE CustomerCategoryLog SET Category = 'Exploding' WHERE Unit = @Unit And MemberNo = @MemberNo AND Custno = @CustNo"
Dim coName As String
Dim argVals(2) As String
Dim _Unit As String
Dim _MemberNo As String
Dim _CustNo As String
Dim curIndexVal As String
For Each cntrl As Control In Me.Controls
If TypeOf cntrl Is CheckBox Then
If DirectCast(cntrl, CheckBox).Checked = True Then
curIndexVal = CStr(DirectCast(cntrl, CheckBox).Tag)
coName = GetLabelTextForID(curIndexVal)
argVals = GetArgValsForCompanyName(coName)
_Unit = argVals(0)
_MemberNo = argVals(1)
_CustNo = argVals(2)
Using conn As New SqlConnection(connStr), _
cmd As New SqlCommand(upd8DML, conn)
cmd.Parameters.Add("@Unit", SqlDbType.VarChar, 50).Value = _Unit
cmd.Parameters.Add("@MemberNo", SqlDbType.VarChar, 50).Value = _MemberNo
cmd.Parameters.Add("@CustNo", SqlDbType.VarChar, 50).Value = _CustNo
conn.Open
cmd.ExecuteScalar()
End Using
End If
End If
Next
End Sub
Protected Function GetArgValsForCompanyName(coName As String) As String
Dim args(2) As String
Dim sqlConnection1 As New SqlConnection("SERVER=PLATYPUS42;DATABASE=duckbilldata;UID=salinger;PWD=dresdenoflions")
Dim cmd As New SqlCommand
Dim reader As SqlDataReader
cmd.CommandText = "select Unit, MemberNo, CustNo from Customers WHERE CompanyName = @CoName"
cmd.CommandType = CommandType.Text
cmd.Parameters.Add("@CoName", SqlDbType.VarChar, 50).Value = coName
cmd.Connection = sqlConnection1
sqlConnection1.Open()
sqlConnection1.Open()
reader = cmd.ExecuteReader()
If reader.HasRows Then
args(0) = reader.Item(0).ToString()
args(1) = reader.Item(1).ToString()
args(2) = reader.Item(2).ToString()
End If
reader.Close()
sqlConnection1.Close()
Return args
End Function
私はここで間違っていますか? ?どのように関数から文字列の配列を返すことができますし、これらのvalを3つの変数(dim)に格納しますか?
注:私はそうのような関数を宣言しようとした場合:
Protected Function GetArgValsForCompanyName(coName As String) As String(2)
が...私は取得するには、「アレイの境界は型指定子に表示されないことができ」
[VB.NETでの文字列配列の宣言と初期化]の可能な複製(http://stackoverflow.com/questions/5262577/declaring-and-initializing-a-string-array-in-vb-net) – Filburt
'GetArgValsForCompanyName(文字列としてのCoName)としてString()'を返し、 'Return args'を返します。配列の指定子として '()'を使用する点を除いて、C#とほとんど同じです – Plutonix