Bindingsource und DialogForm

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

Es gibt 35 Antworten in diesem Thema. Der letzte Beitrag () ist von Akanel.

    Akanel schrieb:

    Setze ich das Datum hingegen auch mit dem DTP und nehme das Codeseitige setzen raus, erscheinen in beiden Spalten Datum mit Uhrzeit.
    Wieder die Exception.
    ich weiß nicht genau, was das bedeutet.
    Generell sollteste codeseitig garnix anne DTPs machen, sondern die Bindings solle ihren Job machen.
    Und wenn da iwie eine Uhrzeit mit hineingerät ist das ein schlechtes Zeichen, weil das sind wohl Schlüsselspalten vom Typ DateTime, und die müssen ja eiglich matchen, aber schon bei 1/10s abweichung matchen die nicht mehr und Exception.
    Kannst du nochmal den aktuellen Stand anhängen? möglichst ohne Binaries?
    Da habe ich mich wohl falsch ausgedrückt.
    Codeseitig wird an den DTP´s nicht geändert.
    Ich meinte damit das ich das RechnungsDatum Codeseitig in die RechDatumColumn setze, eigentlich könnte ich mir damit einen DTP sparen.

    Im Anhang der aktuelle Stand.
    Dateien
    • Rechnungen01.zip

      (46,4 kB, 102 mal heruntergeladen, zuletzt: )
    Rechtschreibfehler betonen den künstlerischen Charakter des Autors.
    Uff. Ich versuche das gleich nochmal mit Helpers. Darauf habe ich jetzt nicht geachtet.
    Ich habe die komplette Helpers aus dem OrdersVB übernommen, falls dir das hilft.
    Aber ich erstelle nochmal ein ZIP.

    Edit: Anhang hinzugefügt.
    Dateien
    • Rechnungen00.zip

      (66,13 kB, 95 mal heruntergeladen, zuletzt: )
    Rechtschreibfehler betonen den künstlerischen Charakter des Autors.

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

    Erstmal vielen Danke für die Hilfe.
    Ich habe mir Deinen Code mal angesehen, und denke im Endeffekt war es das selbe Problem wie vorher. Ich Schildere mal wie ich den Code Lese.

    Es wird eine neue RechnungRow angelegt, Das RechnungsDatum auf Heute und das LieferDatum auf Heute+7 Tage gesetzt. Dann wird die Bearbeitung der RechnungRow direkt wieder beendet.
    Nun wird die Angelegte RechnungRow wieder bearbeitet, und sollte der Dialog nicht mit OK abgeschlossen werden wird die RechnungRow wieder gelöscht.

    Jetzt verstehe ich aber nicht wieso es mit Deinen Helpers nicht funktioniert ( zumindest in meinem Projekt nicht ) und was das ganze mit den beiden Datumsen zu tun hatte.
    War das überhaupt der Grund? Konntest du es so reproduzieren wie ich es oben beschrieben hatte?
    Rechtschreibfehler betonen den künstlerischen Charakter des Autors.
    Nun es funktioniert so wie es soll beim Anlegen eines Datensatzes.
    Nur einen schon bestehenden Datensatz kann ich nicht bearbeiten, bzw da wird das Datum nicht übernommen oder gar falsch angezeigt.

    Dazu hänge ich später noch bilder an, erstmal muss ich verstehen was Du gemacht hast, und warum es so ist.
    Rechtschreibfehler betonen den künstlerischen Charakter des Autors.
    ich fund ühaupt nichts vorgesehen dafür, dass eine bestehende Rechnung den Dialog öffnen täte.
    Ausser das was ich gebastelt hab für **neue** Rechnungen - nämlich dass ich da onTheFly eine neue Rechnung anlege - dann ists ja eine bestehende Rechnung und kann mit EditCurrent editiert werden.
    Dieser hässliche "Kunstgriff" ist erforderlich, weil du im Dialog untergeordnete Artikel zufügen willst, und letzteres geht numal nicht mit neuen Rechnungen (wirklich neu: nämlich Rostate.Detached).
    Das läuft stabil, ist aber (wie besprochen) kein wirkliches Canceln der Neu-Anlage, wie es eiglich vonne ICancelNew-Schnittstelle gedacht ist.

    Ich hab was gefunden für Kunde und Artikel, aber nix für Rechnung.
    Und das für Kuznde, Artikel funzt auch net, weil das Dgv_DoubleClick-Event taugt nicht dafür. Du hast doch iwo eine Vorlage von mir - welche ist das, aus welchem Tut, und gibt die diesbezüglich nichts her?

    Weiters hast du ein schönes benamungstechnisches Kuddelmuddel, was micht gut 1h gekostet hat:
    Nämlich bei dir fährt eine bsRechnung herum, und eine bsKundeRechnung. Beide sind "Kunde" untergeordnet, also nach meiner Nomenklatur ist bsKundeRechnung korrekt benamt, und habich Versuche mit gemacht.
    Lief nix, weil dein Rechnung-Dgv haste an bsRechnung angebunden, obwohls ja KundeRechnungen präsentiert.
    "Nomen est Omen!" und was man nicht braucht muss weg!

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

    Ich werde mir alles nochmal ansehen und auch die Benamung korrigieren.

    ErfinderDesRades schrieb:

    Du hast doch iwo eine Vorlage von mir - welche ist das, aus welchem Tut, und gibt die diesbezüglich nichts her?


    Das stammt aus deinem Tutorial auf codeproject.com. Dort habe ich mir unter anderem den Code für das Anlegen der Rechnung abgeguckt.
    In deinem Tut wird da ja eine Bestellung auf diese Art angelegt. Im Grunde ist das doch ähnlich.
    Rechtschreibfehler betonen den künstlerischen Charakter des Autors.
    bestimmt verwende ich da kein Dgv_DoubleClicked - Event, oder täusche ich mich?

    Und v.a.: In deim Projekt gibts ja garkein Knopf oder whatEver, wo eine bestehende Rechnung zur Bearbeitung im Dialog geöffnet werden soll.
    Da gibts was für Kunden, für Artikel, und für Rechnungen nur für NeueRechnungen, aber nichts für bestehende.
    Autsch, Flüchtigkeitsfehler beim lesen. CELLDOUBLECLICK nutz Du da.
    In dem Projekt was ich oben angehangen habe gibt es das nicht, ich habe das danach erst getestet, und mit Sicherheit auch noch falsch.

    Jetzt funktioniert es mit folgendem Code:

    VB.NET-Quellcode

    1. Private Sub dgv_CellDoubleClick(sender As Object, e As EventArgs) Handles dgvAlleKunden.CellDoubleClick, dgvArtikel.CellDoubleClick, dgvRechnungZuKunde.CellDoubleClick
    2. Select Case True
    3. Case sender Is dgvAlleKunden : bsAlleKunden.EditCurrent(Of dlgKunde)()
    4. Case sender Is dgvArtikel : bsArtikel.EditCurrent(Of dlgArtikel)()
    5. Case sender Is dgvRechnungZuKunde : bsRechnung.EditCurrent(Of dlgRechnung)()
    6. End Select
    7. End Sub


    Die Art und Weise wie Du in deinem Tutorial eine Bestellung anlegst, ist doch ähnlich wie ich es benötige. Wo ist der gravierende Unterschied das ich den Code so nicht nutzen kann? Welche Fehler mache ich da noch?
    Rechtschreibfehler betonen den künstlerischen Charakter des Autors.
    Dann nehme ich das erstmal so hin. Ich bin mir sicher das es nicht optimal ist, aber soweit bin ich scheinbar noch nicht.
    Rechtschreibfehler betonen den künstlerischen Charakter des Autors.
    ich verstehe dich nicht:

    VB.NET-Quellcode

    1. Private Sub dgv_CellDoubleClick(sender As Object, e As EventArgs) Handles dgvAlleKunden.CellDoubleClick, dgvArtikel.CellDoubleClick, dgvRechnungZuKunde.CellDoubleClick
    2. Select Case True
    3. Case sender Is dgvAlleKunden : bsAlleKunden.EditCurrent(Of dlgKunde)()
    4. Case sender Is dgvArtikel : bsArtikel.EditCurrent(Of dlgArtikel)()
    5. Case sender Is dgvRechnungZuKunde : bsRechnung.EditCurrent(Of dlgRechnung)()
    6. End Select
    7. End Sub
    Der Code tut in einer Zeile, wasser soll. Das ist optimal (wörtlich!)
    Diesen Teil hatte ich nicht gemeint. Da bin ich mir sicher das es optimal ist, er tut was er soll.

    Ich meinte damit den Code für das das anlegen der Rechnung. Aber auch der tut was er soll.
    Rechtschreibfehler betonen den künstlerischen Charakter des Autors.