Autor Beitrag
GUFR
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 37



BeitragVerfasst: So 13.06.04 19:45 
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
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 992
Erhaltene Danke: 1

WIN 7
D7 Prof., C#, RAD XE Prof.
BeitragVerfasst: 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.

ausblenden 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.');
...

_________________
Gruß Smiegel
Ich weiß, daß ich nichts weiß, aber ich weiß mehr als die, die nicht wissen, daß sie nichts wissen. (Sokrates)
GUFR Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 37



BeitragVerfasst: Mo 14.06.04 19:52 
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
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 992
Erhaltene Danke: 1

WIN 7
D7 Prof., C#, RAD XE Prof.
BeitragVerfasst: 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:
ausblenden 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.

ausblenden 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.');

_________________
Gruß Smiegel
Ich weiß, daß ich nichts weiß, aber ich weiß mehr als die, die nicht wissen, daß sie nichts wissen. (Sokrates)
GUFR Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 37



BeitragVerfasst: Di 15.06.04 20:08 
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
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 200
Erhaltene Danke: 5

Windows 7, Windows 8.1
Delphi XE
BeitragVerfasst: 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 ...

_________________
<< FaTaLGuiLLoTiNe >>
Rhinoceroses don't play games!
GUFR Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 37



BeitragVerfasst: Mi 16.06.04 19:33 
Hallo zusammen

Es läuft. Super, danke !!

Guss

FUFR