Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   Delphi Probleme mit ADOX und D7 Personal (https://www.delphipraxis.net/27510-probleme-mit-adox-und-d7-personal.html)

Legolas 11. Aug 2004 13:19


Probleme mit ADOX und D7 Personal
 
Hallo alle zusammen,

wie mann links erkennen kann benutze ich D7 Personal. Nun wollte ich mal ein bisschen mit Access Datenbanken rumspielen und habe auch einige Infos in Bezug auf die Benutzung der ADOX_TLB's gefunden.

Folgenden Code habe ich bisher nur mal so zum Testen geschrieben. es wird auch eine Datenbank erstellt, das funktioniert auch sehr gut. Allerdings bei dem Versuch eine Tabelle innerhalb der Datenbank zu erstellen bringt mir Delphi schon beim compilieren folgenden Syntaxfehler:

Inkompatible Typen '_ColumnDisp und Column'

Die entsprechende Zeile ist von mir nochmal im unten stehenden Code markiert.

Hat jemand schon mal so was gemacht und kann mir da vielleicht weiterhelfen????

Delphi-Quellcode:
implementation

{$R *.dfm}

resourcestring
  cConnectionString='Provider=Microsoft.Jet.OLEDB.4.0;Data Source=';

var
  aCatalog : _Catalog;
  aTable  : _Table;
  aColumn : _Column;
  aIndex  : _Index;
  sDBPath : String;
  sDS     : String;
  vColName : OLEVariant;


procedure TForm1.Button1Click(Sender: TObject);
begin
  Memo1.Lines.Clear;
  sDBPath:=Edit1.Text;
  if FileExists(sDBPath) then
  begin
    DeleteFile(sDBPath);
    Memo1.Lines.Add(Format('Datenbankdatei %s gelöscht',[sDBPath]));
  end;
  aCatalog:=CoCatalog.Create;
  sDS:=aCatalog.Create(Format('%s%s',[cConnectionString, sDBPath]));
  Memo1.Lines.Add(sDS);
  Memo1.Lines.Add(Format('Datenbank %s wurde erstellt...',[sDBPath]));

  aTable:=CoTable.Create;
  aTable.ParentCatalog:=aCatalog;
  aTable.Name:='Kunden';
  Memo1.Lines.Add(Format('Tablle %s wurde erstellt...',[aTable.Name]));

  vColName:='KdnName';
  aTable.Columns.Append(vColName,adVarWChar,30);
  aColumn:=aTable.Columns.Item[vColName] as _ColumnDisp; <-- HIER DER FEHLER !!!!!!!!
  aColumn.Properties['Description'].Value:='Name des Kunden';
  Memo1.Lines.Add('Spalte 1 hinzugefügt...');
end;

end.
Ich wäre euch dankbar wenn Ihr mich auf den richtigen Weg bringen könntet.

Ach ja, da ich was lernen will kommen Fremdkomponenten leider nicht in Frage. Ich möchte es gerne selber programmieren.

Gollum 11. Aug 2004 13:38

Re: Probleme mit ADOX und D7 Personal
 
Hallo,

so müsste es funktionieren:

Delphi-Quellcode:
  ...
  vColName:='KdnName';
  // ab hier geht's los...
  aColumn:=CoColumn.Create;
  with aColumn do
  begin
    ParentCatalog:=aCatalog;
    Name:=vColName;
    Type:=adVarWChar;
    DefinedSize:=30;
    // folgende Anweisungen sind nicht unbedingt nötig...
    Properties['Discription'].Value:='Name des Kunden';
    Properties['Default'].Value:='';
    Properties['Jet OLEDB:Allow Zero Length'].Value:=True; // <-- erlaubt Null-Werte
  end; // with
  aTable.Columns.Append(aColumn, 0, 0);
  ...
  // und zum Schluß Tabelle hinzufügen
  aCatalog.Tables.Append(aTable);
Kurz zur Erklärung:
ADOX erwartet, dass für jede Spalte der Tabelle eine eigene Column-Objektinstanz erzeugt, konfiguriert und der Columns-Kollektion des Table-Objekts hinzugefügt wird. Erst wenn das erledigt ist, wird das konfigurierte Table-Objekt über die Methode Append zu der Tables-Kollektion des Catalog-Objekt hinzugefügt.

Legolas 11. Aug 2004 14:05

Re: Probleme mit ADOX und D7 Personal
 
Hi Gollum,

(dein Name passt ja gut zu meinem, gelle? :mrgreen: :mrgreen: )

mit zwei kleinen Änderungen hat es funktioniert.

Ich bedanke mich bei dir. Hast du ne Ahnung wo ich ein paar gute Tuts in diese richtung im Internet finde (ich habe bisher nichts gefunden.

Gollum 11. Aug 2004 14:41

Re: Probleme mit ADOX und D7 Personal
 
Hallo Legolas,

(auch H.d.R.-Fan :thumb: ). Leider kann ich Dir mit einem Tutorial nicht dienen. Ich habe zwar schon längere Zeit vor eines zum Thema zu schreiben, komme aber irgendwie nicht dazu.

Was ich Dir empfehlen kann ist das Buch
"ADO und Delphi" von Andreas Kosch
ISBN: 3-935042-10-8

Evtl. hilft es auch, wenn Du im Entwickler-Forum etwas stöberst.

Legolas 11. Aug 2004 14:55

Re: Probleme mit ADOX und D7 Personal
 
Hi Gollum,

das ist sicherlich eine gute Idee, allerdings war ich da schon und den Code den ich hier gepostet habe ist aus der Feder von Adreas Kosch (und seinem Buch ADO und Delphi).
deshalb wunderte es mich ja auch das das Beispiel bei mir nicht funktioniert und die besagte Fehlermeldung auftaucht.

Dein Code hat ja letztendlich funktioniert. :mrgreen:

Na ja, ich werd halt mal in Netz weiter stöbern um die ganze Sache besser zu verstehen. Solltest du mal dein Tutorial fertig haben: HER DAMIT, ABER SOFORT :mrgreen: :mrgreen:

In diesem Sinne....


Alle Zeitangaben in WEZ +1. Es ist jetzt 23:13 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz