Benutzer mit den meisten Antworten
Abfrage und append Linq / SQL

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 durch1.) Der Wert wird nicht hinzugefügt
2.) Der Count Wert bleibt gleich
geht das Überhaupt so ?
Danke an alle
Bernhard Meyer Danke
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- Als Antwort vorgeschlagen Dimitar DenkovMicrosoft contingent staff, Moderator Montag, 7. Juni 2021 08:10
- Als Antwort markiert Dimitar DenkovMicrosoft contingent staff, Moderator Dienstag, 22. Juni 2021 06:42
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 -
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
- Bearbeitet Bernhard Meyer Donnerstag, 3. Juni 2021 17:30
-
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- Als Antwort vorgeschlagen Dimitar DenkovMicrosoft contingent staff, Moderator Montag, 7. Juni 2021 08:10
- Als Antwort markiert Dimitar DenkovMicrosoft contingent staff, Moderator Dienstag, 22. Juni 2021 06:42
-
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ß,
DimitarBitte 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.