Hallo Zusammen,
noch immer habe ich im Sinn, ein Aufragsbuch zu erstellen. Für die Profis hier ein Kinderspiel, für mich tatsächlich viel lesen, Videos schauen, testen, lesen und und und.
Grundsätzlich ist das alles auch kein Ding aber da ich einfach zu viel nachlesen muss und mir mehr oder weniger die Zeit dafür fehlt, komme ich einfach nicht voran.
Ich hatte ja bereits ein Projekt stehen aber es war halt nicht sauber aufgebaut, sodass ich den Rat von @ErfinderDesRades annehmen und es mit einem Dataset aufsetzen wollte.
Soweit habe ich seine Videos auch angeschaut, wenngleich diese aus meiner Sicht dennoch sehr komplex sind aber das Grundschema meine ich erkannt, nicht aber gänzlich verstanden, zu haben.
So nun zu meinem Anliegen. Ich habe eine Kurzform des Auftragsbuches zusammengebaut, am Ende sollen es 20 Spalten sein aber zum Verstehen und Testen sind für mich die aktuellen 7 ausreichend.
Die Daten werden per Textbox, Datetimepicker (später noch mit Comboboxen) in ein Dataset geschrieben, sind an ein Datagridview gebunden und werden in einer XML abgelegt.
Stand jetzt bekomme ich einen Auftrag auch in das DGV aber nur wenn ich zwei Aufträge hintereinander eingebe. Der Zweite ist dann allerdings nicht drin.
Kurz der Ablauf:
- Nach Klick auf den Button "Neuer Auftrag" wird eine neue Zeile durch "TblTestBindingSource.AddNew()" generiert - läuft
- die ID wird durch AI im Dataset automatisch vergeben - läuft
- die Auswahl des Datums im Datetimepicker muss immer per Hand erfolgen ( schön wäre hier, wenn das aktuelle Datum autmatisch gezogen werden würde ) - läuft
- Textbox "Kunde" - Eingabe erfolgt und wird auch ins Dataset übernommen - läuft
Wie oben bereits angedeutet, bei Eingabe nur eines Auftrages, wird nichts gespeichert. Ich muss einen zweiten Auftrag anlegen, um den ersten drin zu haben. - läuft
Wenn dies funktionieren würde, könnte man ans Feintuning gehen wie bspw.
- bei Nichteingaben sollte bei zweitem Klick auf "Neuer Auftrag" eine Fehlermeldung kommen, dass ein Eintrag abgeschlossen werden müsse. Derzeit kann ich beliebig oft klicken und und es werden entsprechend Zeilen eingefügt (könnte man ja mit if else lösen, wenn die Kunden-Textbox leer bleibt) - läuft
- wenn die Checkbox auf enabled gestellt wird, soll das aktuelle Datum sowie Zeit in die entsprechenden Spalten eingesetzt werden - läuft
- dann soll später aus dem Eingangsdatum und dem Lieferdatum die Differenz in einer "Abweichung"-Spalte dargestellt werden. - läuft
- diverse farbliche Feinheiten im Datagridview wären später dann auch noch geplant.
Hier noch mein bisheriger Code, ein Großteil stammt aus den Beispielen von @ErfinderDesRades sowie ein Screen der Form.
Ich hoffe, ihr könnt mich mit Eurem Wissen hierbei unterstützen, da ich dieses Projekt gerne auf die Beine stellen würde.
Grüße
CodeTags korrigiert ~VaporiZed
noch immer habe ich im Sinn, ein Aufragsbuch zu erstellen. Für die Profis hier ein Kinderspiel, für mich tatsächlich viel lesen, Videos schauen, testen, lesen und und und.
Grundsätzlich ist das alles auch kein Ding aber da ich einfach zu viel nachlesen muss und mir mehr oder weniger die Zeit dafür fehlt, komme ich einfach nicht voran.
Ich hatte ja bereits ein Projekt stehen aber es war halt nicht sauber aufgebaut, sodass ich den Rat von @ErfinderDesRades annehmen und es mit einem Dataset aufsetzen wollte.
Soweit habe ich seine Videos auch angeschaut, wenngleich diese aus meiner Sicht dennoch sehr komplex sind aber das Grundschema meine ich erkannt, nicht aber gänzlich verstanden, zu haben.
So nun zu meinem Anliegen. Ich habe eine Kurzform des Auftragsbuches zusammengebaut, am Ende sollen es 20 Spalten sein aber zum Verstehen und Testen sind für mich die aktuellen 7 ausreichend.
Die Daten werden per Textbox, Datetimepicker (später noch mit Comboboxen) in ein Dataset geschrieben, sind an ein Datagridview gebunden und werden in einer XML abgelegt.
Stand jetzt bekomme ich einen Auftrag auch in das DGV aber nur wenn ich zwei Aufträge hintereinander eingebe. Der Zweite ist dann allerdings nicht drin.
Kurz der Ablauf:
- Nach Klick auf den Button "Neuer Auftrag" wird eine neue Zeile durch "TblTestBindingSource.AddNew()" generiert - läuft
- die ID wird durch AI im Dataset automatisch vergeben - läuft
- die Auswahl des Datums im Datetimepicker muss immer per Hand erfolgen ( schön wäre hier, wenn das aktuelle Datum autmatisch gezogen werden würde ) - läuft
- Textbox "Kunde" - Eingabe erfolgt und wird auch ins Dataset übernommen - läuft
Wie oben bereits angedeutet, bei Eingabe nur eines Auftrages, wird nichts gespeichert. Ich muss einen zweiten Auftrag anlegen, um den ersten drin zu haben. - läuft
Wenn dies funktionieren würde, könnte man ans Feintuning gehen wie bspw.
- bei Nichteingaben sollte bei zweitem Klick auf "Neuer Auftrag" eine Fehlermeldung kommen, dass ein Eintrag abgeschlossen werden müsse. Derzeit kann ich beliebig oft klicken und und es werden entsprechend Zeilen eingefügt (könnte man ja mit if else lösen, wenn die Kunden-Textbox leer bleibt) - läuft
- wenn die Checkbox auf enabled gestellt wird, soll das aktuelle Datum sowie Zeit in die entsprechenden Spalten eingesetzt werden - läuft
- dann soll später aus dem Eingangsdatum und dem Lieferdatum die Differenz in einer "Abweichung"-Spalte dargestellt werden. - läuft
- diverse farbliche Feinheiten im Datagridview wären später dann auch noch geplant.
Hier noch mein bisheriger Code, ein Großteil stammt aus den Beispielen von @ErfinderDesRades sowie ein Screen der Form.
Ich hoffe, ihr könnt mich mit Eurem Wissen hierbei unterstützen, da ich dieses Projekt gerne auf die Beine stellen würde.
Grüße
VB.NET-Quellcode
- Imports System.IO
- Public Class Form1
- Private _DataFile As New FileInfo("Test.xml")
- Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
- DtsTest.ReadXml(_DataFile.FullName)
- End Sub
- Private Sub ButtonNeu_Click(sender As Object, e As EventArgs) Handles ButtonNeu.Click
- TblTestBindingSource.AddNew()
- End Sub
- Private Sub ButtonSave_Click(sender As Object, e As EventArgs) Handles ButtonSave.Click
- Save()
- End Sub
- #Region "Allgemeine Funktionen"
- Private Sub Save()
- Me.Validate() 'übernimmt ggfs. die aktuelle Eingabe, auch wenn noch nicht abgeschlossen. Andernfalls wundert man sich womöglich, dass die letzte Eingabe nicht mit abgespeichert wurde
- DtsTest.WriteXml(_DataFile.FullName)
- DtsTest.AcceptChanges() 'setzt Dataset.HasChanges auf False. Das hat auswirkungen auf das Schließ-Verhalten in Form_FormClosing
- Media.SystemSounds.Asterisk.Play()
- End Sub
- Private Sub Reload()
- DtsTest.Clear()
- For Each tb As DataTable In DtsTest.Tables
- tb.BeginLoadData() 'deaktiviert während des Ladens AktualisierungsVorgänge des Databindings
- Next
- DtsTest.ReadXml(_DataFile.FullName)
- For Each tb As DataTable In DtsTest.Tables
- tb.EndLoadData()
- Next
- DtsTest.EnforceConstraints = True 'tb.BeginLoadData setzt autom. EnforceConstraints.False - also zurücksetzen
- DtsTest.AcceptChanges()
- End Sub
- Private Sub Form_FormClosing(ByVal sender As Object, ByVal e As FormClosingEventArgs) _
- Handles Me.FormClosing
- If Not DtsTest.HasChanges Then Return 'liegen keine Änderungen vor, wird auch nix gespeichert
- If e.Cancel Then Return ' ist Canceln bereits vorgemerkt ist, wird auch nix gespeichert
- Select Case MessageBox.Show(Me, "Änderungen speichern?", "Das Ende ist nahe", MessageBoxButtons.YesNoCancel)
- Case DialogResult.No 'nix tun: schließen ohne speichern
- Case DialogResult.Yes : Save() ' schließen mit speichern
- Case DialogResult.Cancel : e.Cancel = True 'Schließung canceln
- End Select
- End Sub
- 'Korrektur eines WinForm-Bugs
- Private Sub Form_FormClosed(ByVal sender As Object, ByVal e As FormClosedEventArgs) Handles Me.FormClosed
- Me.Validate() 'nochn Bug: DGV kriegt beim Disposen einen ZeilenIndex-Fehler, wenn sich die ZufügeZeile im Edit-Modus befindet
- Me.SuspendLayout()
- With Me.Controls
- 'Controls könnten sich theor. auch gegenseitig disposen, über Events. dieses hier disposed ganz sicher immer das letzte Element was noch da ist
- While .Count > 0 : .Item(.Count - 1).Dispose() : End While
- End With
- End Sub
- #End Region
- End Class
CodeTags korrigiert ~VaporiZed
Dieser Beitrag wurde bereits 3 mal editiert, zuletzt von „Madde“ ()