AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Datenbanken Delphi Mit ADO Tabelle aus Access abfragen?
Thema durchsuchen
Ansicht
Themen-Optionen

Mit ADO Tabelle aus Access abfragen?

Ein Thema von Jack23 · begonnen am 25. Sep 2007 · letzter Beitrag vom 26. Sep 2007
Antwort Antwort
Seite 2 von 2     12   
Jack23

Registriert seit: 20. Sep 2007
215 Beiträge
 
#11

Re: Mit ADO Tabelle aus Access abfragen?

  Alt 25. Sep 2007, 21:01
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.
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.861 Beiträge
 
Delphi 11 Alexandria
 
#12

Re: Mit ADO Tabelle aus Access abfragen?

  Alt 25. Sep 2007, 21:09
Stelle dein Projekt mal hier ein
Markus Kinzler
  Mit Zitat antworten Zitat
Jack23

Registriert seit: 20. Sep 2007
215 Beiträge
 
#13

Re: Mit ADO Tabelle aus Access abfragen?

  Alt 25. Sep 2007, 21:14
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.
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.861 Beiträge
 
Delphi 11 Alexandria
 
#14

Re: Mit ADO Tabelle aus Access abfragen?

  Alt 25. Sep 2007, 22:08
Du öffnest auch nur die Connection und aktivierst die Table nicht.
Markus Kinzler
  Mit Zitat antworten Zitat
Jack23

Registriert seit: 20. Sep 2007
215 Beiträge
 
#15

Re: Mit ADO Tabelle aus Access abfragen?

  Alt 25. Sep 2007, 22:41
Kannst du mir erklären wie? Aber warum sind die Daten dann im unkompiliertem Zustand im dbgrid?
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.861 Beiträge
 
Delphi 11 Alexandria
 
#16

Re: Mit ADO Tabelle aus Access abfragen?

  Alt 25. Sep 2007, 22:46
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;
Markus Kinzler
  Mit Zitat antworten Zitat
Jack23

Registriert seit: 20. Sep 2007
215 Beiträge
 
#17

Re: Mit ADO Tabelle aus Access abfragen?

  Alt 26. Sep 2007, 13:57
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?
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 2 von 2     12   


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 16:37 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