Autor Beitrag
O'rallY
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 563



BeitragVerfasst: Mi 31.07.02 16:38 
In meinem Delphibuch (Nitty Gritty Delphi 6 von Frank Eller) ist in aller Kürze beschrieben, wie man mit Datenbanken arbeitet. Dort ist auch folgende Funktion aufgeführt (Zugriff über TTable) um die Datenbank zu erstellen:
ausblenden Quelltext
1:
2:
3:
4:
5:
6:
7:
function TDataModule2.CreateDB(DBName: string): boolean;
begin
...
Table1.TableName := DBName;
Table1.CreateTable;
Result := OpenDataBase(DBName);
end;


Wenn ich das dann so übernehme protestiert der Compiler an dieser Stelle:
ausblenden Quelltext
1:
Result := OpenDataBase(DBName);					


Es seien zuviele Parameter übergeben worden. Tatsächlich ist die Funktion in der Hilfe nur so
function OpenDatabase: TDatabase;
aufgeführt.

Wie macht man es denn tatsächlich und warum steht in einem Lehrbuch ein solcher Fehler, wenns denn einer ist?
MrSpock
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 262



BeitragVerfasst: Mi 31.07.02 17:24 
Hallo O'rallY,

es gibt tatsächlich zwei verschiedene Methode mit demselben Namen. Die eine hat einen Parameter, die andere nicht.

ausblenden Quelltext
1:
Session.OpenDataBase('C:\MyDB.DB);					


aber verbunden mit einem DBDataSet:

ausblenden Quelltext
1:
MyTable.OpenDataBase;					


Übrigens braucht man in der Regel OpenDataBase nicht direkt aufrufen.

_________________
Live long and prosper
MrSpock \\//
GPF
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 85



BeitragVerfasst: Mi 31.07.02 18:18 
Ich benutze folgende Methode zum Öffnen bzw. Erstellen von Datenbanken auf TTable-Basis. Für andere Datenquellen muß die Routine angepaßt werden. In diesem Beispiel und dem von Dir vorgestellten Codeschnipsel muß allerdings StoreDefs der Table auf true gesetzt sein bzw. werden. Die Fehlerabfangroutinen habe ich weggelassen, da der Code sonst zu unübersichtlich werden würde.

ausblenden Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
procedure OpenDB (Table: TTable; DBName: string);
begin
  if not assigned(Table) then Exit; //Abbruch falls Table nicht existiert (bzw =nil)
  if Table.Active and (CompareText(DBName, Table.Databasename)=0) then Exit; //Abbruch, da Endzustand bereits erreicht
  if Table.Open and (Table.State in [dsEdit, dsInsert]) then Table.CheckBrowseMode;  //Falls Datenbank aktiv Änderungen speichern, falls vorhanden
  Table.Close; //Datenbank schließen, funktioniert auch wenn die Datenbank bereits geschlossen ist
  Table.Databasename:=DBName;
  if not FileExists(IncludeTrailingBackSlash(Table.Databasename)+Table.Tablename) then Table.CreateTable; //Datenbank erstellen falls nicht existent
  Table.Open;  //Datenbank öffnen
end;
O'rallY Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 563



BeitragVerfasst: Mi 31.07.02 21:25 
danke, es hat mir weitergeholfen!