none
Abfrage und append Linq / SQL RRS feed

  • Frage

  • Hallo Welt,

    ich habe folgende Abfrage

      Dim Rec3 = From ucHzb In Rec2 Let Summe = (ucHzb.Anzahl * CDbl(ucHzb.Länge)) Select ucHzb.ArtNr, ucHzb.Name, ucHzb.Beschreibung, ucHzb.Länge, ucHzb.Anzahl, Summe

    Jetzt möchte ich noch eine Zeile hinzufügen:

    strA bis F ist immer ein Wert zugeordnet - als Object wenn notwendig

     Dim a = New With {Key .ArtNr = strA, Key .Name = strB, Key .Beschreibung = StrC, Key .Länge = StrD, Key .Anzahl = StrE, Key .Summe = StrF}
            Debug.Print(Rec3.Count)
            Rec3.Append(a)
            Debug.Print(Rec3.Count)

    Ich kann das Programm starten ohne fehler
    Es läuft auch ohne Fehler durch

    1.) Der Wert wird nicht hinzugefügt

    2.) Der Count Wert bleibt gleich

    geht das Überhaupt so ?

    Danke an alle


    Bernhard Meyer Danke

    Donnerstag, 3. Juni 2021 13:35

Antworten

  • Hi Bernhard,
    wenn du einem DataGrid als ItemsSource eine vorher deklarierte Abfrage zuweist, wird in dem Moment, wenn die Anzeige aktualisiert wird (Refresh), diese Abfrage ausgeführt und die Ergebnisse in der Oberfläche dargestellt. Es gibt da keinen Puffer, in dem weitere Datenobjekte abgelegt werden können. Um das zu ermöglichen, musst du erst einmal die Abfrage ausführen, die Ergebnisse in einer Liste ablegen (persistieren, z.B. mittels ToList()) und diese Liste als ItemsSource binden. Neu hinzugefügte Datenobjekte werden dann dieser Liste hinzugefügt.

    --
    Best Regards / Viele Grüße
    Peter Fleischer (former MVP for Developer Technologies)
    Homepage, Tipps, Tricks

    Freitag, 4. Juni 2021 04:55

Alle Antworten

  • Hi Bernhard,
    das geht nicht!

    Rec3 ist eine Deklaration für eine Abfrage, keine Liste!. Erst, wenn die Abfrage genutzt wird, wird sie auch ausgeführt. Das passiert bei dir beim Abrufen von Count. D.h., in dem Moment, wo Count ausgeführt wird, wird auch die Abfrage ausgeführt.

    a ist ein anonymes Objekt. Dieses kann man nur einer nicht typisierten Liste hinzufügen, was dann auch nur innerhalb der Methode gültig ist.


    --
    Best Regards / Viele Grüße
    Peter Fleischer (former MVP for Developer Technologies)
    Homepage, Tipps, Tricks

    Donnerstag, 3. Juni 2021 16:02
  • Hallo Peter,

    ich habe vergessen, dass ich das rec3 einem DATAGRID als Source zuweise.

    Hier kann ibekomme ich aber ein Items.Add auch nicht hin es wird dann auf die

    "ItemsControl.ItemsSource verwiesen die ich verwenden soll ??


    Eigentlich geht es nur darum, dass ich dem Datgrud weitere Zeilenmanuell hinzufügen möchte


    Bernhard Meyer Danke


    Donnerstag, 3. Juni 2021 17:27
  • Hi Bernhard,
    wenn du einem DataGrid als ItemsSource eine vorher deklarierte Abfrage zuweist, wird in dem Moment, wenn die Anzeige aktualisiert wird (Refresh), diese Abfrage ausgeführt und die Ergebnisse in der Oberfläche dargestellt. Es gibt da keinen Puffer, in dem weitere Datenobjekte abgelegt werden können. Um das zu ermöglichen, musst du erst einmal die Abfrage ausführen, die Ergebnisse in einer Liste ablegen (persistieren, z.B. mittels ToList()) und diese Liste als ItemsSource binden. Neu hinzugefügte Datenobjekte werden dann dieser Liste hinzugefügt.

    --
    Best Regards / Viele Grüße
    Peter Fleischer (former MVP for Developer Technologies)
    Homepage, Tipps, Tricks

    Freitag, 4. Juni 2021 04:55
  • Hallo Bernhard,

    Ich gehe davon aus, dass Du mit den von Peter empfohlenen ToList() und ItemsSource weitergekommen bist. Solltest Du noch Rückfragen haben, gib bitte Bescheid.

    Gruß,
    Dimitar


    Bitte haben Sie Verständnis dafür, dass im Rahmen dieses Forums, welches auf dem Community-Prinzip „IT-Pros helfen IT-Pros“ beruht, kein technischer Support geleistet werden kann oder sonst welche garantierten Maßnahmen seitens Microsoft zugesichert werden können.

    Dienstag, 22. Juni 2021 06:42
    Moderator