2013-02-27 3 views
0

У меня проблема с моим кодом; и был бы признателен за помощь в том, чтобы заставить ее делать то, что я хочу, без досадной ошибки. Прочитайте строки списка данных, найдите выбранную пользователем строку и напишите указанную строку в файл.Мне нужно знать, как избежать System.Data.DataRowview в vb 2010

Private Sub btnContinue_Click(sender As System.Object, e 
    As System.EventArgs) Handles btnContinue.Click 
    ' 1st file and mySQL Update to testing table 
    If txtLocation.Text.ToString <> "" And txtUnitTested.Text.ToString <> "" Then 
     Dim filewriter As New System.IO.StreamWriter(
       "C:\Users\OER\Documents\Visual Studio 2010\Projects\frmTest1_0.txt") 
     Dim curItem = lstCustomer.SelectedItem 
     Dim now As DateTime = DateTime.Now 
     With filewriter 
      .WriteLine(vbCrLf + (now.ToString("F"))) ' Write the DateTime to the file 
     End With 

     For Each objDataRowView As DataRowView In lstCustomer.SelectedItems 
      Dim item As String 
      For Each item As DataRowView In Me.lstCustomer.Items.Item("customer") 
       item = String.Parse(lstCustomer.SelectedValue) 
       WriteLine(curItem(item)) 
      Next item 
     Next ' THIS IS THE FOR LOOP I AM HAVING ISSUES WITH!!!!!!! 

     With filewriter 
      .WriteLine(vbCrLf + txtLocation.Text + vbCrLf + txtUnitTested.Text) 
     End With 
     filewriter.Close() 
     frmTest1.Show() 
    Else 
     MsgBox("Please Type the Location and Unit Tested!!!", vbCritical) 
     txtLocation.Clear() 
     txtUnitTested.Clear() 
     txtLocation.Focus() 
    End If 
+2

Какую «досадную ошибку» вы получаете? Я сомневаюсь, что это «ExIExExException». –

+0

Нет, сэр, это скорее ошибка в логике (программа добавляет System.Data.DataView в мою базу данных) – mauritaniawashin

+0

Это как если бы данные в списке должны быть объявлены отдельно или в сочетании с списком данных, так сказать – mauritaniawashin

ответ

1

Эти петли:

For Each objDataRowView As DataRowView In lstCustomer.SelectedItems 
    Dim item As String 
    For Each item As DataRowView In Me.lstCustomer.Items.Item("customer") 
     item = String.Parse(lstCustomer.SelectedValue) 
      WriteLine(curItem(item)) 
    Next item 
Next 

Собираются причинить вам некоторые проблемы. Вы указали переменную цикла с тем же именем, что и другая переменная. И тогда вы назначаете ему значение.

Кроме того, я не совсем понимаю, какова цель этих двух петель. Я несколько смущен тем, что вы пытаетесь выполнить в этом разделе кода. Я хотел бы начать с переименования переменной в этой строке:

Dim item as String 

Я собираюсь использовать это для примера:

Dim result as string 

сделать что-то еще, и вы не можете изменить значение элемента (так как это переменная цикла) в цикле. Это вызовет ошибку.

Изменение кода внутри цикла, чтобы:

result = String.Parse(lstCustomer.SelectedValue) 

Форы это еще не получит вас туда, где вы пытаетесь идти, но это хорошее начало. Если каждый элемент в вашем lstCustomer не содержит нескольких элементов для итерации, я думаю, что вам, вероятно, нужен только первый, внешний цикл.

Если ваш цикл начинается так:

For Each objDataRowView As DataRowView In lstCustomer.SelectedItems 

Тогда я думаю, что вы хотите:

objDataRowView.Item("customer") 

как то, что выводится. Я думаю, что это будет ценность поля клиента из вашего стола.

Вы в основном говорите, что в этой строке есть столбец, называемый клиент ... Я бы хотел, чтобы это значение понравилось.

+0

+1 для ответа, хотя трудно понять, что происходит, в зависимости от вопроса. – Neolisk

+0

Thank you @D; Я очень ценю ваш ответ – mauritaniawashin

+0

После того, как вы разобрались в цикле, я думаю, вам просто нужно обратиться к правильному элементу в datarow вместо самой строки данных в качестве вывода. Мне нужно было бы увидеть структуру данных, которые вы связали с этим списком, чтобы быть уверенным. – Jay

Смежные вопросы