Tabelle1 in abhängigkeit zu Tabelle 2 filtern

  • VB.NET

Es gibt 22 Antworten in diesem Thema. Der letzte Beitrag () ist von MichaHo.

    Tabelle1 in abhängigkeit zu Tabelle 2 filtern

    Hallo,

    ich erstelle gerade eine kleine Anwendung für die Buchhaltung, damit die Mädels ihre Rechnungen, die im Haus im Umlauf sind erfassen können.
    dazu habe ich ein Dataset mit 2 Tabellen erstellt. Tabelle1 (Lieferant) bezieht seine Daten direkt vom SQL Server, die Zellen sind alle ReadOnly. Tabelle 2 (Rechnungen) hat eine Verbindung zu Tabelle 1 über die LiefreantenID.
    Nun würde ich gerne Tabelle 2 nach Gebucht Datum filtern (kein Problem), allerdings sollen dann in Tabelle 1 nur DIE Lieferanten angezeigt werden, die auch offene Rechnungen haben (also Rechnungen, wo Gebucht is Null ergibt)
    Wie kann ich also Tabelle 1 und 2 nach Gebucht Datum filtern? Gebucht Datum gibt es lediglich in Tabelle 2
    anbei das Datenmodell und ein Screenshot von der Anwendung
    Danke Euch
    Michael
    Bilder
    • Anwendung.PNG

      77,36 kB, 1.733×657, 154 mal angesehen
    • Datenmodell.PNG

      12,39 kB, 460×324, 150 mal angesehen
    "Hier könnte Ihre Werbung stehen..."
    ok, das filtern bekomme ich hin, die Spalte in die Lieferanten Tabelle einfügen schaff ich auch noch, aber was trage ich dann wo ein das er die Anzahl der Rechnungen in dieser Spalte anzeigt?

    Die Edit: ich habe nun eine Spalte in die Tabelle Lieferanten hinzugefügt und deren Expression auf isnull(sum(child(FK_Lieferant_Rechnung).RG_Betrag),0) gesetzt.

    dann habe ich die LieferantenBindingSource nach AnzahlRg > 0 gefiltert. Ergebnis ist, das nun keine Lieferanten angezeigt werden :(
    Lasse ich den Filter weg, zeigt mir die Spalte AnzahlRg die Summe aller Rechnungsbeträge, allerdings auch die, die schon gebucht wurden.
    Ich will ja nur alle Rechnungen irgendwie filtern, die noch nicht gebucht wurden also kein Datum im Feld Gebucht stehen haben (oder leer ist) und die dazugehörigen Lieferanten anzeigen....

    Die Edit2: mein Versuch eine IIF Abfrage in die Spalte AnzahlRg zu integrieren geht leider auch schief: iif((FK_Lieferant_Rechnung).Gebucht is Null,1,0)
    ich bräcuhte ja irgendwie eine wenn dann formel. wenn in Tabelle2.Gebucht null ist dann addiere oder zähle Rechnung, sonst mach nix. ich bekomme es leider nicht hin diese Abfrage als Expression zu wandeln

    "Hier könnte Ihre Werbung stehen..."

    Dieser Beitrag wurde bereits 2 mal editiert, zuletzt von „MichaHo“ ()

    @ErfinderDesRades
    ich hab jetzt sämtliche Varianten der DataExpression ausprobiert, ich bekomme es einfach nicht hin der Spalta AnzahlRg zu verklickern das ich nur die offenen Rechnungen haben will.
    Offen sind nur DIE Rechnungen, die in der Spalte Gebucht NICHTS stehen haben....

    mit Count(child.Gebucht) bekomme ich die Anzahl aller gebuchten Rechnungen. ich will aber ja die Anzahl aller ungebuchten Rechnungen.
    Jedoch egal ob ich isnull(child.Gebucht) nehme oder mit iif versuche es gelingt mir einfach nicht.
    Hast Du nen Tip?
    "Hier könnte Ihre Werbung stehen..."
    Hallo,
    mit Linq kenne ich mich garnicht aus, sieht kompliziert aus... lese ich kich mal rein wenn ich das Projekt hier fertig habe.
    Anbei nun mein Sample Projekt.
    Wie gesagt, ich möchte gerne in der rechten Tabelle nur die Lieferanten aufgeführt haben, die im linken Fenster offene Rechnungen haben. Offen sind sie dann, wenn im Feld "Gebucht" kein Datum hinterlegt ist.
    Dateien
    • SampleVBP.zip

      (189,91 kB, 162 mal heruntergeladen, zuletzt: )
    "Hier könnte Ihre Werbung stehen..."

    MichaHo schrieb:

    Nun würde ich gerne Tabelle 2 nach Gebucht Datum filtern (kein Problem), allerdings sollen dann in Tabelle 1 nur DIE Lieferanten angezeigt werden, die auch offene Rechnungen haben (also Rechnungen, wo Gebucht is Null ergibt)
    Dassis bisserl unklar.
    Kann es sein, dass du einen Zeitfilter für Gebucht erstellen willst, und Lieferant soll nur die Lieferanten anzeigen, die innerhalb dieses Zeitfilters was mit Gebucht Is Null haben?
    Weil das annere - Lieferanten, die überhaupt was gebuchtes haben - wäre einfacher.
    Falls ersteres: Warum ist in deim Sample kein Zeitfilter schaltbar?
    In DataExpressions: Filter und berechnete Spalten im Dataset gibts einen sehr praktischen Ansatz, inklusive ein lauffähiges Beispiel mit Zeitfilter.

    Edit: ups - scheinbar hast du deine Anforderung seit post#1 geändert - odr?
    Zum Datenmodell wäre anzumerken, dass Währung natürlich eine übergeordnete Tabelle sein muss, deren Werte per ComboboxColumn einzubinden sind.

    So wie's jetzt ist - findich eiglich prima - da könnte ich wieder "D-Mark" eintragen für meine Rechnungen ;)
    Dateien
    • SampleVBP00.zip

      (66,7 kB, 142 mal heruntergeladen, zuletzt: )

    Dieser Beitrag wurde bereits 2 mal editiert, zuletzt von „ErfinderDesRades“ ()

    Hahahah--- Geilo---- D-Mark... ich hatte da drüber nachgedacht eine zusätzliche Tabelle für Währung zu machen... hatte ich dann verworfen.....

    im Sample fehlt aber eh noch die Tabelle Mitarbeiter, die ist im Original auch drinn und mit Rechnung verknüpft.

    Ich beschreibe nochmal kurz das Problem.

    Rechts ist ja die Tabelle Lieferant hinterlegt, dort sind ALLE Lieferanten drin, alle die wir haben. (größer 2000 Datensätze) rechts werden dann je Lieferant die vorhandenen Rechnungen angeziegt, egal ob gebucht oder nicht.

    Jetzt kann ich die Tabelle Rechnung zwar nach gebucht is null Filtern und sehe dann eben nur offene Rechnungen, muss DANN aber jeden Lieferanten durchgehen um zu sehen ob der Lieferant offene Rechnungen hat, daher würde ich gerne die Tabelle Lieferanten ZUSÄTZLICH danach filtern ob die zugehörigen Rechnungen offen sind oder nicht.
    Weil sonst würden die Mädels sich nen Wolf suchen um zu sehehn, welche Rechnungen sind im Haus noch im Umlauf...

    Daher müsste in Tabelle Lieferant irgendein Hinweis hinterlegt werden. Ich habe dann AnzahlRg hinzugefügt, nur scheitere ich jetzt daran dieser Spalte zu sagen das er auf Rechnung.Gebucht is Null reagieren soll.

    Es müsste ja dann ungefähr so aussehen: Wenn TabelleRechnung.Gebucht is null dann TabelleLieferantAnzahlRg = summe aller Rechnungsbeträge, sonst zähle alle Rechnungen weil dann könnte ich Tabelle Lieferant filtern:

    VB.NET-Quellcode

    1. LieferantBindingSource.Filter = "AnzahlRg > 0"
    und sollte dann nur die Lieferanten haben, die auch offene Rechnungen haben.

    Ich hoffe ich konnte es jetzt besser erläutern. Falls nicht, ich hätte auch Teamviewer und ein Telefon :)
    "Hier könnte Ihre Werbung stehen..."
    uuups.... ich dachte das wäre die gleiche wie die, die ich hoch geladen hab.... sorry.... mach ich natürlich sofort...

    EDIT: @ErfinderDesRades ich muss/kann da eigentlich nur eins sagen: GEILER SCHEIß.... funktioniert genau so, wie ich es haben wollte.....
    jetzt muss ich zwar den Rest vom Tag dazu verwenden da durch zu blicken, aber das wird schon.... ich Danke Dir....
    btw. ist dieses HelperSmallEd so, das ich es in jedes Programm einbauen kann?
    "Hier könnte Ihre Werbung stehen..."

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „MichaHo“ ()

    @EfinderDesRades: ich habs nun in mein Projekt eingebaut, alle Verweise gesetzt und die entsprechenden Stellen angepasst. Aber leider wird die Lieferanten Tabelle nicht gefiltert, nur die Rechnung Tabelle. Muss ich noch irgendwo was einstellen?
    "Hier könnte Ihre Werbung stehen..."
    und bei mir werden die Lieferanten richtig gefiltert, und bei dir nicht?

    Das liegt entweder daran, dass du was falsch gemacht hast, oder, dass alle deine Lieferanten ausnahmslos offene Rechnungen haben - weil dann ist ja nix wegzufiltern.
    In deim Sample etwa musste ich eine offene Rechnung löschen (dassis noch besser als das mitte D-Mark! ;) ), um ühaupt zu sehen, dass der Filter filtert.
    Hm... wenn keine Rechnung beim Lieferanten bedeutet das der Filter dies als offene Rechnung sieht, dann könnte das passen.

    Ich hab jetzt aber auch so wahnsinnig viel an dem Projekt rumgebastelt das ich garnicht mehr weis was ich alles geändert habe.

    Ich hab daher beschlossen das ganze Ding noch einmal neu aufzusetzen. Dein Sample nehm ich aber auf jedenfall mit, das ist nämlich genial....

    Das passt sich automatisch an das bestehende Projekt an richtig? auch wenn neue Tabellen hinzukommen oder Datasets ganz anders heissen usw.
    "Hier könnte Ihre Werbung stehen..."

    MichaHo schrieb:

    Hm... wenn keine Rechnung beim Lieferanten bedeutet das der Filter dies als offene Rechnung sieht, dann könnte das passen.
    hmm?
    Bei mir werden Lieferanten ohne Rechnung auch ausgefiltert.

    MichaHo schrieb:

    Hm... wenn keine Rechnung beim Lieferanten bedeutet das der Filter dies als offene Rechnung sieht, dann könnte das passen.
    ne - wenn du das Datenmodell änderst, dann musste auch in meim Code was ändern.

    Ach, du meinst das Helpers-Projekt, ja. Das ist alles wiederverwendbarer Code. Also selbst anpassen tut der sich nicht, aber das Zeugs dadrin ist unabhängig vom konkreten Datenmodell, und daher vielseitig wiederverwendbar, auch in anderen Projekten.
    Die von mir benutzten Extension sind dabei ja nur paar wenige unter hunderten, und das meiste des Helpers-Projektes hat auch garnix mit Datasets etc. zu tun.