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);
}