Jordan Blackwood Ответов: 1

Выберите и заполните текстовые поля, а затем перейдите к следующему из (I = to rowcount -1)


Привет,

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

Мой проект ищет базу данных и выполняет подсчет строк. Затем он извлекает два необходимых поля информации (EmployeeName, EmployeeNumber).

Есть ли причина, по которой приведенный ниже код не работает?

For i As Integer = 0 To RowsCount - 1
       Me.Controls("Me.tbxEmployeeName" & (i + 1).ToString).Text = LoadDataSet.Tables("Getting Info").Rows(i).Item("FullName")
       Me.Controls("Me.tbxEmployeeNumber" & (i + 1).ToString).Text = LoadDataSet.Tables("Getting Info").Rows(i).Item("EmployeeNumber")


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

Что я уже пробовал:

Dim LoadSQL As String = "SELECT * FROM qryLocationPayrollList"
Dim LoadAdapter As New OleDbDataAdapter(LoadSQL, conIeam)
Dim LoadDataSet As New DataSet
Dim RowsCount As Integer

        If conIeam.State = ConnectionState.Closed Then
            conIeam.Open()
            LoadAdapter.Fill(LoadDataSet, "Getting Info")
            RowsCount = LoadDataSet.Tables("Getting Info").Rows.Count
            If RowsCount < 1 Then
                MessageBox.Show("No Reocrds Available", "SE-HUB Message Manager")
                LoadDataSet.Reset()
                conIeam.Close()
            Else
                For i As Integer = 0 To RowsCount - 1

                    Me.Controls("Me.tbxEmployeeName" & (i + 1).ToString).Text = LoadDataSet.Tables("Getting Info").Rows(i).Item("FullName")
                    Me.Controls("Me.tbxEmployeeNumber" & (i + 1).ToString).Text = LoadDataSet.Tables("Getting Info").Rows(i).Item("EmployeeNumber")

                Next
            End If
            LoadDataSet.Reset()
            conIeam.Close()
        End If

ZurdoDev

Мы не знаем, что должен делать код, и не знаем, что он делает, поэтому я не уверен, почему вы спрашиваете нас, что не так.

Jordan Blackwood

Извините, после всей этой писанины я забыл четко сформулировать свой вопрос. Почему приведенный ниже код не похож на "Me.tbxEmployeeName1.Text"?

Dim i как целое число =0
Me. Controls ("tbxEmployeeName" & (i + 1).Метод toString).Текст

Что я упускаю?

Спасибо

ZurdoDev

Я не знаю. Отладьте код и посмотрите, каково значение i. Затем посмотрите, есть ли Me.Controls ("tbxEmployeeName" & (i + 1).ToString) равно null или если он его найдет.

Мы не можем запустить ваш код, поэтому вам придется провести некоторую отладку, чтобы выяснить, что происходит.

1 Ответов

Рейтинг:
1

OriginalGriff

Поскольку-как сказал Ряндев-мы понятия не имеем, что он должен делать, и "не работает" ничего не говорит нам о том, что он на самом деле делает, чего вы не ожидали, или не делает того, что вы сделали; и когда вы говорите: "потому что, когда я назначаю имя текстового поля, оно извлекает правильную информацию из базы данных", мы вообще не знаем, почему это должно быть проблемой; на самом деле мы ничего не можем сделать, чтобы помочь вам.

Так что все будет зависеть от вас.
Поместите точку останова в первую строку функции и запустите код через отладчик. Затем посмотрите на свой код и на свои данные и определите, что должно произойти вручную. Затем по одному шагу в каждой строке проверяйте, что именно то, что вы ожидали, произошло. Когда это не так, тогда у вас есть проблема, и вы можете вернуться назад (или запустить ее снова и посмотреть более внимательно), чтобы выяснить, почему.

Извините, но мы не можем сделать это за вас-вам пора освоить новый (и очень, очень полезный) навык: отладку!


Jordan Blackwood

извините, ребята. Это первый вопрос, который я опубликовал...и что еще хуже, я очень новичок в кодировании.....Я пытаюсь использовать Me. Controls для циклического перебора набора текстовых полей, когда я перебираю каждый набор данных в своей базе данных.

т. е. используйте Me. controls ("tbxEmployeeName" & (i + 1).ToString) вместо "tbxEmployeeName1"

Есть ли проблема с моим кодом для... Me. Controls ("tbxEmployeeName" & (i + 1).Метод toString).Текст

