Entwickler-Ecke

Datenbanken - If Tabelle.exits then


GUFR - So 13.06.04 19:45
Titel: If Tabelle.exits then
Hallo

Der Datenbank Zugriff mache ich mit ADO auf eine Accessdatenbank. Nun habe ich zur Laufzeit eine Tabelle erstellt und möchte mit "if Tabelle.exits then" prüfen ob die Tabelle noch existiert, aber Delphi sagt Undefinierter Bezeichner "Tabelle".

Wieso, muss ich noch was definieren?

Gruss

GUFR :D


smiegel - Mo 14.06.04 08:25

Hallo,

so geht das auch nicht. Da musst Du die ADOConnection bemühen. Die weiss, welche Tabellen zur aktuellen MDB gehören.


Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
function TabelleExists(aCon:TADOConnection; const aTabelle:String):Boolean;
var sl:TStringList;
begin
  Result:=False;
  sl:=TStringList.Create;
  try
    aCon.GetTableNames(sl);
    Result:=(sl.IndexOf(aTabelle)<>-1);
  finally
    sl.Free;
  end// try
end// TabelleExists


...
if TabelleExists(ADOConnection1, 'MeineTabelle'then 
  ShowMessage('Tabelle ist vorhanden.');
...


GUFR - Mo 14.06.04 19:52
Titel: If Tabelle.exits then
Hallo Smiegel

Es läuft noch nicht, da ich es noch nicht ganz verstanden habe.

Präzisierung: Die Tabellen sind in einem Datamodule1, die zu prüfende Tabelle heisst Temp_name.

Frage: Muss die Function in der Programm Unit Datamodule sein. Ist aTabelle der Name meiner Tabelle "Temp_Name"?


Die ADOConnection ist im Datamodule1.

Problem: Undefinierter Bezeichner TADOConnection


Danke für die Mühe!

Gruss

GUFR


smiegel - Di 15.06.04 08:14

Hallo,

kopiere den oben geposteten Code in den implementation-Abschnitt Deines Datamodule1. Im interface-Abschnitt, nach der Deklaration von TDataModul1 musst Du die Funktion aufführen:

Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
...
type
  TDataModule1=class(TDataModule)
  ...
  ...
  end;

function TabelleExists(aCon:TADOConnection; const aTabelle:String):Boolean; // <--- einfügen

var
  DataModul1: TDataModule;

implementation
...


Von nun an ist nur noch der Aufruf der Funktion selber wichtig. Dazu musst Du nur die Unit DataModul1 in den uses-Abschnitt der Unit aufnehmen, die die Funktion aufrufen will.


Delphi-Quelltext
1:
2:
3:
4:
// Statt "ADOConnection1", den Namen den die Connection Dir hat
// Statt "MeineTabelle", den Tabellennamen, der gesucht werden soll
if TabelleExists(DataModul1.ADOConnection1, 'MeineTabelle'then   
  ShowMessage('Tabelle ist vorhanden.');


GUFR - Di 15.06.04 20:08
Titel: If Tabelle.exits then
Hallo

Leider gibts immer noch ein Problem

function TabelleExists(aCon:TADOConnection; const aTabelle:String):Boolean; // <---

Habe alles nach Deinen Anweisungen reinkopiert. Im Datamodule1 oben habe ich diese Zeile und unten die ganze function eingefügt..

Nun reklamiert der Compiler folgendes bei der oberen Zeile: "Auf TabelleExists zugewiesener Wert wird niemals benützt" und das Programm kann nicht wertig compiliert werden.

Warum?

Gruss

GUFR


FaTaLGuiLLoTiNe - Di 15.06.04 22:27

GUFR hat folgendes geschrieben:
Nun reklamiert der Compiler folgendes bei der oberen Zeile: "Auf TabelleExists zugewiesener Wert wird niemals benützt" und das Programm kann nicht wertig compiliert werden.


Hmm diese Meldung dürfte nur ein Hinweis sein, dass du in der Funktion TabelleExists einmal etwas an Result zuweist, wo es dem Compiler unnötig erscheint. An der Compilierung sollte es ihn aber eigentlich nicht hindern ...


GUFR - Mi 16.06.04 19:33
Titel: If Tabelle.exits then
Hallo zusammen

Es läuft. Super, danke !!

Guss

FUFR