2016-04-27 8 views
0

Dies ist mein erster Tag hier auf dieser Seite, auf der Suche nach großer Hilfe von jedem von euch da draußen als großartige Quelle für Anfänger wie mich . Ich hoffe, ich werde viel von dieser Seite lernen.VB.Net Wie Informationen aus Textfeldern aus SQL Server abgerufen werden Tabelle mit Select-Anweisung mit Where-Klausel

Auf den Punkt: Ich schreibe VB für Desktop-Anwendung mit VB.NET mit MS SQLServer 2014, derzeit auf meinem Rechner installiert. Mein Projektname heißt "Employees Database". Ich habe Formular mit einigen Textfeldern erstellt, wo Mitarbeiter Informationen aus der SQL Server-Tabelle "tblEmployees"

abrufen möchte Ich habe es bereits geschafft, die Listview mit Benutzerdetails aus SQL Server Tabelle "tblEmployees" mit folgendem Code zu füllen.

Imports System.Data.SqlClient 
Public Class frmManageEmploye 
    Dim cn As New SqlConnection With {.ConnectionString = "Data Source=ANGD0542;Initial Catalog=ES&HDB;Integrated Security=True"} 
    Dim cmd As New SqlCommand 
    Dim dr As SqlDataReader 
    Private Sub filllistview() 

     cn.Open() 
     With cmd 
      .Connection = cn 
      .CommandText = "SELECT EmpID, EmpName, Company, JobTitle, CraftClass, CraftCode, Department, Superintendent, Nationality, HireDate, ImagePath FROM tblEmployees" 
     End With 
     dr = cmd.ExecuteReader 
     While dr.Read 
      With emplistview 
       .Items.Add(dr.Item(0)) ' Emp Badge 
       With .Items(.Items.Count - 1).SubItems 
        If Not IsDBNull(dr(1)) Then ' Emp Name 
         .Add(dr(1)) 
        End If 
        If Not IsDBNull(dr(2)) Then ' Company 
         .Add(dr(2)) 
        End If 
        If Not IsDBNull(dr(3)) Then ' Job Title 
         .Add(dr(3)) 
        End If 
        If Not IsDBNull(dr(4)) Then ' Craft Class 
         .Add(dr(4)) 
        End If 
        If Not IsDBNull(dr(5)) Then ' Craft Code 
         .Add(dr(5)) 
        End If 
        If Not IsDBNull(dr(6)) Then ' Department 
         .Add(dr(6)) 
        End If 
        If Not IsDBNull(dr(7)) Then ' Superintendent 
         .Add(dr(7)) 
        End If 
        If Not IsDBNull(dr(8)) Then ' Nationality 
         .Add(dr(8)) 
        End If 
        If Not IsDBNull(dr(9)) Then ' Hire Date 
         .Add(dr(9)) 
        End If 
        If Not IsDBNull(dr(10)) Then 'Image Path 
         .Add(dr(10)) 
        End If 

       End With 
      End With 
     End While 
     cn.Close() 
    End Sub 

    Private Sub frmManageEmploye_Load(sender As Object, e As EventArgs) Handles MyBase.Load 
     filllistview() 
    End Sub 

    ... 
End Class 

Nun meine nächste Herausforderung ist es, die Benutzerinformationen zu den Textfeldern ich in meinem Formular abzurufen, wenn ich die Plakette Anzahl von bestimmten Mitarbeiter in der Listenansicht klicken, zusammen mit Mitarbeiter-Bild aus dem Bildpfad, Ich habe in der SQL Server-Tabelle gespeichert. Ich möchte dies erreichen durch Select-Anweisung mit Where-Klausel.

Ich bin mir sicher, dass dies die altbekannte Frage war, die jemand in der Vergangenheit bereits gestellt hatte, seit ich gerade zu VB.Net gewechselt bin. Ich versuche das zu lernen. Bitte helfen Sie, im Voraus geschätzt!

+0

Ihr erster Fehler ist ein Listview mit einer DB-Anwendung zu verwenden. Mit einem DataGridView können Sie den gesamten Code entfernen und durch folgenden ersetzen: 'dgv.DataSource = myDataTable'. Das Problem mit dem LV ist, dass alles String ist (und es ist nicht wirklich ein Grid). – Plutonix

+0

Hallo Plutonix, Vielen Dank für die schnelle Antwort, ich habe zwar etwas von der Verwendung der Datagrid-Ansicht, aber seit ich mich entschieden habe, mit LV nach einer Lösung zu suchen. Aber sicher werde ich irgendwann mal mit DGV versuchen. Danke – Aman124612

