![]() |
DB-Anbindung ohne VCL...?
Hallo,
ich muss noch einmal mit diesem Thema nerven. :( wie ich eine DB-Anbindung ohne die Komponenteneinrichtunge hin bekomme ist mir ja klar und auch gelungen... was ich nicht hinbekomme ist diese auch aus anderen Forms aufzurufen und zu nutzen. das ist was ich bisher mache:
Delphi-Quellcode:
Dabei ist dataDir eine Variabel mit dem aktuellen Pfad des Programms, der aus einer prozedur kommt. Der Code steht in meinem TForm1.FormShow.
dbName := dataDir+'\p2vvw.mdb';
DataSource:= // Link zur DB setzen 'Provider=Microsoft.Jet.OLEDB.4.0' + ';Data Source=' + dbName + ';Persist Security Info=False'; ADOConnection1.ConnectionString := DataSource; ADOConnection1.LoginPrompt := False; // Kein Loginfenster ADOCommand1.Connection := ADOConnection1; // Connect zur DB hersellen Nun möchte ich aus meiner Form3 daten aus meiner DB holen. das klappt aber nicht, weil ich wahrscheinlich erst noch die ADOConnection öffnen muss oder? wenn ja, dann muss ich das bitte wie machen? sage ich nämlich Form1.ADOConnection.Open, dann will mein Prog den Benutzernamen und das PW haben (welches nicht existiert und auch beim ersten mal nicht benötigt wird). wo ist mein fehler??? Thx. P.S.: ich hoffe meine Kommentare im Code sind richtig? |
Re: DB-Anbindung ohne VCL...?
also TForm.Formshow wird immer aufgerufen wenn wenn du z.B. Form1.show sagst, das heisst wenn du form1 am anfang auf visible = false setzt dann wird deine verbindung garnicht erst geöffnet.
(ganz zu schweigen was passiert wenn du zweimal hintereinander Form.show machst) besser währe hier Form.OnCreate das wird einmal zum Programmstart aufgerufen und somit ist die DB gleich am Anfang geöffnet. |
Re: DB-Anbindung ohne VCL...?
... :gruebel: ...
ich habe es ins FormShow gepackt, weil ich dort eine Procedur aufrufe. diese wiederum ermittelt mir den Pfad... wenn ich nun meinen restlichen code (siehe oben) ins Create packe, dann komme ich an den wert der variablen nicht mehr ran. wie kann ich mir den Inhalt der variablen erhalten? |
Re: DB-Anbindung ohne VCL...?
und die funktion zum hohlen des Pfades kannst du nicht am anfang aufrufen?
oder du überprüfst ob die DB schon geöffnet ist (vieleicht mit ner globalen Variable (true nach öffnen der DB), oder vieleicht es gibt eine Eigenschaft die dir sagt ob die Verbindung schon besteht) |
Re: DB-Anbindung ohne VCL...?
nein leider kann ich das nicht im create machen sondern muss es bereits im show machen.
zur erinnerung. ich bin ein newbie in delphi und würde mich über kurze codebeispiele freuen, dann kann ich mir auch vorstellen was du meinst... :wink: wenn ich eine globale variable deklariere, kann ich die dann von überall her abrufen oder nur nutzen ohne sie neu zu deklarieren... mein prob ist eben, dass ich den inhalt von einer variablen vom weg form1 zu form3 verliere... naja, und ich muss doch globale variablen doch nur unter var VOR dem implementation bringen oder? |
Re: DB-Anbindung ohne VCL...?
Zitat:
um zu verhindern das zweimal connected wurde kannst du ja abfragen ob connected = true ist
Delphi-Quellcode:
dann könntest du das auch in Form.Show ausführen
if Form1.ADOConnection1.Connected = false then
begin ... dbName := dataDir+'\p2vvw.mdb'; DataSource:= // Link zur DB setzen 'Provider=Microsoft.Jet.OLEDB.4.0' + ';Data Source=' + dbName + ';Persist Security Info=False'; ADOConnection1.ConnectionString := DataSource; ADOConnection1.LoginPrompt := False; // Kein Loginfenster ADOCommand1.Connection := ADOConnection1; // Connect zur DB hersellen ... end; hoffentlich versteh ich dein problem richtig. |
Re: DB-Anbindung ohne VCL...?
irgentwie gehen fie PM´s nicht mehr ausm Postausgangsordner(werden grad nich gesendet), oder es dauert extrem lange
deswegen poste ich mal die nachricht hier: eigentlich müsste es funktionieren aber, es könnte sein das die datenbak mit dem Createn nicht hinterher kommt. füge mal ein
Delphi-Quellcode:
vor form2.schowmodal ein oder
Application.ProcessMessages
Delphi-Quellcode:
(30 ms)(vieleicht auch mal höher einstellen z.B.100)
sleep(30)
|
Re: DB-Anbindung ohne VCL...?
bringt nichts. ich bekomme dann immer eine Fehlermeldung.
habe ich das richtig verstanden, dass erst ALLE creates und dann shows abgearbeitet werden? |
Re: DB-Anbindung ohne VCL...?
Hallo Der-C,
ich habe es lauffähig bekommen, wenn ich auch allen in Form3 ins ONSHOW mache. aber dann kann ich ja niemals in meinem Prog das OnCreate nutzen oder? ich muss also immer daruaf achten, dass ich alles ins OnShow packe? :gruebel: NACHTRAG: Habe mein Prob gelöst. mittels deiner info muss ich natürlich fast alles in OnShow bringen. ich habe lediglich die Pfadsuche, den Namen der DB und die und die Connection in meinem OnCreate. der rest läuft über das OnShow. Nun habe ich (zunächst einmal) keine Fehlermeldung mehr und es läuft rund. Danke für Deine Hilfe!!! JUNGs und MÄDELs ihr seid hier einfach :thumb: [Edit] der Nachtrag [/Edit] |
Alle Zeitangaben in WEZ +1. Es ist jetzt 02:00 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