Irgendwie erlebt jeder einmal, dass am Ende des Kontos noch
viel vom Monat übrig ist. Wo das alles hinging, wenn man’s nur
wüsste. Ein kleines Haushaltsbuch muss her. Dabei wollen wir
jetzt nicht die doppelte Buchführung einer GmbH simulieren
(man kann es auch übertreiben), obwohl: Wer das Projekt ein
wenig weiter entwickelt, könnte auch das hinbekommen.
Wir wollen für jeden Einkauf einen Eintrag machen. Also Betrag,
Datum, eine kleine Bemerkung und einen Zweck angeben. Die
Zwecke sollen aus einer Liste stammen, um nachher ein paar
Auswertungen machen zu können (Was kostet die Katze im
Monat? Warum ist Fasten teurer als Sylvester? So was halt).
Schritt 1: Am Anfang steht Projekt-Neu
Nach dem Start von Visual Basic Express legen wir ein neues Projekt
vom Typ „Windows Forms“ an. Name: Haushaltsbuch. Einfach Datei,
Neues Projekt, kurz Name und Typ checken und OK klicken. Damit
haben wir unser Projekt erstellt.
| Schritt 2: Wie die Großen: Datenbanken
Unsere Daten wollen wir in einer Datenbank abspeichern. Also
gehen wir im „Projektmappen-Explorer“ (oben rechts) auf unser
Projekt, klicken rechts und wählen „Hinzufügen-Neues Element“.
Dann suchen wir eine SQL-Datenbank aus (die gelbe Tonne unten
links). Als Name geben wir Ihr Haushaltsbuch.mdf und tippen Enter.
Im anschließenden Dialog klicken wir auf Fertigstellen.
Wir hatten ja gesagt, es gibt Einträge und Zwecke. Beides werden
wir in jeweils einer Tabelle anlegen, damit wir beliebig erweitern
können. Dazu gehen wir oben links auf den Datenbank-Explorer
und öffnen unsere Datenbank bis wir den Eintrag „Tabellen“ sehen.
Die sind noch leer, daher klicken wir rechts drauf und sagen „Neue
Tabelle einfügen“.
Wir sehen den Tabellen-Editor mit Spaltenname, Datentyp und Null
zulassen. Unsere Tabelle soll nun die „Zwecke“ enthalten. Dazu
nehmen wir die Spalte und nennen sie ZweckID, Datentyp int
(Ganze Zahl), NULL zulassen darf nicht angehakt sein (die Spalte
muss also Daten enthalten).
Diese ID Spalte gibt uns die Möglichkeit, jede Zeile mit einem
eindeutigen „Namen“ ansprechen zu können. Dazu gehen wir
unten auf das Fenster Spalteneigenschaften (vorher noch kurz
checken, dass die Zeile ZweckID mit einem Pfeil gekennzeichnet,
also ausgewählt, ist) und suchen den Eintrag „Identitätsspezifikation“.
Dieser etwas sperrige Name zeigt es deutlich: ist es diese
Spalte, die der Zeile ihre Identität (oder „Namen“) gibt? Dazu auf
das kleine Plus vorne klicken und (Ist Identity) auf Ja. Um dies zu
vollenden, gehen wir noch mit der rechten Maustaste auf die
ZweckID wieder oben im Tabellen-Editor und wählen „Primärschlüssel
festlegen“. Ein kleiner Schlüssel erscheint.
Noch eine weitere Zeile mit dem Spaltennamen Text, Datentyp
nvarchar(50) (50 Zeichen sollten ausreichen) und keine NULL
zulassen. Unsere erste Tabelle sollte so aussehen wie im ersten Bild.
Jetzt auf Speichern (die Diskette oben links), die Tabelle soll Zwecke
heißen.

| Schritt 3: Zurück
Wir gehen noch mal in den Datenbank-Explorer links oben, öffnen
die Tabellen und finden „Zwecke“ als Tabelle vor. Rechtsklick auf
„Zwecke“ und „Tabellendaten anzeigen“. Wir sehen unsere Tabelle
vor uns und sie ist leer (überall steht NULL). Wir klicken auf die NULL
in der Text Spalte und schreiben Gehalt (links erscheint ein Stift, wir
editieren gerade). Wenn man die Zeile verlässt (die Tabulator-Taste
zum Beispiel), wird die ZweckID automatisch auf 1 gesetzt. Cool,
das ist unser erster Datensatz.

