Garth J Lancaster
Я бы подумал, что вам нужно будет создать массив из вашего (ненулевого) TextBox values, loop though that, и запустите insert sql, но это большое предположение, учитывая, что вы не поместили объявление таблицы (это один столбец, несколько ... ?)
кстати, пожалуйста, не создавайте sql таким образом - посмотрите параметризованный sql-запрос, например
Dim textValues(4) as String
' Populate textValues with non-null Text[n].Text values giving number of elements in numText
Dim sql As String = "Insert into table values(@textBoxValue)"
For ctr As Integer = 0 To numText-1
Using Con As New SqlConnection("DataSource=.... Security=True"), _
cmd As New SqlCommand(sql, Con)
cmd.Parameters.Add("@textBoxValue", SqlDbType.VarChar, 50).Value = textValues(ctr)
cmd.ExecuteNonQuery()
End Using
Next
Это довольно неэффективно, поскольку он создает и избавляется от соединения numText times, но по крайней мере это идея шоу
отказ от ответственности : я не писал VB с тех пор, как у меня были волосы, думаю, 30+ лет, так что получите "идею" от того, что я положил, а не точный код - вы, вероятно, могли бы перестроить цикл using/for, чтобы получить
Using Con As New SqlConnection("DataSource=.... Security=True"), _
cmd As New SqlCommand(sql, Con)
For ctr As Integer = 0 To numText-1
cmd.Parameters.Add("@textBoxValue", SqlDbType.VarChar, 50).Value = textValues(ctr)
cmd.ExecuteNonQuery()
cmd.Parameters.Clear() ' Assumption - this is a valid method/call
Next
End Using
или что-то подобное
[edit] первая часть проблемы может начинаться так
' Loop through ALL textboxes on form adding non-null values to textValues Array and increasing numText Count
Dim ctrl As Control
numText = 0
For Each ctrl In Me.Controls
If (ctrl.GetType.ToString = "System.Windows.Forms.TextBox") Then
String.IsNullOrEmpty(strTest) Then
textValues(numText) = CType(ctrl, TextBox).Text
numText += 1
End If
End If
Next
Но опять же, это идея - я даже не могу вспомнить, начинаются ли индексы массива VB с 0 или 1 !
[/Редактировать]