====== Übungen Visual-CPP Datenbanken ====== ===== Bsp Mathematiker ===== * Erstelle eine Access-Datenbank (math.accdb). In dieser Datenbank sollen in einer Tabelle ''mathematiker'' die Daten berühmter Mathematiker gespeichert werden. * Aufbau der Access-Tabelle: |Name|Text 20| |Lebensdaten|Text 30| * Testeinträge |Name|Lebensdaten| |Pythagoras|570 - 510| |Euklid|365 - 300| |Al-Chwarizmi|780 - 835| |Pascal|1623 - 1662| |Euler|1707 - 1783| |Gauß|1777 - 1855| * Erstelle folgende Buttons * Daten anzeigen: Die Tabelle mathematiker der Datenbank math.db soll in einer DBGrid angezeigt werden und mittels DBNavigator durchgesehen werden können. * Daten übertragen: Der Inhalt der Datenbank soll in eine ListBox übertragen werden. Dabei soll zwischen dem Namen und den Lebensdaten ein „;“ eingefügt werden. * Sortiert speichern: Die Daten sollen in einer Memokomponente geschrieben werden und von der Memokomponente aus alphabetisch sortiert in eine CSV-Datei geschrieben werden (math.csv). Überprüfe Dein Ergebnis indem Du die Datei anschließend in Excel öffnest. * Neue Daten: über ein 2. Formular sollen neue Daten in die Datenbank eingegeben werden können. * Suche: Nach Datensätzen soll gesucht werden könnnen, wird der gewünschte Datensatz nicht gefunden, soll eine entsprechnede Meldung ausgegeben werden. {{:programmierung:DB1.png}} #include #pragma hdrstop #include "DB1Unit1.h" #include "Unit2.h" //--------------------------------------------------------------------------- #pragma package(smart_init) #pragma resource "*.dfm" TForm1 *Form1; //--------------------------------------------------------------------------- __fastcall TForm1::TForm1(TComponent* Owner) : TForm(Owner) { } //--------------------------------------------------------------------------- void __fastcall TForm1::Button1Click(TObject *Sender) { DBNavigator1->Visible="true"; DBGrid1->Visible="true"; } //--------------------------------------------------------------------------- void show(TDataSet* t) {t->First(); while (!t->Eof) { AnsiString s = t->FieldByName("Name")->AsString+";"+t->FieldByName("Lebensdaten")->AsString; Form1->ListBox1->Items->Add(s); t->Next(); } } void __fastcall TForm1::Button2Click(TObject *Sender) {show(FDTable1); } //--------------------------------------------------------------------------- void __fastcall TForm1::Button3Click(TObject *Sender) { ListBox1->Sorted=true; if (SaveDialog1->Execute()) ListBox1->Items->SaveToFile(SaveDialog1->FileName); } //--------------------------------------------------------------------------- void __fastcall TForm1::Button4Click(TObject *Sender) { Form2->ShowModal(); } //--------------------------------------------------------------------------- void Suche(TDataSet *t,AnsiString inhalt) { bool gefunden=false; t->First(); while (!t->Eof) { AnsiString s = t->FieldByName("Name")->AsString; if(inhalt==s) { ShowMessage(t->FieldByName("Name")->AsString+" "+t->FieldByName("Lebensdaten")->AsString); gefunden=true; } t->Next(); } if(!gefunden)ShowMessage("Es konnte kein Datensatz gefunden werden!"); } void __fastcall TForm1::Button5Click(TObject *Sender) { AnsiString suche=InputBox("Suche","Name eingeben",""); Suche(FDTable1, suche); } //--------------------------------------------------------------------------- {{:programmierung:DB2.png}} #include "DB1Unit1.h" //--------------------------------------------------------------------------- #pragma package(smart_init) #pragma resource "*.dfm" TForm2 *Form2; //--------------------------------------------------------------------------- __fastcall TForm2::TForm2(TComponent* Owner) : TForm(Owner) { } //--------------------------------------------------------------------------- void Eingabe(TDataSet* t) {t->Append(); // Leerer Datensatz wird an die Tabelle angehängt t->FieldByName("Name")->AsAnsiString = Form2->Edit1->Text; t->FieldByName("Lebensdaten")->AsAnsiString = Form2->Edit2->Text; } void __fastcall TForm2::Button1Click(TObject *Sender) {Eingabe(Form1->FDTable1); Form2->Close(); } ---- [Physik1DB] DriverID=MySQL Server=127.0.0.1 Database=physik User_Name=root Password= [Physik2DB] DriverID=MSAcc Database=D:\06Datenbank\physik.mdb