| Schritt 4: Will sehen: Ein Formular für Zwecke
Wir brauchen ein Formular oder Fenster, mit dem wir die Zeilen
in unserer „Zwecke Tabelle“ bearbeiten können. Um es einfach zu
machen, wählen wir Datenquellen (rechts in der Mitte). Am
oberen Rand der Datenquellen befindet sich ein Symbol mit
einer gelben Tonne, von der ein Pfeil auf einen Haken weist
(Dataset mit dem Assistenten konfigurieren). Das klicken wir an
und im Dialog, der sich dann auftut, wählen wir den Kasten vor
den Tabellen an. Fertigstellen. Jetzt weiß unser Programm auch
von unserer Tabelle in der Datenbank.
Zurück zum Projektmappen-Explorer. Dort klicken wir rechts auf
unser Haushaltsbuch und sagen „Hinzufügen, Windows Form“.
Wir nennen das Formular „Zwecke Bearbeiten.vb“.
Wenn wir jetzt zurück in die Datenquellen gehen, finden wir
„Zwecke“ unterhalb des HaushaltsbuchDataSet. Neben „Zwecke“
erscheint ein Pfeil (dazu auf Zweck klicken), der zu einem Menü
führt, wenn man ihn anklickt. Aus diesem Menü wählen wir
„Details“. Neben der ZweckID in unserer Tabelle „Zwecke“ auch
auf den Pfeil und dort Label auswählen.
Jetzt einfach die Tabelle „Zwecke“ aus diesen Datenquellen mit
links anklicken, festhalten und über unser „Zwecke Bearbeiten
Formular“ ziehen. Sobald man die Maustaste loslässt, baut uns
Visual Basic alles weitere zusammen.
In den Reitern am oberen Rand findet sich ein Fenster Form1.vb.
Das ist das Fenster, mit dem unser Programm starten wird. Auf
diesen Reiter klicken und aus der Toolbox oben links einen
Button auf das Fenster Form1 im Editor ziehen. Im unteren
rechten Bereich kann man die Eigenschaften der Buttons sehen.
Wir ändern die Text Eigenschaft auf Zwecke bearbeiten…
Jetzt den Button doppelt anklicken, der Code-Editor kommt
hoch. Nun wollen wir auch mal programmieren, also folgende
Zeilen eingeben:

