Grundlage; Frage zu Befüllung DataTable und wieder auslesen

  • VB.NET

Es gibt 5 Antworten in diesem Thema. Der letzte Beitrag () ist von ErfinderDesRades.

    Grundlage; Frage zu Befüllung DataTable und wieder auslesen

    Hallo,

    ich muß euch nochmal fragen...

    Habe zwei Datatables.... eine Im DataSet (kunden) und eine selbst angelegte Datatable (letzteBesuche).

    Die Kunden DT wird durch

    VB.NET-Quellcode

    1. 'TODO: Diese Codezeile lädt Daten in die Tabelle "DBSysDataSet.Tab_Firmen". Sie können sie bei Bedarf verschieben oder entfernen.
    2. Me.Tab_FirmenTableAdapter.FillBy_SucheFirma(Me.Database1DataSet.Tab_Firmen, tstb_SucheFirma.Text, SF_Wert)
    gefüllt - FUNKTIONIERT.

    nun lasse ich die DT LetzteBesuche so füllen - deshalb so, weil ich diese noch für andere Auswertungen benötige, wo nur Kundennr. und die ltzten Besuche drinnen stehen:

    VB.NET-Quellcode

    1. Private Sub BesucheLaden()
    2. Dim ConStr As String = My.Settings.Database1ConStr
    3. Dim da As New OleDbDataAdapter("SELECT KB_FID, KB_Datum FROM Tab_KontaktBericht", ConStr)
    4. da.Fill(Database1DataSet, "DT_LetzterBesuch")
    5. DataGridView1.DataSource = Database1DataSet.DT_LetzterBesuch
    6. End Sub


    Jetzt versuche ich die DT LetzteBesuche mit folgendem Code auszulesen, ABER... ich benötige immer nur den Besuch mit dem höchsten Datum also aller SQL Abfrage "MAX(KB_Datum) WHERE KB_FID = blabla"

    VB.NET-Quellcode

    1. Dim foundRows() As DataRow
    2. foundRows = Database1DataSet.DT_LetzterBesuch.Select("KB_FID = " & Tab_FirmenDataGridView.Rows(i).Cells(0).Value & "")
    3. If foundRows IsNot Nothing Then
    4. LetzterBeruchDatum = ""
    5. End If

    Wie kann ich hier eine MAX() funktion einbauen ???

    Gruß lris
    Ja das funktioniert auch soweit...

    Brauche aber ID und letzter Besuch für weitere Auswertungen noch als extra DT.

    Habe nun im DataSet (Designer) einen weiteren TableAdapter angelegt mit einer dementsprechenden Abfrage:

    SQL-Abfrage

    1. SELECT KB_ID AS Expr1, MAX(KB_Datum) AS Expr2, KB_ID
    2. FROM Tab_KontaktBericht
    3. GROUP BY KB_ID


    so fülle ich:

    VB.NET-Quellcode

    1. 'TODO: Diese Codezeile lädt Daten in die Tabelle "DBSysDataSet.Tab_Firmen". Sie können sie bei Bedarf verschieben oder entfernen.
    2. Me.Tab_KontaktBericht1TableAdapter.Fill(Me.Database1DataSet.Tab_KontaktBericht1)
    3. Me.Tab_FirmenTableAdapter.FillBy_SucheFirma(Me.Database1DataSet.Tab_Firmen, tstb_SucheFirma.Text, SF_Wert)

    In der KontaktBericht1 sind alle Kontakte enthalten... daher ohne WHERE... aber mit Max!

    Und so habe ich eben erst versuche (1. Versuch) den Tab_KontaktBericht1 wieder auszulesen:

    VB.NET-Quellcode

    1. Dim customersRow As Database1DataSet.Tab_KontaktBericht1Row
    2. customersRow = Database1DataSet.Tab_KontaktBericht1.FindByExpr1(Tab_FirmenDataGridView.Rows(i).Cells(0).Value)
    3. If customersRow IsNot Nothing Then
    4. MsgBox(customersRow(1).ToString())
    5. LetzterBeruchDatum = customersRow(1).ToString()
    6. Tab_FirmenDataGridView.Rows(i).Cells(5).Value = customersRow(2).ToString()
    7. End If


    Gibt aber noch kein ERgebnis!

    lris08 schrieb:

    Ja das funktioniert auch soweit...

    Brauche aber ID und letzter Besuch für weitere Auswertungen noch als extra DT.


    Hmm - die berechnete Spalte liefert doch die ID des letzten Besuchs - was willst du da nun extra noch von der DB abrufen - die Besuche liegen doch im Dataset vor, oder nicht?