Auftragsbuch mit Dataset, Datagridview und XML-Export

  • VB.NET

Es gibt 75 Antworten in diesem Thema. Der letzte Beitrag () ist von Madde.

    Welche Eventualitäten hast Du denn alle?
    Dieser Beitrag wurde bereits 5 mal editiert, zuletzt von „VaporiZed“, mal wieder aus Grammatikgründen.

    Aufgrund spontaner Selbsteintrübung sind all meine Glaskugeln beim Hersteller. Lasst mich daher bitte nicht den Spekulatiusbackmodus wechseln.
    Naja, genau genommen drei.

    Lieferdatum = Eingangsdatum - ohne Auswahl in der ComboBoxLieferzeit ( Leerfeld ) - Auftrag wird mit Lieferdatum ohne Lieferzeit eingetragen
    Lieferdatum = Eingangsdatum - Auswahl in der ComboBoxLieferzeit muss nach aktueller Zeit liegen, sonst MsgBox
    Lieferdatum > Eingangsdatum - Auswahl egal

    Madde schrieb:

    Auftrag wird mit Lieferdatum ohne Lieferzeit eingetragen
    Da eine Date-Komponente immer eine Time-Komponente hat, frag ich mich, wie Du das genau meinst. Aber das ist hier nebensächlich.

    Also gut, gehen wir von einer MessageBox-Meldung aus. Du setzt den ComboBox-Style auf DropDownList und fügst ihr (z.B. im Designer) die Werte zu: ---, 08:00, 09:00, 10:00, … (die führenden Nullen beachten!)
    Dann setzt Du beim Start des Forms den SelectedIndex der ComboBox auf 0, sodass angezeigt/ausgewählt wird: ---.
    Dann setzt man das Lieferdatum über den DTP, richtig? Dann wählt man aus der ComboBox ggf. eine Zeit. Dann klickt man wahrscheinlich irgend einen Prüfbutton.
    Dort schreibst Du:

    VB.NET-Quellcode

    1. If DTP.Value.Date > Eingangsdatum OrElse ComboBox.SelectedIndex = 0 Then 'das mit dem Eingangsdatum musst Du festlegen. Ist das Date.Today?
    2. AllesGut 'naja, Du weißt wohl, was ich meine
    3. Else 'Lieferdatum = Eingangsdatum und Zeit gewählt
    4. If Integer.Parse(ComboBox.SelectedItem.ToString.Split(":"c)(0)) > DTP.Value.Hour Then
    5. AllesGut
    6. Else
    7. MessageBox.Show("Das geht so aber nicht!")
    8. End If
    9. End If
    Dieser Beitrag wurde bereits 5 mal editiert, zuletzt von „VaporiZed“, mal wieder aus Grammatikgründen.

    Aufgrund spontaner Selbsteintrübung sind all meine Glaskugeln beim Hersteller. Lasst mich daher bitte nicht den Spekulatiusbackmodus wechseln.
    Klasse hab es zum Laufen bekommen. Die Testläufe waren alle positiv. Vielen Dank!

    2 Dinge sind noch auf meiner Wunschliste. In Post#23 hast Du ja geschildert, wie bei aktivierter Checkbox die darauffolgenden Spalten entsprechend der Vorgaben gefüllt werden.
    Wenn ich allerdings die Checkbox deaktiviere, werden diverse Phantasiezeiten angezeigt. er soll die Zellen aber einfach nur leer darstellen.

    VB.NET-Quellcode

    1. 'If.........
    2. Else
    3. row.Lieferart = Nothing 'funktioniert
    4. Row.Datum = Nothing 'entspricht ja keinem Datumsformat und DBNull oder DBNull.value funktioniert nicht
    5. Row.Zeit = Nothing 'das Gleiche wie bei Datum
    6. Row.Abweichung = Nothing 'bei deaktiverter Checkbox kommt hier 0
    7. End If



    Thema 2 und damit der letzte Punkt (Stand heute :-)), sind Formatierungen des DGV bei bestimmten Werten. In einem anderen Testprojekt ohne Dataset etc, kam ich mit folgendem Code zum Ziel.
    Dieser funktioniert hier nicht. Woran könnte das liegen?

    VB.NET-Quellcode

    1. Private Sub dgv_CellFormatting(sender As Object, e As DataGridViewCellFormattingEventArgs) Handles dgv.CellFormatting
    2. If dgv.Columns(e.ColumnIndex).Name.Equals("Abweichung") Then
    3. If (e.Value) < 0 Then
    4. e.CellStyle.ForeColor = Color.ForestGreen
    5. e.CellStyle.Font = New Font("Arial", 9)
    6. e.CellStyle.BackColor = Color.Red
    7. ElseIf (e.Value) > 0 Then
    8. e.CellStyle.ForeColor = Color.Black
    9. e.CellStyle.Font = New Font("Arial", 10, FontStyle.Bold)
    10. e.CellStyle.BackColor = Color.LightGreen
    11. ElseIf (e.Value) = 0 Then
    12. e.CellStyle.ForeColor = Color.Black
    13. e.CellStyle.Font = New Font("Arial", 10, FontStyle.Bold)
    14. e.CellStyle.BackColor = Color.LightBlue
    15. End If
    16. End If
    17. End Sub



    Vorab schonmal Vielen Dank!

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

    Madde schrieb:

    Row.Datum = Nothing 'entspricht ja keinem Datumsformat
    Das Problem ist, dass Date keine Klasse, sondern ein Wertetyp ist. Während man eine Klassenvariable auf Nothing stellen kann und der Compiler weiß: »Ah, ok, da steckt jetzt einfach keine Klasseninstanz drin«, funktioniert das bei Wertetypen nicht. Das ist, als würdest Du versuchen einen Integer auf Nothing zu setzen. Da kommt dann 0 raus. Und bei Date kommt Date.MinValue raus (01.01.0001 00:00:00). Du müsstest da ggf. dafür sorgen, dass nach diesem Datum geschaut wird und dann entsprechende GUI-Teile verändert werden. Da kommt's drauf an, was Du von Deinem Programm erwartest. Bzw. Du schreibst es auf, dann können wir das gemeinsam angehen.
    Stichwort Formatierung: erstens mal: Option Strict ON! e.Value ist vom Typ Object. Da lässt sich ohne Konvertierung nix wertemäßig vergleichen.
    Zeile#2 würd ich so schreiben:

    VB.NET-Quellcode

    1. If e.ColumnIndex = NameDeinerAbweichungsspalte.DisplayIndex Then
    oder eigentlich noch besser per If-Umkehrung:

    VB.NET-Quellcode

    1. If e.ColumnIndex <> NameDeinerAbweichungsspalte.DisplayIndex Then Return

    Was genau funktioniert nicht? Wenn nix passiert, müsstest Du erstmal per Haltepunkt schauen, ob der Compiler dort überhaupt vorbeikommt. Denn der Code an sich klappt bei mir.
    Dieser Beitrag wurde bereits 5 mal editiert, zuletzt von „VaporiZed“, mal wieder aus Grammatikgründen.

    Aufgrund spontaner Selbsteintrübung sind all meine Glaskugeln beim Hersteller. Lasst mich daher bitte nicht den Spekulatiusbackmodus wechseln.

    Neu

    Vorab nochmal Danke für Deine Unterstützung.

    VaporiZed schrieb:

    Da kommt's drauf an, was Du von Deinem Programm erwartest. Bzw. Du schreibst es auf, dann können wir das gemeinsam angehen.

    Die Fertigstellung eines Auftrages wird mit Aktivierung einer Checkbox bestätigt. Ist diese aktiviert, wird das aktuelle Datum, die aktuelle Zeit sowie die Differenz zum Wunschlieferdatum nach Klick eines Buttons in die Zellen eingefügt.
    Wenn die Checkbox wieder deaktiviert wird, sollten diese Zellen alle wieder leer sein. Aktuell wird folgender Code verwendet.

    VB.NET-Quellcode

    1. Private Sub ButtonAusgeliefert_Click(sender As Object, e As EventArgs) Handles ButtonAusgeliefert.Click
    2. Dim Row = DirectCast(DirectCast(TblAuftragsbuchBindingSource.Current, DataRowView).Row, dtsAuftragsbuch.tblAuftragsbuchRow)
    3. If Row.Ausgeliefert Then
    4. If Row.Versandart = "Fahrer" Then
    5. Row.Lieferart = "Ausgeliefert"
    6. ElseIf Row.Versandart = "UPS" Then
    7. Row.Lieferart = "Versandt"
    8. Else
    9. Row.Lieferart = "Abgeholt"
    10. End If
    11. Row.Datum = Date.Today
    12. Row.Zeit = CDate(DateTime.Now.ToString("HH:mm"))
    13. Row.Abweichung = CInt((Row.Lieferdatum.Date - Row.Datum.Date).TotalDays)
    14. Else
    15. row.Lieferart = Nothing
    16. Row.Datum = Nothing ' eben das bekannte Problem
    17. Row.Zeit = Nothing ' eben das bekannte Problem
    18. Row.Abweichung = Nothing ' eben das bekannte Problem
    19. End If
    20. End Sub

    Thema Option Strict ON, ja ich weiß, sollte immer On sein. Leider hatte ich mit folgendem Code Fehler, sodass ich es Off gestellt habe. Hiermit wird aus den gemachten Eingaben ein Ordner aus der Auftragsnummer im jeweiligen Kundenordner generiert.
    Kundennummer/Monat/Auftragsnummer

    VB.NET-Quellcode

    1. Select Case System.IO.Directory.Exists(LabelKundenordner.Text & ComboBoxKunde.SelectedItem & "\" & monat & "\" & LabelAuftrNr.Text)
    2. Case Is <> False
    3. Case Else
    4. System.IO.Directory.CreateDirectory(LabelKundenordner.Text & ComboBoxKunde.SelectedItem & "\" & monat & "\" & LabelAuftrNr.Text)
    5. End Select


    Das Thema dgv_Cellformatting läuft noch nicht. Bei Abweichung kommt "wurde nicht deklariert" und e.Value löst folgenden Fehler aus.
    Fehler BC32013 "Option Strict On" lässt Operanden des Typs "Object" für den =-Operator nicht zu

    VB.NET-Quellcode

    1. Private Sub dgv_CellFormatting(ByVal sender As Object, ByVal e As DataGridViewCellFormattingEventArgs)
    2. If e.ColumnIndex = Abweichung.DisplayIndex Then
    3. If e.Value = 0 Then
    4. e.CellStyle.ForeColor = Color.ForestGreen
    5. e.CellStyle.Font = New Font("Arial", 9)
    6. e.CellStyle.BackColor = Color.Yellow
    7. ElseIf e.Value > 0 Then
    8. e.CellStyle.ForeColor = Color.Black
    9. e.CellStyle.Font = New Font("Arial", 10, FontStyle.Bold)
    10. e.CellStyle.BackColor = Color.LightGreen
    11. ElseIf e.Value < 0 Then
    12. e.CellStyle.ForeColor = Color.Black
    13. e.CellStyle.Font = New Font("Arial", 10, FontStyle.Bold)
    14. e.CellStyle.BackColor = Color.LightPink
    15. End If
    16. End If
    17. End Sub


    Gruß Madde

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

    Neu

    VB.NET-Quellcode

    1. Select Case System.IO.Directory.Exists(LabelKundenordner.Text & ComboBoxKunde.SelectedItem & "\" & monat & "\" & LabelAuftrNr.Text)
    2. Case Is <> False
    3. Case Else
    4. System.IO.Directory.CreateDirectory(LabelKundenordner.Text & ComboBoxKunde.SelectedItem & "\" & monat & "\" & LabelAuftrNr.Text)
    5. End Select

    Ui, Augenkrebs. Select Case verwendet man normalerweise, wenn man mehr als 2 Möglichkeiten hat. Da IO.Directory.Exists einen Boolean-Wert zurückgibt (True oder False), gibt es nur 2 Möglichkeiten. Und davon wertest Du nur einen Fall aus: False. Den anderen fackselst Du mit der umständlichen Formulierung Is <> False ab. Dann mach doch gleich:

    VB.NET-Quellcode

    1. If Not System.IO.Directory.Exists(LabelKundenordner.Text & ComboBoxKunde.SelectedItem & "\" & monat & "\" & LabelAuftrNr.Text) Then System.IO.Directory.CreateDirectory(LabelKundenordner.Text & ComboBoxKunde.SelectedItem & "\" & monat & "\" & LabelAuftrNr.Text)
    oder besser gleich

    VB.NET-Quellcode

    1. System.IO.Directory.CreateDirectory(LabelKundenordner.Text & ComboBoxKunde.SelectedItem & "\" & monat & "\" & LabelAuftrNr.Text)
    Denn CreateDirectory macht nur was, wenn das Verzeichnis noch nicht existiert.
    Abweichung.DisplayIndex - neenee. Du musst den Namen der Column verwenden. schau in Deinem DGV nach, wie das Teil heißt. Oder bei der Controlauflistung. Ich füge ein Beispiel als Bild an.
    Ja, e.Value ist vom Typ Object. Denn da kann sehr viel drinstecken. Wenn Du aber weißt, dass da ein Integer drinsteckt, sag es dem Compiler: If CInt(e.Value) = 0 Then
    Bilder
    • RetrieveName1.png

      40,51 kB, 987×501, 8 mal angesehen
    • RetrieveName2.png

      22,46 kB, 329×455, 8 mal angesehen
    • RetrieveName3.png

      12,88 kB, 325×307, 7 mal angesehen
    Dieser Beitrag wurde bereits 5 mal editiert, zuletzt von „VaporiZed“, mal wieder aus Grammatikgründen.

    Aufgrund spontaner Selbsteintrübung sind all meine Glaskugeln beim Hersteller. Lasst mich daher bitte nicht den Spekulatiusbackmodus wechseln.

    Neu

    VaporiZed schrieb:

    System.IO.Directory.CreateDirectory(LabelKundenordner.Text & ComboBoxKunde.SelectedItem & "\" & monat & "\" & LabelAuftrNr.Text)


    Option Strict On meckert bei "ComboBoxKunde.SelectedItem"
    Fehler BC30038 "Option Strict On" lässt keine Operanden des Typs "Object" für den &-Operator zu

    Beim dgv passiert nach wie vor nichts in Bezug auf die Formatierung. Habe nun folgenden Code. Dein "If CInt(e.Value) = 0 Then" habe ich verwendet, da es sich ja um einen Integer handelt.

    VB.NET-Quellcode

    1. Private Sub dgv_CellFormatting(ByVal sender As Object, ByVal e As DataGridViewCellFormattingEventArgs)
    2. If e.ColumnIndex = AbweichungDataGridViewTextBoxColumn.DisplayIndex Then
    3. If CInt(e.Value) = 0 Then
    4. e.CellStyle.ForeColor = Color.ForestGreen
    5. e.CellStyle.Font = New Font("Arial", 9)
    6. e.CellStyle.BackColor = Color.Yellow
    7. ElseIf CInt(e.Value) > 0 Then
    8. e.CellStyle.ForeColor = Color.Black
    9. e.CellStyle.Font = New Font("Arial", 10, FontStyle.Bold)
    10. e.CellStyle.BackColor = Color.LightGreen
    11. ElseIf CInt(e.Value) < 0 Then
    12. e.CellStyle.ForeColor = Color.Black
    13. e.CellStyle.Font = New Font("Arial", 10, FontStyle.Bold)
    14. e.CellStyle.BackColor = Color.LightPink
    15. End If
    16. End If
    17. End Sub

    Neu

    So. Gleiches Ding. SelectedItem ist ein Object, daher ist ein Cast nötig. Worin? Tja, ich vermute DoppelCast in eine KundenRow.
    Und das andere: :D Am Ende von Zeile#1 fehlt was: das zu behandelnde Event! Probier mal: Private Sub dgv_CellFormatting(ByVal sender As Object, ByVal e As DataGridViewCellFormattingEventArgs) Handles dgv.CellFormatting

    ##########

    Allerdings bzgl. Problem 1: Was soll das eigentlich ergeben? Was steht denn in der ComboBox? Ist die gebunden? Wenn ja, gibt es doch bestimmt auch eine BindingSource. Und die hat ein Current. Und die richtig gecastet ergibt eine Klasseninstanz. Und die hat eine Eigenschaft, die Du für das Verzeichnis hernehmen willst. Wenn die Box hingegen ungebunden ist, nimm ComboBoxKunde.SelectedItem.ToString
    Dieser Beitrag wurde bereits 5 mal editiert, zuletzt von „VaporiZed“, mal wieder aus Grammatikgründen.

    Aufgrund spontaner Selbsteintrübung sind all meine Glaskugeln beim Hersteller. Lasst mich daher bitte nicht den Spekulatiusbackmodus wechseln.

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

    Neu

    Die Combobox wird mit folgrendem Code gefüllt. Sicher nicht die feine Klinge aber funktioniert ;)

    VB.NET-Quellcode

    1. Private Sub Kundenpfad_Load()
    2. LabelKundenordner.Text = My.Settings.kundenpfad
    3. My.Settings.kundenpfad = LabelKundenordner.Text
    4. My.Settings.Save()
    5. ComboBoxKunde.SelectedItem = ""
    6. For Each folder As String In IO.Directory.GetDirectories(LabelKundenordner.Text)
    7. ComboBoxKunde.Items.Add(New IO.DirectoryInfo(folder).Name)
    8. Next
    9. End Sub
    10. Private Sub KundenpfadÄndernToolStripMenuItem1_Click(sender As Object, e As EventArgs) Handles KundenpfadÄndernToolStripMenuItem1.Click
    11. If FolderBrowserDialog1.ShowDialog() = DialogResult.OK Then
    12. LabelKundenordner.Text = FolderBrowserDialog1.SelectedPath
    13. End If
    14. ComboBoxKunde.Items.Clear()
    15. ComboBoxKunde.SelectedItem = ""
    16. For Each folder As String In IO.Directory.GetDirectories(LabelKundenordner.Text)
    17. ComboBoxKunde.Items.Add(New IO.DirectoryInfo(folder).Name)
    18. Next
    19. End Sub

    Dein "ComboBoxKunde.SelectedItem.ToString" hat funktioniert, um an Option Strict On vorbeizukommen.

    VaporiZed schrieb:

    Private Sub dgv_CellFormatting(ByVal sender As Object, ByVal e As DataGridViewCellFormattingEventArgs) Handles dgv.CellFormatting

    Hier bricht er das Debugging mit "Ungültige Konvertierung von Typ DBNull in Typ Integer" ab, was logisch ist, da die leere "Abweichung"-Spalte eben nicht erlaubt ist, was die "Nothing"-Sache wieder ins Spiel bringt.
    Habe zum Testen mal alle Aufträge als Ausgeliefert markiert, somit waren alle Abweichung-Zellen gefüllt und siehe da, funktioniert.

    Neu

    Da ist dann natürlich schon unschön, dass DbNull überhaupt ermöglicht wird. Ändere da am besten die DataTable-Einstellungen. Suche dann in all Deinen Daten nach allen Einträgen, wo dieser Wert drinsteht und ersetze ihn durch einen sinnvollen Wert. Bei einem Datum ist dies - wie gesagt - m.E. schwrierig. Mit Nullables will ich nicht anfangen, weil die m.E. nicht im tDS abspeicherbar sind. Arbeitest Du denn mit einem tDS überhaupt?
    Dieser Beitrag wurde bereits 5 mal editiert, zuletzt von „VaporiZed“, mal wieder aus Grammatikgründen.

    Aufgrund spontaner Selbsteintrübung sind all meine Glaskugeln beim Hersteller. Lasst mich daher bitte nicht den Spekulatiusbackmodus wechseln.

    Neu

    Dann wie gesagt: DataTables richtig einstellen, alles per For-Schleife durchgehen und DbNull durch sinnvolle Werte ersetzen.
    Dieser Beitrag wurde bereits 5 mal editiert, zuletzt von „VaporiZed“, mal wieder aus Grammatikgründen.

    Aufgrund spontaner Selbsteintrübung sind all meine Glaskugeln beim Hersteller. Lasst mich daher bitte nicht den Spekulatiusbackmodus wechseln.

    Neu

    So, ich habe es jetzt eher pragmatisch gelöst. Aus Programmiersicht sehr wahrscheinlich eher ein Graus aber für meine Zwecke ausreichend. Ich habe nun im DS das Null-Datum bei meiner Spalte "Lieferdatum" 01.01.0001 als Standardwert. Dein Hinweis @VaporiZed, DBNull zu entfernen, war sehr hilfreich.
    Im dgv.formatting blende ich dieses Datum dann einfach aus.

    Wie gesagt, für mich ist das ausreichend. Danke an Alle, die mir bis hierhin unterstützend unter die Arme gegriffen haben.

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

    Neu

    Ein Graus: nö. So hätte ich es auch gemacht.
    Dieser Beitrag wurde bereits 5 mal editiert, zuletzt von „VaporiZed“, mal wieder aus Grammatikgründen.

    Aufgrund spontaner Selbsteintrübung sind all meine Glaskugeln beim Hersteller. Lasst mich daher bitte nicht den Spekulatiusbackmodus wechseln.

    Neu

    Etwas zu früh gefreut. Die Formatierg im DGV hat ja soweit funktioniert. Jetzt wollte ich 2 Ergänzungen vornehmen. Leider funktionieren die nicht.
    Hier die bisherige Formatierung.

    VB.NET-Quellcode

    1. If e.ColumnIndex = AbweichungDataGridViewTextBoxColumn.DisplayIndex Then
    2. If e.Value = "Noch aktiv" Then
    3. e.CellStyle.ForeColor = Color.ForestGreen
    4. e.CellStyle.Font = New Font("Arial", 9)
    5. 'e.CellStyle.BackColor = Color.Yellow
    6. ElseIf e.Value = 0 Then
    7. e.CellStyle.ForeColor = Color.Black
    8. e.CellStyle.Font = New Font("Arial", 10, FontStyle.Bold)
    9. e.CellStyle.BackColor = Color.LightBlue
    10. ElseIf e.Value > 0 Then
    11. e.CellStyle.ForeColor = Color.Black
    12. e.CellStyle.Font = New Font("Arial", 10, FontStyle.Bold)
    13. e.CellStyle.BackColor = Color.LightGreen
    14. ElseIf e.Value < 0 Then
    15. e.CellStyle.ForeColor = Color.Black
    16. e.CellStyle.Font = New Font("Arial", 10, FontStyle.Bold)
    17. e.CellStyle.BackColor = Color.LightPink
    18. End If
    19. End If

    Und das sollte hinzukommen, bringt aber keinen Erfolg.

    VB.NET-Quellcode

    1. If e.ColumnIndex = EingangsdatumDataGridViewTextBoxColumn.DisplayIndex Then
    2. If e.Value = Date.Today Then
    3. e.CellStyle.BackColor = Color.LightYellow
    4. ElseIf e.Value = "01.01.0001" Then
    5. e.Value = ""
    6. End If
    7. End If
    8. If e.ColumnIndex = LieferdatumDataGridViewTextBoxColumn.DisplayIndex Then
    9. If e.Value = Date.Today Then
    10. e.CellStyle.BackColor = Color.LightPink
    11. ElseIf e.Value = "01.01.0001" Then
    12. e.Value = ""
    13. End If
    14. End If


    Ein weiteres Problem hat sich soeben aufgetan, welches ich dachte gelöst zu haben. Wenn ein neuer Auftrag eingetragen wird, geschieht das mit TblAuftragsbuchBindingSource.AddNew()
    Solange der aktuelle Auftrag nicht fertig eingetragen ist, soll ein weiterer Klick auf "Neuer Auftrag" verhindert werden.
    Wie könnte ich das umsetzen?

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

    Neu

    Madde schrieb:

    Leider funktionieren die nicht.
    Was heißt das konkret?

    Madde schrieb:

    If e.Value = "Noch aktiv" Then
    Option Strict On …

    VB.NET-Quellcode

    1. If e.Value = Date.Today Then
    2. e.CellStyle.BackColor = Color.LightYellow
    3. ElseIf e.Value = "01.01.0001" Then
    Wenn das eine Datumspalte betrifft: Wie kann e.Value dann ein String sein? Du musst schon die richtigen Datentypen miteinander vergleichen.

    Madde schrieb:

    Wenn ein neuer Auftrag eingetragen wird, geschieht das mit TblAuftragsbuchBindingSource.AddNew()
    Und unter welchen Umständen wird diese Codezeile ausgeführt? Hast Du einen Button dafür? Was heißt konkret

    Madde schrieb:

    Solange der aktuelle Auftrag nicht fertig eingetragen ist

    Dieser Beitrag wurde bereits 5 mal editiert, zuletzt von „VaporiZed“, mal wieder aus Grammatikgründen.

    Aufgrund spontaner Selbsteintrübung sind all meine Glaskugeln beim Hersteller. Lasst mich daher bitte nicht den Spekulatiusbackmodus wechseln.

    Neu

    VaporiZed schrieb:

    Und unter welchen Umständen wird diese Codezeile ausgeführt? Hast Du einen Button dafür? Was heißt konkret

    Das hat sich erledigt.

    Bei dem dgv_cellformatting habe ich wohl gestern Option Script wieder Off gestellt. Sicher beim Testen durcheinander gekommen. ;)
    Ich habe jetzt wieder auf On und er meckert alle e.values an.
    Unabhängig davon verstehe ich aber nicht, warum die Formatierung bei Spalte "Lieferdatum" funktioniert aber bei Spalte "Eingangsdatum" nicht. Beide haben das gleiche Date-Format oder ich übersehe mal wieder etwas anderes.


    Eine Sache auch noch, wie gesagt, mit TblAuftragsbuchBindingSource.AddNew() wird ein neuer Auftrag per Button begonnen. Die ID wird dabei automatisch vergeben ( bspw. 1 ) . Mein Problem nun, wenn ich die Eingabe abbreche, die Zeile lösche und dann neu beginne, beginnt er mit der 3. Wie kann ich die Eingabe soweit abbrechen, dass er normal mit der 2 weitermacht.
    Ein Speichern oder DGV_refresh hat nichts gebracht. Nur ein Neustart des Programms führt zum Ziel, ist aber keine Option.

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

    Neu

    Madde schrieb:

    Mein Problem nun, wenn ich die Eingabe abbreche, die Zeile lösche und dann neu beginne, beginnt er mit der 3. Wie kann ich die Eingabe soweit abbrechen, dass er normal mit der 2 weitermacht.
    Damit kannst und sollteste leben.
    Das ist nicht wirklich ein Problem.

    Ein ganz anderes Problem kann entstehen dadurch, dass dein Zähler scheinbar positiv zählt. Normal, und Voreinstellung ist, dass AutoIncrement in den negativen Bereich läuft.
    Das wird aber erst dann problematisch, wenn du eine Datenbank zu hinterlegen versuchst.