Я опишу приложение, так как уверен, что есть методы, как сделать это лучше.

У меня есть база данных всех сотрудников и их номер сотрудника. Я хочу создать форму, которая автоматически заполняет таблицу сотрудников (имя и номер) для местоположения. У каждого менеджера будет свой список, который также будет меняться с новыми сотрудниками и т. д.

Я использую RowsCount, чтобы определить, сколько существует наборов данных. Затем я хочу добавить каждый набор данных в таблицу в пользовательской форме windows (в которой уже есть текстовые поля). Для этого я использовал:

Для i As Integer = 0 To RowsCount - 1
Если i = 0, то
Меня.tbxEmployeeName1.Text = LoadDataSet.Таблицы ("Получение Информации").Строки (i).Пункт ("Полное Имя")
Me.tbxEmployeeNumber1.Text = LoadDataSet.Таблицы ("Получение Информации").Строки (i).Пункт ("EmployeeNumber")
ElseIf i = 1 тогда
Me.tbxEmployeeName2.Text = LoadDataSet.Таблицы ("Получение Информации").Строки (i).Пункт ("Полное Имя")
Me.tbxEmployeeNumber2.Text = LoadDataSet.Таблицы ("Получение Информации").Строки (i).Пункт ("EmployeeNumber")
ElseIf i = 2 тогда
Меня.tbxEmployeeName3.Text = LoadDataSet.Таблицы ("Получение Информации").Строки (i).Пункт ("Полное Имя")
Me.tbxEmployeeNumber3.Text = LoadDataSet.Таблицы ("Получение Информации").Строки (i).Пункт ("EmployeeNumber")
ElseIf i = 3 тогда
Меня.tbxEmployeeName4.Text = LoadDataSet.Таблицы ("Получение Информации").Строки (i).Пункт ("Полное Имя")
Me.tbxEmployeeNumber4.Text = LoadDataSet.Таблицы ("Получение Информации").Строки (i).Пункт ("EmployeeNumber")
ElseIf i = 4 тогда
Меня.tbxEmployeeName5.Text = LoadDataSet.Таблицы ("Получение Информации").Строки (i).Пункт ("Полное Имя")
Me.tbxEmployeeNumber5.Text = LoadDataSet.Таблицы ("Получение Информации").Строки (i).Пункт ("EmployeeNumber")
ElseIf i = 5 тогда
Меня.tbxEmployeeName6.Text = LoadDataSet.Таблицы ("Получение Информации").Строки (i).Пункт ("Полное Имя")
Me.tbxEmployeeNumber6.Text = LoadDataSet.Таблицы ("Получение Информации").Строки (i).Пункт ("EmployeeNumber")
ElseIf i = 6 тогда
Меня.tbxEmployeeName7.Text = LoadDataSet.Таблицы ("Получение Информации").Строки (i).Пункт ("Полное Имя")
Меня.tbxEmployeeNumber7.Text = LoadDataSet.Таблицы ("Получение Информации").Строки (i).Пункт ("EmployeeNumber")
ElseIf i = 7 тогда
Меня.tbxEmployeeName8.Text = LoadDataSet.Таблицы ("Получение Информации").Строки (i).Пункт ("Полное Имя")
Меня.tbxEmployeeNumber8.Text = LoadDataSet.Таблицы ("Получение Информации").Строки (i).Пункт ("EmployeeNumber")
ElseIf i = 8 тогда
Меня.tbxEmployeeName9.Text = LoadDataSet.Таблицы ("Получение Информации").Строки (i).Пункт ("Полное Имя")
Me.tbxEmployeeNumber9.Text = LoadDataSet.Таблицы ("Получение Информации").Строки (i).Пункт ("EmployeeNumber")
ElseIf i = 9 тогда
Меня.tbxEmployeeName10.Text = LoadDataSet.Таблицы ("Получение Информации").Строки (i).Пункт ("Полное Имя")
Меня.tbxEmployeeNumber10.Text = LoadDataSet.Таблицы ("Получение Информации").Строки (i).Пункт ("EmployeeNumber")
Конец, Если
Следующий

Это хорошо для небольших наборов данных...но я добираюсь до списков до 50 и очень хотел бы систематически назначать текст с помощью Me. Controls.

Таблица в форме пользователя имеет 10 строк с 2 столбцами ("FullName" и " EmployeeNumber")
текстовыми полями в строке 1 являются tbxEmplyeeName1 и tbxEmployeeNumber1
текстовые поля в строке 2 a