+0

Also, was ist deine Frage? Sie erstellen die SELECT-Anweisung genau so, wie Sie sie jetzt haben, fügen eine WHERE-Klausel hinzu, die einen Parameter für die Badge-Nummer akzeptiert, füllen diesen Parameter mit der Nummer, die Sie abgleichen möchten, und führen die SQL-Anweisung genau wie jetzt aus. Dann verwenden Sie die Daten genau so, wie Sie die Daten jetzt verwenden. Was brauchst du mehr? –

Antwort

0

Sorry, vielleicht war ich nicht genug Hackbeil um Hilfe zu bitten. Ich wollte jedoch die Ansicht von Mitarbeiterbild auf dem Formular erreichen, wo EmpID gleich ListView.selecteditems auf Click-Ereignis ist. Ich habe den Bildpfad in der sql Servertabelle gespeichert und die Bilder werden im Anteillaufwerk gespeichert, da das Anfügen des Bildes selbst in die Datenbanktabelle keine gute Idee ist. Nachdem ich mit dem Code und ein bisschen extra harte Arbeit herumgespielt habe, habe ich irgendwie das Ergebnis erreicht, wie ich es wollte.

Ich habe es geschafft, die Informationen in den Formularfelder mit dem folgenden Code abzurufen. Adaequat, als ich auf der Listenansicht klicken den Mitarbeiter Informationen zum Text Abrufen Felder

Private Sub emplistview_Click(sender As Object, e As EventArgs) Handles emplistview.Click 
    cn.Open() 
    With cmd 
     .Connection = cn 
     .CommandText = "SELECT * FROM tblEmployees where EmpID='" & emplistview.SelectedItems.Item(0).SubItems(0).Text & "'" 
    End With 
    dr = cmd.ExecuteReader 
    While dr.Read 
     txtEmpID.Text = dr.Item("EmpID") 
     txtEmpName.Text = dr.Item("EmpName") 
     txtcompany.Text = dr.Item("Company") 
     txtjobtitle.Text = dr.Item("JobTitle") 
     txtcraftclass.Text = dr.Item("CraftClass") 
     txtNationality.Text = dr.Item("Nationality") 
     txtcc.Text = dr.Item("CraftCode") 
     txtdepartment.Text = dr.Item("Department") 
     txtsuperintendent.Text = dr.Item("Superintendent") 
     txthiredate.Text = dr.Item("HireDate") 
     txtImagePath.Text = dr.Item("ImagePath") 

    End While 
    cn.Close() 
    'ShowImage() 
    getempimage() 
End Sub 

ich ein anderes Unter erstellt habe Bildpfad zu erhalten und abrufen Bild aus dem Ordner aus anteil Laufwerk, und die tatsächlichen geben Sie mich nach Bedarf führen. Bitte informieren Sie, wenn der folgende Code effektiv geschrieben oder irgendwelche größeren Ideen, um das Ziel

Public Sub getempimage() Versuchen 'Initialisieren Sie die Verbindung mit SQL Server Dim connString As String = „Data Source = ANGD0542 zu erreichen; Initial Catalog = ES &HDB; Integrierte Sicherheit = Wahr; " Dim dbadaptor As New SqlDataAdapter Dim dbdataset As New DataSet Dim DbConnection Wie SqlConnection DbConnection = New SqlConnection (connString) 'Open Verbindung dbconnection.Open() ' das Bild Mitarbeiter Wählen Sie aus dem Tisch, an dem Mitarbeiterausweis gleich Listenansicht ausgewählten Elemente dbadaptor = New SqlDataAdapter ("select ImagePath aus tblPersonal WHERE EmpID = '" & emplistview.SelectedItems.Item (0) .SubItems (0) .Text & "'", DbConnection) dbadaptor.Fill (dbdataset) If (dbdataset.Tables (0) .Rows.Count - 1> = 0) Dann PictureBox1.Image = Image.FromFile (db Dataset.Tables (0) .Rows (0) .Item (0) .ToString) Ende If Catch ex Als Ausnahme 'Nachricht anzeigen, wenn Bild nicht gefunden oder an Tabelle MessageBox angefügt ist.Show („Employee Bild nicht gefunden“) Schließlich

 If cn.State = ConnectionState.Open Then 
      'Close connect if connection state is still open 
      cn.Close() 
     End If 
    End Try 
End Sub 

Danke

Verwandte Themen