Einsatztagebuch der Feuerwehr

  • VB.NET

Es gibt 37 Antworten in diesem Thema. Der letzte Beitrag () ist von ErfinderDesRades.

    Einsatztagebuch der Feuerwehr

    Hallo Liebe Community,

    ich bin ,,Amateur-Programmierer", also ein Mischling zwischen Newbie und Fortgeschritten. Vor kurzem habe ich angefangen, für die örtliche Feuerwehr ein Einsatzverwaltungssystem zu programmieren. Das hat auch soweit ganz gut funktioniert, jedoch gab es immer Probleme beim Speichern und Laden und das Programm hatte generell im Code ein paar Schönheitsfehler. Nun habe ich mir überlegt, das Programm erneut aufzusetzen. Um mir ein paar gute hilfreiche Tipps zu holen, dachte ich mir ich frage mal hier nach.

    Zu meinem Programm:

    Mein Programm verfügt über eine grafische Benutzeroberfläche mit vielen Möglichkeiten zur Texteingabe und zur Auswahl von mehreren Möglichkeiten in verschiedenen Comboboxen. Zudem verfügt es über eine Druckfunktion, an der ich jedoch nie weiterentwickelt habe uns somit auch in der alten Programmversion nie funktioniert hat. Desweiteren habe ich 2 Buttons zum Laden und speichern meiner Dateien.

    Wie könnte ich die die Oberfläche so gestalten, sodass ich viel Platz habe? Hier mal ein Bild von der jetzigen Version.


    Dann hatte ich ja das Problem mit dem Speichern angesprochen. Ich hatte es bis jetzt so gehandhabt, das ich beim Speichern den Befehl

    VB.NET-Quellcode

    1. speichern.WriteLine (TextBox1.Text)
    benutzt habe und beim Laden

    VB.NET-Quellcode

    1. TextBox1.Text = lesen.ReadLine
    , jedoch hat das nie wirklich funktioniert. Gibt es eine andere Möglichkeit, mehrere Textboxen, Comboboxen, usw. zu speichern und danach wieder mit dem Programm auszulesen? Wäre sehr sehr nett wenn einer von euch eine Idee und eine gute Erklärung hätte.

    Mit ganz freundlichen Grüßen
    Jonas Gilcher
    (photo-jonasgilcher.de)


    PS: Ich möchte keine Antworten erhalten wie z.B. ,,Lern die Grundlagen" oder Links als antwort ohne jegliche Erläuterung dazu zu erhalten. Aber ich denke mal positiv ;) und bedanke mich natürlich riesig im Vorraus!! :freu:
    Speichern und laden:

    VB.NET-Quellcode

    1. Public Class Form1
    2. Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
    3. TextBox1.Text = My.Computer.FileSystem.ReadAllText("C:\Users\test\Desktop\test.txt")
    4. End Sub
    5. Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
    6. My.Computer.FileSystem.WriteAllText("C:\Users\test\Desktop\test.txt", TextBox1.Text, True)
    7. End Sub
    8. End Class

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „Michael K.“ ()

    Hallo,

    erstmal danke für die super schnelle antwort! ;)

    Das erste ist wohl zum Laden, dann ist das zweite wohl oder übel zum Speichern. Doch funktioniert der erste Teil.-Code bei drücken des Laden Buttons?

    Und bei diesem Code wird doch auch jeweils eine Textbox oder Combobox gespeichert oder? Gibt es ne möglichkeit, alles auf einmal zu speichern und beim laden alles auf einmal zu laden, sodass aber alles am ursprünglichen Platz steht? ?(
    Na klar. Setze es einfach unter dem Button2_Click - Sub:

    VB.NET-Quellcode

    1. Public Class Form1
    2. Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click
    3. TextBox1.Text = My.Computer.FileSystem.ReadAllText("C:\Users\test\Desktop\test.txt")
    4. End Sub
    5. Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
    6. My.Computer.FileSystem.WriteAllText("C:\Users\test\Desktop\test.txt", TextBox1.Text, True)
    7. End Sub
    8. End Class


    Ich hoffe du kannst mir folgen: Du musst den angegebenen Pfad natürlich durch deinen Desktoppfad (oder den, den du verwendest)ersetzen.
    Sollte eine Fehlermeldung erscheinen, dass dir der Zugriff verweigert wurde, so willst du die Textdatei unter einem Pfad speichern, der nur mit Administratorrechten zugängig ist. Standartgemäß startet ein Programm immer mit Standartrechten. Führe das Programm einfach als Administrator aus: Klicke mit der rechten Maustaste auf der EXE-Datei und klicke auf "Als Administrator ausführen". Daraufhin hat dein Programm Administratorrechte. Mache den gerade beschriebenen Vorgang nur, wenn die Fehlermeldung erscheint, dass dir der Zugriff verweigert wurde. Ist die Textdatei auf dem Desktop, so kannst du auch mit Standartrechten auf sie zugreifen.

    Dieser Beitrag wurde bereits 2 mal editiert, zuletzt von „Michael K.“ ()

    Ähh, ja. :D , willst du alles in eine Textdatei abspeichern, so setze bei My.Computer.FileSystem... dieses "True" - also wahr. Dann wird der Text jeweils angehangen und du kannst mehrere Texte dann in dieser Textdatei abspeichern. Setze "False" - also falsch, wenn du verschiedene/mehrere Textdateien verwendest. So wie ich es bei dir verstanden habe, möchtest du nur eine verwenden. Oh, mir fällt gerade mit dem Laden ein Fehler auf. Wahrscheinlich wolltest du das jetzt wissen: Du musst die Zeilen in der Textdatei einlesen und sie dann der TextBox zuteilen. Wie das geht, na ich kram mal ein bisschen in meinem VB-Ordner herum :D .
    Okay auch hier dankeschön ;) ja also ich versuche es nochmal so zu erläutern...;)

    Also...ich möchte mit geringst möglichen befehlen alle TextBoxen und ComboBoxen, NumericUpDown's usw. in eine Datei speichern. Wenn ich diese Datei in diesem Programm wieder lade, soll auch alles am ,,alten" platz sein. Also wenn ich in TextBox3 ,,Hallo" stehen habe soll beim laden der Datei auch wieder in der TextBox3 ,,Hallo" stehen.

    Vorher hatte ich es ja so gelöst, das jeder TextBox sag ich jetzt mal eine Zeile zugeordnet ist durch das WriteLine und ReadLine....;) Verstanden wie ich meine? :D
    Ja, ich hab dich exakt genau richtig verstanden. Gut erklärt. Das wird schwer. Quatsch. Das geht noch viel leicher. mit Registry-Einträgen. Du könntest es genauso auch mit mehreren Textdateien machten, aber das hast du ja nicht vor. Registry-Einträge macht man so:

    VB.NET-Quellcode

    1. Imports Microsoft.Win32
    2. Public Class Form1
    3. Dim regkey As RegistryKey
    4. Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
    5. My.Computer.FileSystem.WriteAllText("C:\Users\Kossen\Desktop\test.txt", TextBox1.Text, True)
    6. My.Computer.FileSystem.WriteAllText("C:\Users\Kossen\Desktop\test.txt", TextBox2.Text, True)
    7. My.Computer.FileSystem.WriteAllText("C:\Users\Kossen\Desktop\test.txt", TextBox3.Text, True)
    8. 'Hier werden verschiedene Registry-Einträge erstellt und der Text darunter gespeichert:
    9. My.Computer.Registry.CurrentUser.CreateSubKey("Software\Test", Microsoft.Win32.RegistryKeyPermissionCheck.ReadWriteSubTree).SetValue("ST_90", TextBox1.Text)
    10. My.Computer.Registry.CurrentUser.CreateSubKey("Software\Test", Microsoft.Win32.RegistryKeyPermissionCheck.ReadWriteSubTree).SetValue("ST_91", TextBox2.Text)
    11. My.Computer.Registry.CurrentUser.CreateSubKey("Software\Test", Microsoft.Win32.RegistryKeyPermissionCheck.ReadWriteSubTree).SetValue("ST_92", TextBox3.Text)
    12. End Sub
    13. Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click
    14. 'Jetzt rufen wir nicht die Textdatei sondern die Registry-Einträge wieder ab:
    15. regkey = Registry.CurrentUser.CreateSubKey("Software\Test", CType(False, RegistryKeyPermissionCheck))
    16. TextBox1.Text = regkey.GetValue("ST_90")
    17. TextBox2.Text = regkey.GetValue("ST_91")
    18. TextBox3.Text = regkey.GetValue("ST_92")
    19. End Sub
    20. End Class
    Kleiner Tipp von einem Feuerwehrmann (Reallife):
    Wenn du das ganze aufpeppen willst und überall Verwenden willst mit Daten usw schieb das ganze über MySQL.
    Falls du infos oder so in sachen Feuerwehr/Feuerwehrsoftware brauchst einfach Fragen

    Sry fürs OffTopic

    Was SQL angeht kann ich dir gerne ein wenig erklären.
    Tipps kommt auf den Bereich an.
    Die "uhrzeit" würde ich nicht manuell eingeben sondern irgendwie auslesen und eintragen lassen (spart z.b. in nem Ernstfall einiges an zeit).

    Können alles weitere was nicht mit dem Thema zu tun hat gerne per ICQ,Skype oder PN klären sonst gibts wieder ärger von den oben sitzenden Mods/Admins

    Oh, das sieht schwer aus? Hmm, erstelle mal ein neues Projekt und ersetze den ganzen Code durch den, den ich gepostet habe. Probiers dann mal aus und gebe in die drei TextBoxen einen verschiedenen Text ein. Drücke auf den Button1 der normalerweise deinen Text speichern soll und gehe in den Registrierungseditor (Registry-Editor, Registry ist englisch und bedeutet Registrierung). Den Registrierungs-Editor findest du, wenn du im Startmenü bei Windows-Vista oder Windows 7 "regedit" eingibst und diesen dann öffnest. Klicke auf den Eintrag HKEY_CURRENT_USER und auf Software. Suche unter Software den Eintrag "Test". Wenn du ihn gefunden hast öffne ihn (mit doppelklick oder mit Klick auf dem Plus links). Jetzt müsstest du 4 Einträge sehen. Drei müssten "ST_90", "ST_91" und "ST_92" heißen. Öffne mal einen von den gerade genannten und du wirst den Text sehen, den du in eine der drei TextBoxen eingegeben hast. Das heißt der Text deiner TextBoxen wurde in der Registry (unter dem Pfad "HKEY_CURRENT_USER\Software\Test") abgespeichert und wird bei Klick des Button2, der normalerweise fürs Laden sorgt wieder aus der Registry heraus abgerufen.
    Hinweis zu einzelnen Einträgen:


    Eintrag "ST_90" = TextBox1.Text
    Eintrag "ST_91" = TextBox2.Text
    Eintrag "ST_92" = TextBox3.Text

    Ich hoffe du verstehst mich.
    Einmal zu Patrick1993:
    paranoid1996 sagte er sei Amateur, also Anfänger. Ich glaube nicht wirklich, dass er was von MySQL weiß (mich eingeschlossen).

    Okay, ich war anscheinend mit dem Beitrag zu spät, aber such dir aus, was du nehmen willst. Ich werde dir gerne helfen und ich glaube Patrick1993 würde das auch tun.

    Dieser Beitrag wurde bereits 3 mal editiert, zuletzt von „Michael K.“ ()

    @Michael K.
    jeder hat mal klein angefangen oder ??

    So nun mal wieder BTT

    Yes, ist mir völlig bekannt, Anfänger zu sein :D (im genauen bin ich auch noch Amateur, naja fortgeschrittener Amateur)
    Zu meinem letzten Beitrag noch: Ich hoffe ich konnte dir ein wenig helfen. Registry-Einträge ist wie ich finde immer noch das leichteste.
    SQL dürfte nicht unbedingt notwendig sein.
    Schau dir mal die Tipps von Erfinder des Rades dazu an:
    Daten laden und speichern
    DB-Programmierung ohne DB

    Diese Methoden sind darauf aus, 90% der Arbeit mit Designern zusammenzuklicksen. Da brauchts kaum Code, kein Wissen über SQL (zumindest zunächst nicht) und du trennst automatisch Daten von der GUI, wodurch so Sachen wie Daten bearbeiten, laden und speichern erst möglich werden. Das wegspeichern von Controlinhalten ist ein Holzweg.
    Und das geht, wenn mans einmal verstanden hat rasend schnell. Wichtig dabei ist ein akkurates Datenmodell. Dazu muß man die Ars..backen zusammenkneifen und die Bedienoberfläche zunächst vergessen, was das schwierigste ist :)

    Fiel Fergnügen

    Vatte
    :thumbsup: Seit 26.Mai 2012 Oppa! :thumbsup:
    @Patrick ...ja wir schreiben am besten über ICQ oder teamspeak ;)

    @Michael K. ist es nun besser mit der Registry oder per Datei? Datei wäre mir persönlich lieber, da ich ja evtl auch drucken möchte, dafür müsste ich dann nur noch wissen wie ich die Seite die gedruckt werden soll ,,gestalten" soll...

    @Vatter ich lese mir die beiden seiten mal durch...dankeschön für den tipp ;)
    Schau dir mal die Lib an:

    @TE: Nein, tu das nicht, machts dir nur schwieriger...
    Das ist nur für den Einsatz, wenn du die Daten alle an eine Online-Datenbank übertragen willst...
    Datenanbindung ist eigentlich genau das richtige-> Die Links von Vatter
    Ich wollte auch mal ne total überflüssige Signatur:
    ---Leer---
    Okay in Textdateien:

    VB.NET-Quellcode

    1. Imports Microsoft.Win32
    2. Public Class Form1
    3. Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
    4. My.Computer.FileSystem.WriteAllText("C:\Users\Kossen\Desktop\test.txt", TextBox1.Text, False)
    5. My.Computer.FileSystem.WriteAllText("C:\Users\Kossen\Desktop\test2.txt", TextBox2.Text, False)
    6. My.Computer.FileSystem.WriteAllText("C:\Users\Kossen\Desktop\test3.txt", TextBox3.Text, False)
    7. End Sub
    8. Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click
    9. TextBox1.Text = My.Computer.FileSystem.ReadAllText("C:\Users\Kossen\Desktop\test.txt")
    10. TextBox2.Text = My.Computer.FileSystem.ReadAllText("C:\Users\Kossen\Desktop\test2.txt")
    11. TextBox3.Text = My.Computer.FileSystem.ReadAllText("C:\Users\Kossen\Desktop\test3.txt")
    12. End Sub
    13. End Class


    Naja, ein Druckbefehl ist schwer. Hat jemand von den Profis hier eine Ahnung?