AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Datenbanken Delphi Flexibler Conectionstring
Thema durchsuchen
Ansicht
Themen-Optionen

Flexibler Conectionstring

Ein Thema von Fanta4 · begonnen am 20. Jan 2016 · letzter Beitrag vom 21. Jan 2016
Antwort Antwort
Fanta4

Registriert seit: 20. Jan 2016
3 Beiträge
 
#1

Flexibler Conectionstring

  Alt 20. Jan 2016, 18:23
Datenbank: X • Version: 8 • Zugriff über: X
Hallo Freunde,

Ich habe vor einr Datenbank zu erstellen.
Die Datenbank basiert auf Access.
Ich habe vor eine kleine Maske zu erstellen mit ein paar Edit Feldern die dann miteinander alle verknüpft sind.

Im voraus habe ich schon versucht einen flexiblen conectionstring zu erstellen nach "Flexible ADO-Connection zur Ansteuerung einer Access-Datenbank"(Google Delphi Treff) ich habe es nicht geschafft.

Kann mir jemand erklären wie ich es mache wenn das program fertig ist und auf einen anderen PC ohne delphi (da liegt auch die Datenbank)ist und ich das program öffne und ich manuell den conectionstring auswähle?

Vielen Dank
Fanta4 Stg.
  Mit Zitat antworten Zitat
Perlsau
(Gast)

n/a Beiträge
 
#2

AW: Flexibler Conectionstring

  Alt 20. Jan 2016, 18:33
Wenn du dir so einen automatisch erzeugten ConnectionString einmal genauer anschaust, wirst du feststellen, daß sich ein Teil des Strings darum dreht, wo die Datenbank ist und wie der Dateiname heißt. Diesen Teil muß du flexibel machen. Das heißt: Du speicherst in deinem Programm den Teil davor und den Teil dahinter in Konstanten ab, und setzt dann den letztendlichen ConnectionString aus den beiden Konstanten, getrennt durch den aktuellen Datenbank-Pfad- und -Dateiname, wieder zusammen. Wo ist hier das Problem bzw. was bedeutet konkret: "Ich habe es nicht geschafft."?

Die Connection-Komponente (z.B. die von dbGo) macht das auch nicht anders: Du wählst die Datenbank aus und das Ergebnis wird dann in den Connectionstring übernommen.
  Mit Zitat antworten Zitat
Benutzerbild von Sir Rufo
Sir Rufo

Registriert seit: 5. Jan 2005
Ort: Stadthagen
9.454 Beiträge
 
Delphi 10 Seattle Enterprise
 
#3

AW: Flexibler Conectionstring

  Alt 20. Jan 2016, 18:37
Es gibt fertige Editoren für den ADO-Connection-String.

Schau mal da http://stackoverflow.com/questions/1...alog-component
Kaum macht man's richtig - schon funktioniert's
Zertifikat: Sir Rufo (Fingerprint: ‎ea 0a 4c 14 0d b6 3a a4 c1 c5 b9 dc 90 9d f0 e9 de 13 da 60)
  Mit Zitat antworten Zitat
Fanta4

Registriert seit: 20. Jan 2016
3 Beiträge
 
#4

AW: Flexibler Conectionstring

  Alt 20. Jan 2016, 19:12
Danke ich werde eure antworten mal versuchen umzusetzen
  Mit Zitat antworten Zitat
Fanta4

Registriert seit: 20. Jan 2016
3 Beiträge
 
#5

AW: Flexibler Conectionstring

  Alt 21. Jan 2016, 19:03
Hi Sir Rufu,

ich habe mal deinen Link verfolgt und die Option 3 versucht
Delphi-Quellcode:
Uses
ADODB,
AdoConEd;

procedure TMainForm.Button2Click(Sender: TObject);
Var
ADOConnection1 : TADOConnection;
begin
   ADOConnection1:=TADOConnection.Create(Self);
   EditConnectionString(ADOConnection1);
end;
Klappt auch soweit. Nun die Frage wenn ich die Datenbank ausgewählt und übernehme geht das auch,,, geht es das sich nun das Programm den Connetionstring merkt?

Grüße Fanta4

