Korrekte Abfrage für Dataset

  • VB.NET
  • .NET (FX) 4.5–4.8

Es gibt 10 Antworten in diesem Thema. Der letzte Beitrag () ist von hans im glück.

    Korrekte Abfrage für Dataset

    Hallo Zusammen

    Ich erstelle gerade ein kleines Programm mit einem strikt typisierten Dataset. Dank den guten Anleitungen von @EDR ging das bisher recht gut.
    Es läuft alles.

    Doch nun müsste ich eine Art Export Funktion schreiben, die eine Stückliste erstellt. Und ich habe leider keine Ahnung, wie die Abfrage dazu aussehen muss.
    Zuerst hier mal die Struktur eines Teils des Datasets:



    Es gibt also beliebig viele Desks, die jeweils aus beliebig vielen Chassis resp. Hardware bestehen.
    Und diese wiederum enthalten beliebig viele Kabel.

    Ich muss nun aus diesen Daten eine Art Stückliste exportieren. Dazu brauche ich jeweils alle Kabel (gruppiert nach Partnumber) und deren jeweiligen Anzahl. (Gruppiert über die beiden Tabellen tbl_ChassisCables und tbl_HWCables)

    Anschliessend bräuchte ich die gleiche Gruppierung von der Tabelle tbl_Chassis und dann noch von tbl_HW.

    Die Schwierigkeit besteht nun zusätzlich darin, dass man bei tbl_Desk ja noch eine Quantity eingeben kann. Das heisst alle untergeordneten Tabellen werden dann x mal benötigt.



    Zuerst wollte ich einfach alle Daten mit einer For..Each Schleife durchlaufen und die Quantity und Partnumber jeder Tabelle einfach in die Exportdatei schreiben. Aber dann kam die Aufgabe, dass das alles nach Partnumber gruppiert werden muss.

    Wie muss ich das angehen?

    Vielen Dank für Eure konstruktive Vorschläge und sorry, dass ich diese (für Euch vermutlich einfache Aufgabe) nicht selbst lösen kann.
    /Veronesi

    Edit:
    Sollte ich möglicherweise eine List(Of T) erstellen und dann doch mit einer For..Each Schleife alles durchgehen? Wenn dann die Daten noch nicht in dieser Liste sind, hinzufügen, sonst Anzahl verändern.....
    Bilder
    • TeilDesDatasets.png

      12,93 kB, 561×414, 142 mal angesehen

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

    Falls du für dieses Projekt Budget hast kannste List and Label nehmen. Hab ich im Einsatz. Macht spaß da sowas sehr hübsch in fünf Minuten zusammen geklickt ist.

    ansonsten linq abfrage oder über die .getchildrows der übergeordneten datarows
    Gruß Hannes
    @Hannes

    Danke für Deine Antwort.
    Leider habe ich dafür kein Budget zur Verfügung. (Ausser Arbeitszeit :) )

    Aber ich werde mir das "List and Label" trotzdem mal anschauen. Vielleicht ist es ja irgendwann mal hilfreich.

    /Veronesi

    Veronesi schrieb:

    Sollte ich möglicherweise eine List(Of T) erstellen und dann doch mit einer For..Each Schleife alles durchgehen?
    Ja, ist doch nicht weiter schwer, oder?

    Mich wundert nur

    Veronesi schrieb:

    Wenn dann die Daten noch nicht in dieser Liste sind, hinzufügen, sonst Anzahl verändern....
    Weil nach dem Datenmodell kanns nicht vorkommen, dass ein Kabel schon in der Liste ist.

    Und die .GetChilds()-Methode grad nicht nehmen, sondern die typisierten Alternativen davon: tbl_Chassis.GetTbl_ChassisCablesRows() (gott wie schaurig benamt!) und sowas.
    @EDR
    Danke für die Antwort.
    Das mit der List(of T) ist mir eben erst später eingefallen.

    Die Kabel können schon mehrfach vorkommen.
    Ich kann ja beliebig viele Rows in tbl_Chassis haben. Und jedes Chassis KANN (muss aber nicht) die gleichen Kabel enthalten.

    Und schlussendlich muss ich beim Export ja alle Kabel von allen Chassis gruppiert haben.

    Aber vielen Dank. Mit der Liste funktioniert es.

    /Veronesi
    Ja, das ist richtig.

    Mein Datenmodell ist wirklich noch nicht korrekt!

    Das ändere ich auch gleich noch.
    Mir ging es aber vorerst nur mal um das Prinzip, wie ich das mache. Und das mit der Liste ist perfekt.

    Aber das Datenmodell muss ich auch noch verbessern!
    Vielen Dank!

    /Veronesi
    Seid ich Deine Vier Views Videos gesehen habe, bin ich begeistert von typisierten Datasets!

    Ich gebe mir die größte Mühe, nichts untypisiertes zu machen. (Außer das berühmte zweimal Casten)

    Ist aber als Anfänger nicht immer leicht, die richtigen Funktionen zu finden.

    Aber Du hast mir ja geschrieben, welche typisierten Befehle ich dafür verwenden kann.

    Alles gut :)

    /Veronesi

    ErfinderDesRades schrieb:

    Du machst Witze.


    das soll jetzt keine schleimerei sein:

    ich mache keine witze, ich habe die letzten jahre ja hauptsächlich von dir erfahren was typisiert bedeuten kann.
    und "kann" soll zum ausdruck bringen, dass ich mich noch immer als anfänger bezeichnen würde.

    aber mittlerweile weiß ich den comfort der typisierten vorgehensweise zu schätzen.
    ich hab ja auch mal mit ef rumexperimentiert, aber das war mir zu steinig.
    Gruß Hannes