| Random, FreeFile, Open, Close |
| |
| |
| Fehler in den "TextBoxen", die nur Zahlen enthalten dürfen, sind noch nicht abgefangen. |
| Private Type typAutodaten | Datensatz definieren. |
| ModellName As String * 50 | |
| Preis As Currency | |
| Geschwindigkeit As Single | |
| Farbe As String * 12 | |
| End Type | |
| |
| Private AutoDatenFeld(0 To 100) As typAutodaten | Die Variable AutodatenFeld nimmt die Datensätze auf. |
| Private MaxDatenSatzNr As Integer | |
| Private DatensatzNr As Integer | |
| Private Updatemodus As Boolean | |
| |
| Private Sub cmdAbbrechen_Click() | Wird aufgerufen, wenn ein Hinzufügen abgebrochen werden |
| DatensatzNrAnzeigen | soll. |
| cmdDatensatzHinzufügen.Caption = "&Hinzufügen" | |
| cmdAbbrechen.Enabled = False | |
| cmdDatensatzLöschen.Enabled = True | |
| Updatemodus = False | |
| End Sub | |
| |
| Private Sub cmdDatensatzHinzufügen_Click() | Wird aufgerufen, wenn ein Datensatz hinzugefügt wird. |
| If Updatemodus = False Then | Wenn noch kein Updatemodus aktiv, dann auf Update- |
| lblDatensatzNr.Caption = MaxDatenSatzNr + 1 | modus umschalten. |
| cmdDatensatzHinzufügen.Caption = "&Aktualisieren" | |
| cmdAbbrechen.Enabled = True | |
| cmdDatensatzLöschen.Enabled = False | |
| EingabefelderLöschen | |
| Updatemodus = True | |
| Else | |
| MaxDatenSatzNr = MaxDatenSatzNr + 1 | Updatemodus aktiv, Datensatz an das Ende hängen. |
| DatensatzNr = MaxDatenSatzNr | |
| DatenAktualisieren | |
| DatensatzNrAnzeigen | |
| cmdDatensatzHinzufügen.Caption = "&Hinzufügen" | |
| cmdAbbrechen.Enabled = False | |
| cmdDatensatzLöschen.Enabled = True | |
| Updatemodus = False | |
| End If | |
| End Sub | |
| |
| Sub EingabefelderLöschen() | Alle Eingabefelder löschen. |
| txtGeschwindigkeit.Text = "" | |
| txtModellName.Text = "" | |
| txtPreis.Text = "" | |
| txtFarbe.Text = "" | |
| txtModellName.SetFocus | |
| End Sub | |
| |
| Private Sub cmdDatensatzLöschen_Click() | Wird aufgerufen, wenn ein Datensatz gelöscht werden soll. |
| Dim n As Integer | |
| If MaxDatenSatzNr > 0 Then | |
| For n = DatensatzNr To MaxDatenSatzNr - 1 | |
| With AutoDatenFeld(n) | |
| .Geschwindigkeit = AutoDatenFeld(n + 1).Geschwindigkeit | |
| .ModellName = AutoDatenFeld(n + 1).ModellName | |
| .Preis = AutoDatenFeld(n + 1).Preis | |
| End With | |
| Next | |
| MaxDatenSatzNr = MaxDatenSatzNr - 1 | |
| MovePrevious | |
| End If | |
| End Sub | |
| |
| Private Sub cmdVor_Click() | Datensatzzeiger eine Position vor bewegen. |
| DatenAktualisieren | |
| MoveNext | |
| End Sub | |
| |
| Private Sub cmdZurück_Click() | Datensatzzeiger eine Position zurückbewegen. |
| DatenAktualisieren | |
| MovePrevious | |
| End Sub | |
| |
| Private Sub Form_Load() | Lädt die Datenbank oder legt eine neue an. |
| Dim DateiNr As Integer | |
| If Dir("Autodaten.dat") = "" Then | Wenn noch keine Autodaten.dat-Datei vorhanden, 3 Daten- |
| With AutoDatenFeld(0) | sätze initialisieren. |
| .ModellName = "Audi Avant" | |
| .Geschwindigkeit = "188" | |
| .Preis = "32600" | |
| .Farbe = "Rot" |
| End With |
| With AutoDatenFeld(1) |
| .ModellName = "VW Golf TS" |
| .Geschwindigkeit = "178" |
| .Preis = "22600" |
| .Farbe = "Blau" |
| End With |
| With AutoDatenFeld(2) |
| .ModellName = "BMW 316i" |
| .Geschwindigkeit = "192" |
| .Preis = "28400" |
| .Farbe = "Grün" | |
| End With | |
| MaxDatenSatzNr = 2 | |
| Else | |
| DateiNr = FreeFile | Wenn Autodaten.dat vorhanden, dann Inhalt einlesen. |
| Open "Autodaten.dat" For Random As DateiNr | |
| Do | |
| Get #DateiNr, , AutoDatenFeld(MaxDatenSatzNr) | |
| If EOF(DateiNr) = True Then | |
| Exit Do | |
| End If | |
| MaxDatenSatzNr = MaxDatenSatzNr + 1 | |
| Loop | |
| Close | |
| End If | |
| DatensatzNr = 0 | |
| DatensatzAnzeigen DatensatzNr | |
| cmdAbbrechen.Enabled = False | |
| End Sub | |
| |
| Sub DatensatzAnzeigen(DatensatzNr As Integer) | Inhalt des aktuellen Datensatzes anzeigen. |
| With AutoDatenFeld(DatensatzNr) | |
| txtGeschwindigkeit.Text = .Geschwindigkeit | |
| txtModellName.Text = .ModellName | |
| txtPreis.Text = .Preis | |
| txtFarbe.Text = .Farbe | |
| End With | |
| DatensatzNrAnzeigen | |
| End Sub | |
| |
| Sub DatensatzNrAnzeigen() | Aktuelle Datensatznummer anzeigen. |
| lblDatensatzNr.Caption = DatensatzNr | |
| End Sub | |
| |
| Private Sub Form_Unload(Cancel As Integer) | Beim Verlassen des Formulars Datensätze in Autodaten.dat |
| Dim DateiNr As Integer, n As Integer | zurückschreiben. |
| DateiNr = FreeFile | |
| DatenAktualisieren | |
| Open "Autodaten.dat" For Random As DateiNr | |
| For n = 0 To MaxDatenSatzNr | |
| Put #DateiNr, , AutoDatenFeld(n) | |
| Next | |
| Close | |
| End Sub | |
| |
| Private Sub MoveNext() | Datensatzzeiger auf den nächsten Datensatz bewegen. |
| DatensatzNr = DatensatzNr + 1 | |
| If DatensatzNr > MaxDatenSatzNr Then | |
| DatensatzNr = MaxDatenSatzNr | |
| End If | |
| DatensatzAnzeigen DatensatzNr | |
| End Sub | |
| |
| Private Sub MovePrevious() | Datensatzzeiger auf den vorherigen Datensatz bewegen. |
| DatensatzNr = DatensatzNr - 1 | |
| If DatensatzNr < 0 Then | |
| DatensatzNr = 0 | |
| End If | |
| DatensatzAnzeigen DatensatzNr | |
| End Sub | |
| |
| Sub DatenAktualisieren() | Feststellen, ob Datensatz geändert wurde und in Datenbank |
| Dim DirtyFlag As Boolean | aktualisieren. |
| DirtyFlag = txtGeschwindigkeit.DataChanged _ | |
| Or txtModellName.DataChanged _ | |
| Or txtPreis.DataChanged _ | |
| Or txtFarbe.DataChanged | |
| If DirtyFlag = True Then | |
| With AutoDatenFeld(DatensatzNr) | |
| .Geschwindigkeit = txtGeschwindigkeit.Text | Fehler noch abfangen (String oder Leereingabe = Fehler). |
| .ModellName = txtModellName.Text | |
| .Preis = txtPreis.Text | |
| .Farbe = txtFarbe.Text | |
| End With | |
| txtGeschwindigkeit.DataChanged = False | |
| txtModellName.DataChanged = False | |
| txtPreis.DataChanged = False | |
| txtFarbe.DataChanged = False | |
| End If | |
| End Sub | |
| |