sebalius Ответов: 1

Заполнение текстовых полей из списка выбора


У меня есть небольшая программа,и когда она запускается, база данных MDB заполняет имена в списке. Я разрушил свой мозг, пытаясь выбрать имя в списке и полную информацию, чтобы затем заполнить текстовые поля. В конце концов я хочу использовать текстовые поля для добавления новых записей в базу данных. Любая помощь ценится, вот мой код, закомментированный код - это то, что не будет работать.
Imports System.Data
Imports System.Data.OleDb

Public Class Form1
    Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
        Dim strConnection As String = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\Temp\Hospital.mdb;"
        Dim objConnection As New OleDbConnection(strConnection)
        Dim objConnection2 As New OleDbConnection(strConnection)

        'Open the connection with error handling
        Try
            objConnection.Open()
        Catch OleDbExceptionErr As OleDbException
            MessageBox.Show(OleDbExceptionErr.Message)
        Catch InvalidOperationErr As InvalidOperationException
            MessageBox.Show(InvalidOperationErr.Message)
        End Try

        'Create a command object with the SQL statement needed to select the first names
        Dim strSQL As String = "SELECT * FROM Patients"
        Dim objCommand As New OleDbCommand(strSQL, objConnection)

        'Create a data adapter and data table then fill the data table
        Dim objDataAdapter As New OleDbDataAdapter(objCommand)
        Dim objDataTable As New DataTable("PatientID")
        objDataAdapter.Fill(objDataTable)

        'Create connection and release resources
        objConnection.Close()
        objConnection.Dispose()
        objConnection = Nothing
        objCommand.Dispose()
        objCommand = Nothing
        objDataAdapter.Dispose()
        objDataAdapter = Nothing

        'Fill names into the listbox
        For Each Row As DataRow In objDataTable.Rows
            lstNames.Items.Add(Row.Item("Patient Name"))
        Next

        'Release resources
        objDataTable.Dispose()
        objDataTable = Nothing
    End Sub

    Public Sub Button2_Click(sender As Object, e As EventArgs) Handles Button2.Click

        'Dim strConnection As String = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\Temp\Hospital.mdb;"

        'Dim DR As DataRow = Select * From Patients  Where PatientID = "'" & lstNames.SelectedValue & "'"
        'txtName.Text = DR("Patient Name")
        'txtWard.Text = DR("Ward")
        'txtNotes.Text = DR("Notes")

    End Sub


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

'Dim DR As DataRow = Select * From Patients  Where PatientID = "'" & lstNames.SelectedValue & "'"
       'txtName.Text = DR("Patient Name")
       'txtWard.Text = DR("Ward")
       'txtNotes.Text = DR("Notes")

[no name]

Конечно, это не сработает. Вы пытаетесь присвоить строку потоку данных, который говорит мне, что вы не понимаете фундаментальных основ программирования. И даже если бы вы могли это сделать, вы просите атаку SQL-инъекции.

Richard MacCutchan

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

1 Ответов

Рейтинг:
2

Thregarth

Что вам нужно, так это прочитать из таблицы пациентов по выбранному значению lstnames и передать значение других полей в текстовые поля

'Create Connection from connectionString

Dim objConnection As New OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\Temp\Hospital.mdb;")
'Create a command

Dim objCommand As New OleDbCommand("Select [Patient Name],[Ward],[Notes] From Patients  Where PatientID ='" & lstNames.SelectedValue & "'", objConnection)
Dim reader As OleDbDataReader
'Open connection

objConnection.open()
'Execute query

reader = command.ExecuteReader()

' Always call Read before accessing data.
While reader.Read()
    txtName.Text=reader.GetValue(0)
    txtWard.Text = reader.GetValue(1)
    txtNotes.Text = reader.GetValue(2)
End While
reader.close


Для получения дополнительной документации, пожалуйста, прочтите Документация MSDN-OleDbDataReader.метод read