Daten speichern
lima-city → Forum → Programmiersprachen → Basic
beitrag
count
csv
datei
daten
eingestellte optionen
fenstergre
format
hans
item
muster
schueler
set
spa
steuerelement
ungltiger datensatz
verstehe
vorname
zeile
zeilenumbruch
-
Hallo
Ich möchte für ein kleines Programm verschiedene Daten speichern.
Einfach in eine Text-Datei zu schreiben ist mir zu aufwändig.
Aber es sollte schon eine zweite Datei (neben der *.exe) sein, ich möchte keine Datenbanke installieren müssen.
Hab's schon mit MySQL probiert, aber da blicke ich nicht ganz durch. Diese Schnittstellen, müssen die auf dem Server installiert sein?
Ich verlange keine Anleitung, ich suche nur ein paar Stichwörter, wonach ich suchen kann.
mfg niGOlaz -
Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!
lima-city: Gratis werbefreier Webspace für deine eigene Homepage
-
Ich vermute, dass es benutzerdefinierte Daten sind (z. B. Fenstergröße, eingestellte Optionen im Programm usw.)
Da du nur Stichwörter haben wolltest:
- Konfigurationsdateien ("app.config" für VB .Net, automatische Verwaltung)
- Registry (einfacher in VB.Net als VB 6, Eigene Schlüssel in HKCU\Software\Mein Programm\ oder in HKLM
- Vordefinierte Befehle SaveSetting(), GetSetting(), DeleteSetting() in VB.Net und VB 6 (läuft auch über Registry)
Wenn du doch einen Punkt ausführlicher haben willst, sag Bescheid.
-
Erst mal danke für die Antwort.
cbhp schrieb:
Ich vermute, dass es benutzerdefinierte Daten sind (z. B. Fenstergröße, eingestellte Optionen im Programm usw.)
Ich spiele in unserer Klasse den Kassier, also Rechnungen bezahlen und so.
Damit ich für jeden Schüler individuelle Abrechnung machen kann habe ich so eine Exel-Datei bekommen.
Ich will mir aber zum Spass selber etwas machen.
Meine bisherige Lösung geht in die Richtung:
*
#Datum
#Datum
*
#Datum
#Datum
(Datum als Einzahl von Daten)
mit split() kann ich das ganz gut auseinanderschneiden.
Viel wichtiger aber bleibt es eine einzelne *.txt Datei, also kann ich die *.exe und die *.txt problemlos mitnehmen -
Ich hab vor kurzer Zeit ein ähnliches Programm geschrieben. Ich habs jetzt auf deine Daten angepasst, vielleicht kannst du es brauchen.
Hinweis: Die Daten werden im CSV-Format gespeichert. Diese Dateien kann auch Excel lesen und normal darstellen.
Der Code für den Aufruf der Routine:
Sub Schueler_Beispiel()
'Testdatei erstellen
Dim Sw As New StreamWriter("D:\Datei.csv")
Sw.WriteLine("Name;Vorname;Beitrag in Euro;Datum")
Sw.WriteLine("")
Sw.WriteLine("Maier;Sepp;14,00 Euro;14.12.2006")
Sw.WriteLine("Muster;Hans;8,00 Euro;20.12.2006")
Sw.WriteLine("Maler;Martha;10,50 Euro;08.01.2007")
Sw.Close()
'Daten aus Datei lesen
Dim Sr As New StreamReader("D:\Datei.csv")
Dim Datei As String = Sr.ReadToEnd
Sr.Close()
Dim Zeilen() As String = Datei.Replace(vbNewLine, "|").Split("|"c)
Dim Zeile As String
Dim MeineKlasse As New AlleSchueler
For Each Zeile In Zeilen
Dim Daten() As String = Zeile.Split(";"c)
If Daten.Length = 4 Then
MeineKlasse.Add(New EinzelnerSchueler(Daten(0), Daten(1), Daten(2), Daten(3)))
Else
'Ungültiger Datensatz
End If
Next
'Achtung: Schueler(0) ist die Überschrift und noch kein Schüler. Deshalb 1 subtrahieren.
MsgBox("Es sind " & MeineKlasse.Count - 1 & " Schüler eingetragen.")
If MeineKlasse.Count >= 2 Then
MsgBox("Der Schüler " & MeineKlasse.Item(1).Name & " " & MeineKlasse.Item(1).Vorname & " hat am " & MeineKlasse.Item(1).Datum & " " & MeineKlasse.Item(1).Beitrag & " gezahlt.")
End If
End Sub
Die einzelnen selbstdeklarierten Klassen bzw. Routinen:
Class AlleSchueler
Inherits System.Collections.CollectionBase
Public Sub Add(ByVal item As EinzelnerSchueler)
Me.List.Add(item)
End Sub
Default Public Property Item(ByVal index As Integer) As EinzelnerSchueler
Get
Return CType(Me.List.Item(index), EinzelnerSchueler)
End Get
Set(ByVal Value As EinzelnerSchueler)
Me.List.Item(index) = Value
End Set
End Property
End Class
Class EinzelnerSchueler
Public Name As String
Public Vorname As String
Public Beitrag As String
Public Datum As String
Public Sub New(ByVal _Name As String, ByVal _Vorname As String, ByVal _Beitrag As String, ByVal _Datum As String)
Name = _Name
Vorname = _Vorname
Beitrag = _Beitrag
Datum = _Datum
End Sub
End Class
Und so sieht zum Beipiel die CSV-Datei aus, wenn man sie mit Notepad öffnet:
Name;Vorname;Beitrag in Euro;Datum
Maier;Sepp;14,00 Euro;14.12.2006
Muster;Hans;8,00 Euro;20.12.2006
Maler;Martha;10,50 Euro;08.01.2007
Fertig
-
Danke vielmals. Besonders das CSV-Format hat mir geholfen.
Nur Dim Zeilen() As String = Datei.Replace(vbNewLine, '|').Split('|'c) verstehe ich nicht ganz. Wie genau sind die Werte getrennt.
Werde mir selber mal so etwas zusammenbasteln.
Dann habe ich mir noch überlegt, wie man mit dem WebBrowser-Steuerelement zu MySQL verbinden könnte. Mit einer Datenbank wäre das ganze praktischer.
Tipps?
mfg niGOlaz -
Danke vielmals. Besonders das CSV-Format hat mir geholfen.
Nur Dim Zeilen() As String = Datei.Replace(vbNewLine, '|').Split('|'c) verstehe ich nicht ganz. Wie genau sind die Werte getrennt.
Werde mir selber mal so etwas zusammenbasteln.
Dann habe ich mir noch überlegt, wie man mit dem WebBrowser-Steuerelement zu MySQL verbinden könnte. Mit einer Datenbank wäre das ganze praktischer.
Tipps?
mfg niGOlaz
Erklärung von Dim Zeilen() As String = Datei.Replace(vbNewLine, '|').Split('|'c)
Das Zeilenwechselzeichen vbNewLine, das für eine neue Zeile in der Datei sorgt, besteht aus zwei Zeichen [Chr(13) + Chr(10)].
Damit ich jede Zeile einzeln erhalte, verwende ich die .Split()-Methode. Allerdings kann .Split() nur ein Zeichen verarbeiten zum Aufteilen, somit kann ich vbNewLine nicht in .Split() verwenden.
Trick: Ich ersetze erst alle Zeilenumbrüche durch ein anderes Zeichen. Also .Replace(vbNewLine, "|") ersetzt den Zeilenumbruch durch ein einzelnes Zeichen. Man sollte ein Sonderzeichen verwenden, da dieses sonst nirgends in der Datei vorkommt.
Anschließend kann man die gesamte Datei in die einzelnen "Zeilen" (die jetzt eigentlich nur noch aus einer Zeile besteht, mit "|" getrennt) zerteilen mit .Split("|")
Zu MySQL: wird viel zu aufwendig sein, aber hier 2 gute Links zum Nachschauen:
http://www.microsoft.com/germany/msdn/library/net/adonet/ADOVersusADONET.mspx?mfr=true
(in der linken Spalte kannst du dann noch mehr auswählen, z.B. Zugriffe etc.)
http://www.codekabinett.com/page.php?Theme=4&Lang=1 -
Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!
lima-city: Gratis werbefreier Webspace für deine eigene Homepage