Geändert von TBx (21. Jan 2016 um 20:23 Uhr) Grund: Delphi-Tags gesetzt, bitte zukünftig selbst machen.
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.624 Beiträge
 
Delphi 12 Athens
 
#6

AW: Flexibler Conectionstring

  Alt 21. Jan 2016, 19:10
Klar geht das, Du musst ihn nur irgendwie/irgendwo abspeichern, z.B. in der Registry.
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
Perlsau
(Gast)

n/a Beiträge
 
#7

AW: Flexibler Conectionstring

  Alt 21. Jan 2016, 20:17
Klappt auch soweit. Nun die Frage wenn ich die Datenbank ausgewählt und übernehme geht das auch, geht es das sich nun das Programm den Connetionstring merkt?
Du mußt dir ja nicht den ganzen Connectionstring merken, sondern nur den Teil, der den Dateinamen der Datenbank-Datei enthält. Wenn du einen Connectionstring das erste Mal erzeugst, indem du den entsprechenden Dialog der AdoConnection bedienst, sieht der möglicherweise so aus:

Code:
Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\MeineProgramme\MeinTestProgramm\BIN\MeineDatenbank.mdb;Persist Security Info=False;'
Nun merkst du dir in der Konstante Con1 den ersten und in Con2 den zweiten Teil:
Delphi-Quellcode:
Con1 = 'Provider=Microsoft.Jet.OLEDB.4.0;Data Source=';
Con2 = ';Persist Security Info=False;';
Wenn der Dateiname ebenfalls immer derselbe bleibt – also der reine Dateiname ohne Pfadangaben, dann merkst du dir den auch noch:
Delphi-Quellcode:
DBDatei = 'MeineDatenbank.mdb';
IniDatei = 'C:\Temp\MeinTestProgramm.ini';
Nun erstellst du z.B. eine Textdatei MeinTestProgramm.ini, die den Pfad enthält, und speicherst sie z.B. in C:\Temp ab. Darin steht dann auf deinem Entwicklungsrechner z.B. einfach nur:

C:\MeineProgramme\MeinTestProgramm\BIN\

Beim Programmstart liest du diese Datei ein:
Delphi-Quellcode:
procedure TFormMain.FormCreate(Sender: TObject);
Var
  Liste : TStringList;
  Datei : String;
begin
  Liste := TStringList.Create;
  Try
    If FileExists(IniDatei) Then
    Begin
      Liste.LoadFromFile(IniDatei);
      If Liste.Count > 0 Then
      Begin
        Datei := Liste[0] + DBDatei;
        If Not FileExists(Datei) Then
        Begin
          ShowMessage('Die Datenbank "' + Datei + '" existiert nicht. Programm wird beendet.');
          Close;
        End Else
        Begin
          AdoCon.ConnectionString := Con1 + Datei + Con2;
          AdoCon.Connected := True;
        End;
      End Else // If Liste.Count > 0
      Begin
        ShowMessage('Keine Einträge in der Ini-Datei gefunden. Programm wird beendet.');
        Close;
      End;
    End Else // If FileExists(IniDatei)
    Begin
      ShowMessage('Die Inidatei "' + IniDatei + '" wurde nicht gefunden. Programm wird beendet.');
      Close;
    End;
  Finally
    Liste.Free;
  End;
end;
Überträgst du die Anwendung nun auf einen anderen PC, speicherst du die Datenbank irgendwo nach Belieben ab und trägst in die Ini-Datei, die du wiederum in C:\Temp platzierst, den entsprechenden Ordner ein. Willst du das Ganze noch etwas variabler gestalten, baust du noch einen Dialog ein, der dem Benutzer erlaubt, die Datenbank-Datei selber zu suchen, und speicherst das Resultat, also den gefundenen Ordner, wiederum in der Ini-Datei ab. Und selbstverständlich ist es ratsam, das Zusammenbauen des ConnectionStrings in eine Funktion auszulagern. Hab ich mir hier nur aus Bequemlichkeit gespart, ich wollte dir ja nur das Prinzip verdeutlichen.
  Mit Zitat antworten Zitat
Antwort Antwort


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 11: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