![]() |
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 18:30 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