Klicken Sie auf die Abbildung um den Code zu erhalten!
Jetzt wollen wir mal ausprobieren. Also auf das grüne Dreieck in
der oberen Leiste klicken, unser Hauptfenster mit dem Button
sollte erscheinen. Wenn man darauf klickt, erscheint unser
„Zwecke Bearbeiten Formular“ mit unserem Datensatz. Über die
Zeichen in der oberen Zeile kann man neue Zwecke hinzufügen,
hin- und herspringen etc. Klickt man auf die Diskette, werden die
gemachten Änderungen zur Datenbank zurück geschrieben.
Herzlichen Glückwunsch zur ersten Datenbank-Applikation.
| Schritt 5: Jetzt wird es ernst...
Für unsere Einträge brauchen wir eine weitere Tabelle. Also im
Datenbank-Explorer wie gehabt, rechte Maustaste auf Tabellen,
neue Tabelle hinzufügen. Spaltenname EintragID, Datentyp int,
keine NULL zulassen, in den Spalteneigenschaften Identitätsspezifikation,
(Ist Identity) auf Ja. Auch hier wieder mit der rechten
Maustaste auf der Spalte den Primärschlüssel festlegen.
Wir brauchen dann noch eine Spalte Betrag vom Typ money,
auch keine NULL zulassen, eine Spalte Bemerkung, Typ
nvarchar(MAX) (darf etwas üppiger sein), hier ist die NULL
erlaubt, eine Spalte FK_ZweckID, Typ int, keine NULL (kommt
gleich, was das soll) und eine Spalte Datum, Typ datetime, auch
keine NULL. Bitte speichern und der Tabelle den Namen Einträge
geben.
Diese Spalte FK_ZweckID soll eine Beziehung zwischen unseren
Einträgen und den Zwecken herstellen. Dazu kopieren wir nicht
die Werte rüber, sondern merken uns den „Namen“ des Zwecks.
Daher kommt auch der Begriff „relationale Datenbank“
(Relation=Beziehung) und nichts anderes sind die überwiegend
meisten Datenbanken heute.
Solche Beziehungen kann man in der Datenbank ablegen und
damit einige Aufgaben automatisieren. Dazu klicken wir im
oberen linken Bereich auf das Symbol, in dem drei kleine
Kästchen mit einander verbunden sind (Beziehungen).
Wir sagen Hinzufügen und im rechten Bereich klicken wir auf Tabellen-
und Spaltenspezifikation. Im Feld erscheinen drei Punkte, auf
die wir klicken. Wir suchen für die Primärschlüsseltabelle die
Zwecke-Tabelle aus. Im unteren Bereich können wir nun die beiden
Einträge in den Tabellen suchen, die die Verbindung herstellen (also
ZweckID links und FK_ZweckID rechts). Wir schließen danach die
beiden Fenster wieder. Die Datenbank weiß jetzt Bescheid.
| Schritt 6: Ein Formular für Einträge
Wir wechseln zu unserem Editor Form1.vb [Entwurf] (die Reiter im
oberen Bereich). Eigentlich müssen wir nur das gleiche tun wie
bereits für das Fenster Zwecke_Bearbeiten. Also in Datenquellen
den Assistenten aufrufen, die Tabellen anhaken, Fertigstellen. Jetzt
finden wir unsere Einträge.
Auch hier mit Hilfe des kleinen Pfeils Einträge auf Details umschalten,
EintragID und FK_ZweckID auf ein Label. Für den Betrag wollen
wir etwas besonderes und gehen auf Anpassen. Wir suchen im
Bereich „zugeordnetes Steuerelement“ die MaskedTextBox aus und
klicken OK. Man sieht, dass der Editor das Datum gleich mit einem
entsprechenden Zeichen hinterlegt hat. Jetzt wieder die Einträge
auf das Formular ziehen und den Zauber wirken lassen.
Startet man jetzt das Programm, stellt man fest, dass die Verbindung
zu den Zwecken in der anderen Tabelle irgendwie noch
seltsam ist. Also zurück in den Editor.
Wir klicken auf das Feld hinter Betrag. Es erscheint ein kleiner Pfeil
(oder SmartTag), auf den wir wieder klicken. Wir können nun einige
wichtige Angaben machen. Hier zum Beispiel die Maske festlegen.
Man darf in dieses Feld ja nur Geldbeträge eingeben, also Vorzeichen,
Zahlen, ein Komma und wieder zwei Zahlen. Das können wir
mit der Maske 999,999.00 erreichen.
Zweck ID Feld (eventuell das dahinterliegende Label aus dem Weg
ziehen).
Diese ComboBox soll uns die Eingabe des Zwecks vereinfachen.
Dazu auf das SmartTag an dieser ComboBox klicken. Wir wählen
„An Daten gebundenes Element“ öffnen und es erscheinen weitere
Auswahlen. Im Bereich Datenquellen wählen wir Weitere Datenquellen,
Projektdatenquellen, HaushaltsbuchDataSet, Zwecke.

Für Member anzeigen Text, für Wertemember
ZweckID und für Ausgewählter
Wert EinträgeBindingSource FK_Zweck
ID. So jetzt mal starten, mit dem Plus aus
der oberen Reihe einen neuen Datensatz
hinzufügen und loseditieren.
Noch ein Schönheitsfehler…
Wenn man während der Eingabe ein
weiteren Zweck hinzufügt, wird der noch nicht in unserer Liste angezeigt. Daher klicken wir auf unseren
„Zwecke bearbeiten Knopf“ und fügen folgenden Code in einer
Zeile unter ZweckeForm.ShowDialog() ein:

Klicken Sie auf die Abbildung um den Code zu erhalten! |
|