![]() |
Datenbank: Access-datenbank • Version: ? • Zugriff über: Ado
ADO-aber wie?
Hallo
also...hab mich heut erst in dem forum registriert....und ich denke es ist wichtig dazu zusagen, dass ich erst seit kurzem mit Delphi arbeite. Außerdem arbeite ich mit einer recht alten Version(Delphi6). Nachdem ich mich fast durch ein Buch("jetzt lern ich Delphi") durchgearbeitet hab, bin ich dabei mein erstens Programm zu schreiben... dabei handelt es sich um ein recht einfaches Programm zur umrechnung von einigen Körpermaßen zu Konstruktionsmaßen... Das Problem liegt bei nun bei der Arbeit mit der Datenbank...indieser würde ich gern Die umgerechneten Maße Speichern. Bisher konnte ich die Datenbank mit hilfe dieses codes erzeugen:
Delphi-Quellcode:
Allerdings bin ich nun seit zwei tagen im Internet auf der Suche nach einer Art über ADO auf diese Datenbank zuzurgreifen. Dabei sind mir natürlcih einige Komponente aufgefallen, die ich dazu brauche...z.B. TABOConnection...in dem Tutorial(
function CreateAccessDatabase(Database : String) : Boolean;
var AdoxCatalog : TCatalog; begin AdoxCatalog := TCatalog.Create(nil); try AdoxCatalog.Create1('Provider=Microsoft.Jet.OLEDB.4.0;Jet OLEDB:Engine Type=5;Data Source=C:\Masskartei.mdb' ); result := true; except result := false; end; AdoxCatalog.Free; end; ![]() Kann mir einer von euch weiterhelfen? praktisch dreht sich mein Problem im Allgemeinen um die Verbindung zur Datenbank. Wäre nett, wenn einer vllt noch einmal kurz und knapp umschreiben könnte, welche schritte ich vornehmen muss, um überhaupt eine richtige Verbindung zu einer Datenbank aufnehmen und mit dieser arbeiten zu können, bzw um in ihr werte Speichern zu können. [edit=Christian Seehase]Delphi-Tags gesetzt. Bitte künftig selber machen. Danke. Mfg, Christian Seehase[/edit] |
Re: ADO-aber wie?
Hallo erstmal,
ich habe das selbe Problem gehabt wie du. Ich habe vor kurzem meine erste Datenbank in Access geschrieben und diese mit Delphi abgefrage und bearbeitet. Als erstes habe ich mit den Query und Table Komponenten gearbeitet und mir einen Datenbanknavigator dazu geholt. Damit kannst du schon fast alles an deiner Datenbank bearbeiten. Als nächstes habe ich mir externe DBEdit und so in mein Formular gelegt und über diese meine Funktionen Stück für Stück erweitert. Ich weiß das ist nicht viel was ich Dir sagen kann, ich hoffe aber das es Dir ein bißchen weiterhelfen tut. MFG Jens |
Re: ADO-aber wie?
Hallo und Willkommen in der DP! :dp:
Ist jetzt zwar nicht direkt zu deinem Datenbankproblem aber vllt hilfts trotzdem.
Delphi-Quellcode:
Kleiner Tip: Du solltest nie einen so direkten Pfad angeben! Unter Vista und Win 7 hast du z.B. keine Rechte direkt auf C:\ zu schreiben! Entweder schreibste nur den Namen der Datei rein "Masskartei.mdb" dann holt er sich das eigentlich aus dem Ordner, in dem deine Anwendung liegt oder du machst das mit "ExtractFilePath".
AdoxCatalog.Create1('Provider=Microsoft.Jet.OLEDB.4.0;Jet OLEDB:Engine Type=5;Data Source=C:\Masskartei.mdb' );
Wenn es jetzt nur ums Speichern geht und nicht darum, mit einer Datenbank zu arbeiten, kannst du die Daten auch in einer INI-File speichern. |
Re: ADO-aber wie?
Liste der Anhänge anzeigen (Anzahl: 1)
Zunächst brauchst du eine TADOConnection:
Delphi-Quellcode:
Du nimmst eine TADOQuery und setzt die Connection auf ADOConnection1.
// ConnectionString setzen
ADOConnection1.ConnectionString := 'Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\Masskartei.mdb'; // Verbindung zur Datenbank herstellen ADOConnection1.Connected := True; Das Property SQL setzt du z.B. auf
SQL-Code:
und dann einfach das Property Active auf True setzen.
SELECT * FROM KomponentenTabelle
Das setzt natürlich vorraus, dass es eine Access-Datenbank mit dem richtigen Namen und Pfad auf deinem Rechner gibt und dass dort eine Tabelle mit dem Namen "KomponentenTabelle" enthalten ist. Im Anhang ist ein kleines Demoprojekt mit passender Access-Datenbank. |
Re: ADO-aber wie?
Zitat:
Die ADO-Komponenten befinden sich bei mir unter "dbGo" , kann aber sein, dass du keine ADO hast. Du könntest dir eine neue Turbo-Delphi-Version runterladen, natürlich kostenlos, allerdings neuer als deine Version. Die findest du hier ----> ![]() Für eine Verbindung zu einer Datenbank brauchst du noch eine DataSource-Komponente ("Datenzugriff")und eine DBGrid , um die Daten anzuzeigen. Wenn du eine einfache Datenbank erstellen willst, dann ist das mit MyBase einfacher, und du brauchst kein ADO Hier das Tutorial ----> ![]() |
Re: ADO-aber wie?
Hallo und Willkommen,
bei Delphi 6 (Enterprise) gibt es einen Komponentenreiter ADO, da sind alle von Dir benötigten Komponenten für den Datenbankzugriff enthalten. |
Re: ADO-aber wie?
nja...ich hab nur ne Schulversion, die ich von unserer Schule bekommen hab...und da gibts auch den Komponentenreiter nicht. Hab mir jetzt TurboDelphi (Explorer) runtergeladen und hoffe mal, dass ich damit weiter komme.
aber schonmal viel Dank für die zahlreichen Antworten... |
Re: ADO-aber wie?
Hallo zusammen
Also ich hab mir jetzt Turbo Delphi Explorer installiert und da auch soweit eig alles gefunden, also TADOconnection usw. Allerdings hab ich nun das Problem, dass der folgende Programmcode nicht mehr funktioniert:
Delphi-Quellcode:
Als Fehlermeldungen wird immer Angegeben:
function CreateAccessDatabase(Database : String) : Boolean;
var AdoxCatalog : TCatalog; begin AdoxCatalog := TCatalog.Create(nil); try AdoxCatalog.Create1('Provider=Microsoft.Jet.OLEDB.4.0;Jet OLEDB:Engine Type=5;Data Source=C:\Datenbank.mdb' ); result := true; except result := false; end; AdoxCatalog.Free; end; [Pascal Fehler] Unit1.pas(54): E2003 Undefinierter Bezeichner: 'TCatalog' Außerdem unterstreicht er immer das Create und das Free...ich denke, dass liegt daran, dass mir die Unit fehlt oder? Jedenfalls hab ich unter Delphi 6 in der Typenbibliothek die Unit ADOX_TLB hinzugefügt, mit der ich dann die Funktion auch ausführen konnte... Hab leider keine Lösung für das Probllem gefunden....kann mir einer von euch weiterhelfen? MfG, schorschi_jg [edit=alzaimar]Delphi-Tags eingefügt. Mfg, alzaimar[/edit] |
Re: ADO-aber wie?
ok...das hat sich soweit erledigt...
allerdings steh ich nun vor dem nächsten Problem....wie kann ich die Datenbank einrichten? Also wie kann ich eine Tabelle erstellen, in der Informationen gespeichert werden können und was muss ich dabei alles beachten?...bin leider ein ziemlicher neuling auf dem Gebiet, aber wäre echt nett, wenn mir einer von ecuh da weiterhelfen könnte |
Re: ADO-aber wie?
Zitat:
Wenn du kein MS Access hast, dann solltest du dich vielleicht nach einer anderen DB umschauen. Es ist ganz wichtig, dass du ein visuelles Tool hast, um unabhängig von Delphi deine Datenbank betrachten und manipulieren zu können. Lesestoff: ![]() |
Re: ADO-aber wie?
Ja das werd ich mir mal zulegen....aber hab mal ein bissel rumexperimentiert...und hab gemerkt, dass man bei der DataSource Komponente neue Felder hinzufügen kann und die dann den Columns eines DBGrids zuweisen kann...da ich mehrere Tabellen in der Datenbank haben wollte, hab ich einfach noch dementsprechend mehrere DBGrids Komponente eingefügt und so meine Tabellen erstellt...is das so richtig?...es wurde zumindest noch keine Fehlermeldung angezeigt....
wobei ich nun natürlich auch wieder vor dem nächsten Problem stehe...ich weis nicht, wie man nun Daten in diesen Tabellen speichern und abrufen kann... |
Re: ADO-aber wie?
du solltest dich anscheinend mal dringend mit Datenbanken und SQL beschäftigen. Ansonsten kommen wir hier nicht vorwärts.
|
Re: ADO-aber wie?
Ja sicher...nja...zugegebener maßen hab ich erst am 6. dezember 2008 angefangen delphi zu "lernen". Das heißt, ich habe angefangen ein buch über delphi zu lesen....Allerdings werden in dem Buch keine Datenbanken behandelt. Ich mir bin durchausbewusst, dass ich wahrscheinlich sehr grundlegende Fehler mache....aber das ist nunmal mein erstes Programm das ich überhaupt schreibe...und Delphi ist die erste Sprache, die ich überhaupt lerne...
Jedenfalls hab ich mich im Internet jetzt noch ein bissel über Datenbanken informiert...und bin dabei auf Relationale Datenbanken gestoßen. Soweit ich das verstanden hab, handelt es sich dabei um verschiedene Tabellen, die man innerhalb einer Datenbank anlegen und mit einander verknüpfen kann. Das geschieht, soweit ich das verstanden hab über einen Primärschlüssel. Die Tabellen würde ich gern über das Programm selbst anlegen, für den Fall, dass der user kein Access hat, bzw damit nicht umgehen kann. Außerdem will ich so vorbeugen, dass ein Programmfehler auftritt, wenn die Datenbank nicht vorhanden ist, da sie in dem Fall vom Programm selbst erstellt wird. wie die DAtenbank erstellt wird weis ich inzwischen, aber wie ich da nun Tabellen erstellen kann, konnte ich noch nicht herausfinden...wäre echt nett, wenn mir vllt jemand ein link oda irgwas geben könnte... |
Re: ADO-aber wie?
Prinzipiell reagieren (die meisten) Datenbanken auf SQL.
Du kannst also immer eine Query nehmen und mittels SQL die Tabellen erstellen. Das SQLKommando übergibst du in den dazugehörigen String (die Eigenschaft der Komponente heißt meist SQL). Der sieht etwa so aus "Create Table tabellenname..."
SQL-Code:
Die Syntax dazu findest du im Internet.
CREATE TABLE "Meine_Tabelle"
("ID" NUMBER(10) NOT NULL, "NAME" VARCHAR2(40) NOT NULL, "BETRAG" FLOAT(32), PRIMARY KEY("ID")); Ich weis nicht, ob es Delphi-Komponenten gibt, die das übernehmen. Kann sein. Ich arbeite lieber direkt. |
Re: ADO-aber wie?
Hallo,
ich seh grad diesen Thread hier und hab in mein soeben runter geladenes und inzwischen installiertets Turbo Delphi geguckt. Wo finde ich die Klasse TCatalog? Unter Ado auf jeden Fall nicht. Wollte ne kleine Datenbank mit ADO bauen. Habe mir aus dem Delphi Treff das Handbuch gesaugt und will es nachvollziehen. Beim Stöbern im Netz hab ich nun diesen Thread entdeckt. Wo also ist TCatalog zu finden und was kann diese Klasse? |
Re: ADO-aber wie?
hey na
ja...sorry...hab vergessen die Lösung für das problem dazuzuschreiben...hab ja selber gemerkt, dass die Funktion zum erstellen einer *.mdb datei so nicht funktioniert....stattdessen nutze ich jetzt diese funktion:
Delphi-Quellcode:
function CreateAccessDatabase(DBName : String) : Boolean;
var ADOxCatalog: Variant ; begin ADOxCatalog :=CreateOleObject ('ADOX.Catalog'); try ADOxCatalog.Create('Provider=Microsoft.Jet.OLEDB.4.0;Jet OLEDB:Engine Type=5;Data Source='+ DBName+'.mdb'); result:= true; except result:= false; end; end; Allerdings musst du bei uses noch die Unit comobj angeben. Dann sollte das Funktionieren..tuts bei mir zumindest;) TCatalog konnt ich unter Delphi 6 noch in der Typenbibliothek hinzufügen...bzw eher die ADO_TLB unit, in der TCatalog enthalten war...unter Turbo Delphi konnte ich diese Unit allerdings auch nicht mehr finden und somit auch TCatalog nicht mehr verwenden.... [edit=mkinzler]Tag korrigiert Mfg, mkinzler[/edit] |
Re: ADO-aber wie?
Du kannst dir aber auch die TybBibliothek erstellen, wenn du nicht über Variant gehen willst.
Unter TDE geht das leider nicht übers Menu, aber die tlibimp.exe findest du irgendwo im bin-Verzeichnis und eine Anleitung dazu war hier in der DP. Edit: und die DLL dazu ist MSADOX.dll Edit2: von hier aus dem Forum (damit alles bei einander ist) Zitat:
|
Re: ADO-aber wie?
also hab das jetzt mit dem SQL-Code gemacht...funktioniert echt gut
hab außerdem noch ein recht hilfreichen link, wie ich finde...falls jemand mal das selbe problem hat und noch nie was mit SQL geschrieben bzw sonst irgwie zu tun hatte... ![]() ist zwar für fortgeschrittene bestimmt etwas dürftig aber mir hats schonmal geholfen :wink: |
Alle Zeitangaben in WEZ +1. Es ist jetzt 12:24 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz