Typisierte Abfragen

  • VB.NET
  • .NET 4.5

Es gibt 3 Antworten in diesem Thema. Der letzte Beitrag () ist von VaporiZed.

    Typisierte Abfragen

    Hallo,

    nach längerem habe ich auch mal wieder eine Frage.

    Ich habe mich in den letzten Tagen intensiv mit dem typisierten Datasets usw. beschäftigt, insbesondere die Artikel von ErfinderDesRades, der mir (und auch vielen anderen) ja das Arbeiten mit typisierten Datasets empfiehlt.

    Gehen wir mal von einem ganz einfachen Auftragsprogramm aus: tblKunden (Stammdaten,...) tblAufträge (Auftragsnummern, Gesamtsumme(berechnete Spalte), Auftragsmetadaten) tblAuftragsdetails (Die Artikel die zu einem Auftrag gehören).
    Und was soll ich sagen, das klappt ausgezeichnet mit 3 Datagridviews, man wählt einen Kunden aus, sieht alle Aufträge, kann einen ebensolchen auswählen und Artikel hinzufügen. Zusätzliche DGVs als Übersicht aller Aufträge etc. bekomme ich nun alles hin. (Benötigt ja auch fast keinen code, kann man ja alles "designen". Sehr komfortabel.

    Was mir fehlt sind nun zwei sachen bei denen ich hoffe, dass ihr mir auf die Sprünge helfen könnt:

    Ich hätte gerne ein Formular für die Kunden das im grunde aussieht wie ein detail view, also eine Textbox für jedes Datenbankfeld usw. Nur, dass diese quasi leer geöffnet wird und ich dann in jedem Feld mit Wildcards suchen kann. Also zum Beispiel auch nach Nachname und Stadt gleichzeitig usw. Wenn mehrere Datensätze gefunden werden muss natürlich eine Liste (DataGridView?) angezeigt werden mit allen Treffern und wenn einer ausgewählt wird (oder nur ein Treffer erzielt wird) sollen die Felder des Detail Views gefüllt werden.
    Mit Bindingsource.filter habe ich schon gewisse Erfolge beim Suchen in DGV erzielt (bzw. filtern der bindingsource...) allerdings ist es dort auch mit viel arbeiten mit Strings verbunden, was ja eigentlich zu vermeiden ist). Außerdem werden dann im DetailView schon Daten angezeigt bevor etwas ausgewählt wurde. Ohne Databinding bekomme ich den Detailview nicht richtig "beschrieben" bzw zurückgespeichert...

    Zweitens: Bei den Aufträgen die ich mit Artikeln bestücke habe ich zunächst noch keine "Artikeldatenbank"(Keine Tabelle, nichts) es werden alle Details per Hand eingegeben. Klappt super.
    Jetzt möchte ich eine Artikeltabelle hinzufügen die dann die Informationen "Artikelnummer" "Beschreibung" "PreisEinheit" "Preis" enthält. Klappt auch. Nur dann ist der Preis im Auftrag fix gesetzt. Ich kann dann nicht einen Artikel im Auftrag 1 100Euro kosten lassen und in Auftrag 2 200 Euro. Den hinterlegten Preis möchte ich lieber als unverbindlich ansehen, sodass dieser im Auftrag später noch geändert werden kann. Wird er nicht geändert soll natürlich der Standardpreis genutzt werden. Wie gehe ich damit um?

    Danke schonmal für eure Hilfe.
    Und dann noch nebenbei: Mit VB allgemein komme ich mittlerweile ganz gut klar. Insbesondere die Datenbankarbeit und Datasets laufen nicht grade flüssig. Könnt ihr einen Kurs empfehlen wo man genau dieses lernen kann ? (muss nicht kostenlos sein, darf es aber :) ...).

    Grüße Philipp
    Zum 1. Formular: Eine Möglichkeit ist, dass Du TextBoxen hernimmst, die mit AutoCompleteSource arbeiten. Wildcards sind dann allerdings nicht möglich. Da müsstest Du wohl schon eher mit Regex oder ggf. eigen erstellten Suchalgorithmen eine Suche codieren. Und am Ende wird mit einem Submit-Button erst die tDS-DataRow erstellt.
    Zum Preisformular: Wenn Du keinen fixen Preis setzen willst, lager ihn in eine extra Tabelle aus. 1. Tabelle Artikeldaten, 2. Tabelle Preissatz mit AuftragsID oder Gültigkeitsdatum und Verweis (Foreign-Key) auf die Artikeltabellenzeile.
    Dieser Beitrag wurde bereits 5 mal editiert, zuletzt von „VaporiZed“, mal wieder aus Grammatikgründen.

    Häufig von mir verwendete Abkürzungen: CEs = control elements (Labels, Buttons, DGVs, ...) und tDS (typisiertes DataSet)
    Aufgrund spontaner Selbsteintrübung sind all meine Glaskugeln beim Hersteller. Lasst mich daher bitte nicht in den Spekulatiusmodus gehen.
    Danke für die schnelle Antwort. Schade, dass es keine "einfache" Lösung gibt die ich nur nicht kannte :) Nagut, dann schaue ich mal ob ich es hinbekomme mir da mit regex etwas zu schreiben.
    Zum zweiten Punkt:
    Ich möchte, wenn ich den Artikel zu dem Auftrag hinzufüge gerne den "Standardpreis" der bei jedem Artikel hinterlegt wurde übernommen haben. Und nur bei Bedarf möchte ich diesen Preis manuell ändern (nur für den einen Auftrag gültig, in dem ich den Preis anpasse). Falls das mit der von dir genannten Version geht müsstest du das nochmal konkretisieren, denn so verstehe ich es noch nicht. Immer wenn ich den Preis verknüpfen will, kann ich ihn entweder nicht mehr im Auftrag ändern oder nur global gültig ändern, das ist nicht das was ich möchte.

    Danke :)
    Das kommt auf Dein Datenmodell an. Im Anhang ein Beispiel. Du legst erstmal die Artikel an, dann die Aufträge und die bestellten/zu bestellenden Artikel werden dann in der Zwischentabelle erfasst, eben mit: welcher Artikel, welcher Auftrag, welcher Auftragspreis pro Stück und welche Bestellmenge.
    Bilder
    • OrderedItems.png

      5,07 kB, 615×155, 12 mal angesehen
    Dieser Beitrag wurde bereits 5 mal editiert, zuletzt von „VaporiZed“, mal wieder aus Grammatikgründen.

    Häufig von mir verwendete Abkürzungen: CEs = control elements (Labels, Buttons, DGVs, ...) und tDS (typisiertes DataSet)
    Aufgrund spontaner Selbsteintrübung sind all meine Glaskugeln beim Hersteller. Lasst mich daher bitte nicht in den Spekulatiusmodus gehen.