====== Zugreifen auf Datenbankinhalte ======
==== Aktivieren der FDTable ====
Da bei Änderungen des Pfades der Datenbank die ADOTable1 öfters vom Programm automatisch auf ''inaktiv'' gesetzt wird, empfiehlt es sich, bei Laufbeginn die ADOTable1 gleich zu aktivieren:
void __fastcall TForm1::ffenDB1Click(TObject *Sender)
{ FDTable1->Active=true;
Label1->Caption="Datenbank: aktiv";
}
==== Beispiel: Übertragen der Datenbankdaten in eine ListBox-Komponente (Access, SQL) ====
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);
}
==== Beispiel: Suche in der Datenbank (Access, SQL) ====
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);
}
==== Beispiel: Einfügen in der Datenbank (Access, SQL) ====
void einfuegen(TDataSet* h)
{h->Last(); // Dateizeiger wird ans Ende der Datenbank gestellt
h->Append(); // Leerer Datensatz wird angehängt
h->FieldByName("VNName")->AsAnsiString=Form1->Edit1->Text;
h->FieldByName("Strasse")->AsAnsiString=Form1->Edit2->Text;
h->FieldByName("Ort")->AsAnsiString=Form1->Edit3->Text;
h->FieldByName("PLZ")->AsLargeInt=Form1->Edit4->Text.ToInt();
h->Post(); // Datensatz wird in der Datenbank aktualisiert
}
void __fastcall TForm1::Button1Click(TObject *Sender)
{ einfuegen(FDTable1);
}
==== Beispiel: Übertragen eines Datensatzes in Editfelder und anschließedes Speichern (Access, SQL) ====
void Editieren(TDataSet *t,AnsiString inhalt)
{
bool gefunden=false;
t->First();
while (!t->Eof)
{
AnsiString s = t->FieldByName("VNName")->AsString;
if(inhalt==s)
{
// ShowMessage(t->FieldByName("Name")->AsString+" "+t->FieldByName("Lebensdaten")->AsString);
// gefunden=true;
Form1->Edit1->Text=t->FieldByName("VNName")->AsString;
Form1->Edit2->Text=t->FieldByName("Strasse")->AsString;
Form1->Edit3->Text=t->FieldByName("Ort")->AsString;
Form1->Edit4->Text=t->FieldByName("PLZ")->AsString;
gefunden=true;
break;
}
t->Next();
}
if(!gefunden) ShowMessage("Es konnte kein Datensatz gefunden werden!");
}
void __fastcall TForm1::Button2Click(TObject *Sender)
{AnsiString s = InputBox("Datensatz editieren", "Welcher Datensatz", "");
Editieren(FDTable1,s);
}
//---------------------------------------------------------------------------
void Speichern(TDataSet* h)
{h->Edit();
h->FieldByName("VNName")->AsAnsiString=Form1->Edit1->Text;
h->FieldByName("Strasse")->AsAnsiString=Form1->Edit2->Text;
h->FieldByName("Ort")->AsAnsiString=Form1->Edit3->Text;
h->FieldByName("PLZ")->AsLargeInt=Form1->Edit4->Text.ToInt();
h->Post();
}
void __fastcall TForm1::Button3Click(TObject *Sender )
{
Speichern(FDTable1);
}
==== Beispiel: Löschen in der Datenbank (Access, SQL) ====
void loeschen(TDataSet *t,AnsiString inhalt)
{
t->First();
while (!t->Eof)
{
AnsiString s = t->FieldByName("VNName")->AsString;
if(inhalt==s)
{ t->Delete();
break;
}
t->Next();
}
}
void __fastcall TForm1::Button4Click(TObject *Sender)
{
loeschen(FDTable1, InputBox("Datensatz löschen", "Welcher Datensatz", ""));
}
==== Beispiel: Daten von MySQL-Datenbank in MSAccess-Datenbank übertragen ====
void transfer(TDataSet* h1, TDataSet* h2)
{h1->First(); h2->Last();
while (!h1->Eof) {
// Datentransfer
h2->Append();
h2->FieldByName("Name")->AsAnsiString=h1->FieldByName("Name")->AsAnsiString;
h2->FieldByName("Lebensdaten")->AsAnsiString=h1->FieldByName("Lebensdaten")->AsAnsiString;
h2->Post();
// Zeiger positionieren
h1->Next();h2->Last();
}
}
void __fastcall TForm1::Button1Click(TObject *Sender)
{transfer(FDTable1,FDTable2);
}