![]() |
Datenbank: Access • Version: 2003 • Zugriff über: ADO
Mit ADO Tabelle aus Access abfragen?
Hallo
Ich habe erfolgreich dieses Tutorial: ![]() sozusagen auf einen Knopf drücken(nennen wir ihn Abfrage) und dann soll das Ergebnis aus der abfrage aufgelistet werden. Gibt es dazu auch ein Tutorial? |
Re: Mit ADO Tabelle aus Access abfragen?
Hallo,
![]() Für das allgemeine Verständnis, wie die einzelnen Komponenten miteinander verbunden werden, sollte das aber genügen. Zur Anzeige einer kompletten Tabelle benutzt man einfach ein TDBGrid. |
Re: Mit ADO Tabelle aus Access abfragen?
Ok so ganz verstehe ich das noch nicht. Wie stelle ich eine Verbindung zwischen dem dbgrid und der ADO Connection her?
|
Re: Mit ADO Tabelle aus Access abfragen?
Über eine DataSource
|
Re: Mit ADO Tabelle aus Access abfragen?
Ah ja habe ich gerade gemacht. Auch beim dbgrid alles ausgewählt. Dann bin ich auf kompilieren gegangen. Aber warum zeigt er nichts als Ausgabe an?
|
Re: Mit ADO Tabelle aus Access abfragen?
Wie hast du Verknüpft?
Delphi-Quellcode:
Grid.DataSource := DataSource;
DataSource.DataSet := ADODataSet; |
Re: Mit ADO Tabelle aus Access abfragen?
Ich habe das dbgrid ausgewählt. im Objektinspektor unter Datenbank --> DataSource habe ich DataSource1 ausgewählt. Reicht das nicht?
|
Re: Mit ADO Tabelle aus Access abfragen?
Nein, du musst diese auch mit einem DataSet verbinden
|
Re: Mit ADO Tabelle aus Access abfragen?
Sorry jetzt steige ich garnet mehr durch. Kannst du mir nochmal genau erklären wie ich das machen muss?
|
Re: Mit ADO Tabelle aus Access abfragen?
Siehe
![]() |
Re: Mit ADO Tabelle aus Access abfragen?
Ah ok und wo muss ich das einsetzen?
EDIT: habe es richtig eingesetzt. Aber es erscheinen nur vor dem kompilieren die Daten wenn es fertig kompiliert ist sind keine Daten zu sehen. |
Re: Mit ADO Tabelle aus Access abfragen?
Stelle dein Projekt mal hier ein
|
Re: Mit ADO Tabelle aus Access abfragen?
Ok. Also Hauptdatei:
Delphi-Quellcode:
unit TForm1;
interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, DatenmodulUnit, Menus, StdCtrls, Registry, Grids, DBGrids, DB, ADODB, Mask, DBCtrls; type TForm2 = class(TForm) MainMenu1: TMainMenu; Datei1: TMenuItem; DBffnen1: TMenuItem; DBSchlieen1: TMenuItem; DBKonfiguration1: TMenuItem; DataSource1: TDataSource; DBGrid1: TDBGrid; procedure OpenDatabaseClick(Sender: TObject); procedure CloseDatabaseClick(Sender: TObject); procedure DatenbankKonfiguration1Click(Sender: TObject); procedure FormShow(Sender: TObject); procedure FormClose(Sender: TObject; var Action: TCloseAction); procedure DataSource1DataChange(Sender: TObject; Field: TField); private { Private-Deklarationen } function WriteDSNToRegistry(DSN: string): Boolean; function ReadDSNFromRegistry(var DSN: string): Boolean; public { Public-Deklarationen } end; var Form2: TForm2; implementation procedure TForm2.OpenDatabaseClick(Sender: TObject); begin if DataModule2.OpenDatabase=true then MessageDlg('Die Datenbank konnte erfolgreich geöffnet werden', mtInformation, [mbOK], 0) else MessageDlg('Die Datenbank konnte nicht geöffnet werden', mtError, [mbOK], 0); end; {$R *.dfm} procedure TForm2.CloseDatabaseClick(Sender: TObject); begin if DataModule2.CloseDatabase=true then MessageDlg('Die Datenbank konnte erfolgreich geschlossen werden', mtInformation, [mbOK], 0) else MessageDlg('Die Datenbank konnte nicht geschlossen werden', mtError, [mbOK], 0); end; function TForm2.WriteDSNToRegistry(DSN: String): Boolean; var Registry: TRegistry; begin WriteDSNToRegistry:=true; Registry:=TRegistry.Create; Registry.RootKey:=HKEY_LOCAL_MACHINE; {Der Registry-Pfad für Ihren Eintrag} if Registry.KeyExists('\Software\MeinProg\MeineAnw')=false then try Registry.CreateKey('\Software\MeinProg\MeineAnw'); except Registry.Free; WriteDSNToRegistry:=false; Exit; end; try if Registry.OpenKey('\Software\MeinProg\MeineAnw', true)=true then Registry.WriteString('DSN', DSN) else begin MessageDlg('Es konnte nicht in die Registry geschrieben '+ 'werden', mtError, [mbOK], 0); WriteDSNToRegistry:=false; end; finally Registry.CloseKey; Registry.Free; end; end; function TForm2.ReadDSNFromRegistry(var DSN: String): Boolean; var Registry: TRegistry; begin ReadDSNFromRegistry:=true; Registry:=TRegistry.Create; try Registry.RootKey:=HKEY_LOCAL_MACHINE; if Registry.KeyExists('\Software\MeinProg\MeineAnw')=true then begin if Registry.OpenKey('\Software\MeinProg\MeineAnw', true)=true then DSN:=Registry.ReadString('DSN') else ReadDSNFromRegistry:=false; end else ReadDSNFromRegistry:=false; finally Registry.Free; end; end; procedure TForm2.DataSource1DataChange(Sender: TObject; Field: TField); begin end; procedure TForm2.DatenbankKonfiguration1Click(Sender: TObject); var DSN: string; begin if DataModule2.EditMeineAnwendungDSN(DSN)=true then begin MessageDlg('Der DSN konnte erfolgreich geändert werden', mtInformation, [mbOK], 0); WriteDSNToRegistry(DSN); end else MessageDlg('Der DSN konnte nicht geändert werden', mtError, [mbOK], 0); end; procedure TForm2.FormShow(Sender: TObject); var DSN: string; begin if ReadDSNFromRegistry(DSN)=true then begin if DataModule2.SetMeineAnwendungDSN(DSN)=true then if DataModule2.OpenDatabase=false then begin MessageDlg('Es konnte keine Verbindung zur Datenbank '+ 'aufgebaut werden.', mtError, [mbOK], 0); DatenbankKonfiguration1Click(Sender); end; end else if DataModule2.OpenDatabase=false then begin MessageDlg('Es konnte keine Verbindung zur Datenbank '+ 'aufgebaut werden.', mtError, [mbOK], 0); DatenbankKonfiguration1Click(Sender); end else begin MessageDlg('Es konnte keine DSN ausgelesen werden.', mtError, [mbOK], 0); DatenbankKonfiguration1Click(Sender); end; end; procedure TForm2.FormClose(Sender: TObject; var Action: TCloseAction); begin WriteDSNToRegistry(DataModule2.GetMeineAnwendungDSN); DataModule2.CloseDatabase; end; INITIALIZATION end. Datenmodul:
Delphi-Quellcode:
unit DatenmodulUnit;
interface uses SysUtils, Classes, DB, ADODB, ADOConED; type TDataModule2 = class(TDataModule) ADOConnection1: TADOConnection; ADOTable1: TADOTable; private { Private-Deklarationen } public { Public-Deklarationen } function OpenDatabase: Boolean; function CloseDatabase: Boolean; function EditMeineAnwendungDSN(var DSN: string): Boolean; function GetMeineAnwendungDSN: string; function SetMeineAnwendungDSN(DSN: string): Boolean; end; var DataModule2: TDataModule2; implementation function TDataModule2.OpenDatabase: Boolean; begin OpenDatabase:=true; try ADOConnection1.Open; except OpenDatabase:=false; end; end; function TDataModule2.CloseDatabase: Boolean; begin CloseDatabase:=true; try ADOConnection1.Close; except CloseDatabase:=false; end; end; function TDataModule2.EditMeineAnwendungDSN(var DSN: string): Boolean; begin EditMeineAnwendungDSN:=true; if ADOConnection1.Connected=true then if CloseDatabase=false then begin EditMeineAnwendungDSN:=false; exit; end; if EditConnectionString(ADOConnection1)=true then DSN:=ADOConnection1.ConnectionString else EditMeineAnwendungDSN:=false; end; function TDataModule2.GetMeineAnwendungDSN: string; begin GetMeineAnwendungDSN:=ADOConnection1.ConnectionString; end; function TDataModule2.SetMeineAnwendungDSN(DSN: string): Boolean; begin SetMeineAnwendungDSN:=true; if ADOConnection1.Connected=true then if CloseDatabase=false then begin SetMeineAnwendungDSN:=false; Exit; end; ADOConnection1.ConnectionString:=DSN; end; {$R *.dfm} end. |
Re: Mit ADO Tabelle aus Access abfragen?
Du öffnest auch nur die Connection und aktivierst die Table nicht.
|
Re: Mit ADO Tabelle aus Access abfragen?
Kannst du mir erklären wie? Aber warum sind die Daten dann im unkompiliertem Zustand im dbgrid?
|
Re: Mit ADO Tabelle aus Access abfragen?
Weil du die AdoTable geöffnet hast.
Ergänze doch die Methode
Delphi-Quellcode:
function TDataModule2.OpenDatabase: Boolean;
begin OpenDatabase:=true; try ADOConnection1.Open; ADOTable1.Open; except OpenDatabase:=false; end; end; |
Re: Mit ADO Tabelle aus Access abfragen?
Ah ok danke jetzt klappt es. Nur jetzt habe ich noch zwei fragen. Ich möchte das die Buchstaben nach dem Alphabet geordnet werden. Wie soll ich da anfangen? Und das wichtigste. Ich möchte Buttons mit Buchstaben. A, B, C.... jeder Buchstabe ein eigener Button. Bis dahin kein Problem. Aber jetzt kommt es.
Es sollen nur die Datensätze ausgelesen werden die wenn man z.B auf den Button A klickt mit A anfangen? Wie bekomme ich das hin? |
Alle Zeitangaben in WEZ +1. Es ist jetzt 15:14 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-2025 by Thomas Breitkreuz