![]() |
Datenbank: Access • Version: 2003 • Zugriff über: ADO
Zugriffsverletzung beim ini laden
Hallo
ich habe folgendes Problem bei meinem Progamm soll der Pfad der Datenbank aus einer Ini Datei gelesen werden. Beim ausführen bekomme ich aber die Meldung Zufriffsverletzung :?: mein Code sieht wie folgt aus
Delphi-Quellcode:
Die Adresse der Zugriffsverletzung ist 004B8716 im Modul
procedure TMainframe.FormCreate(Sender: TObject);
var ini: TIniFile; Dir : String; begin Mainframe.Entnahme.Hide; // schliessen des Entnahmeframes Mainframe.Lieferung.Hide; // schliessen des Lieferungsframes Mainframe.Dateneingabe.Hide; // schliessen des Dateneingabeframes Mainframe.Info.Hide; // schliessen des Infoframes // Laden des Datenbankpfads ini := TInifile.Create(ExtractFilePath(ParamStr(0))+'Konfiguration.ini'); try Dir := ini.ReadString('DB', 'Pfad', ''); Tabellen.Verbindung.ConnectionString := Dir; finally ini.Free; // öffnen aller Datenbankverbindungen begin if Fileexists (Dir) then begin Tabellen.Verbindung.Connected := True; Tabellen.Tab_Art.Active := True; Tabellen.TAB_Lieferant.Active := True; Tabellen.TAB_Ersatzteil.Active := True; Tabellen.TAB_Lagerbestand.Active:= True; Tabellen.TAB_Lieferung.Active := True; end else begin Showmessage('INI Datei oder Datenbank nicht gefunden') end; end; end; end; Weiß jemand Rat? MCOP2001DE :gruebel: |
Re: Zugriffsverletzung beim ini laden
Hallo MCOP2001DE,
setzt mal einen Breakpoint und versuch herauszufinden, in welcher Zeile der Fehler auftritt. Gruss Thorsten |
Re: Zugriffsverletzung beim ini laden
Hallo,
falls es tatsächlich die Ini ist, benutze statt TIniFile TMemIniFile. Heiko |
Re: Zugriffsverletzung beim ini laden
Hallo Omata
Danke für die schnelle Antwort. Die Meldung tritt in der Zeile Tabellen.Verbindung.Connectionstring := Dir; auf. Ich habe genau den selben Code in anderen Anwendungen eingestetzt und da geht es :gruebel: Mcop2001de |
Re: Zugriffsverletzung beim ini laden
Hallo Hoika
Das funktioniert auch nicht. Ich erhalte die Fehlermeldung MemIniFiles.dcu nicht gefunden. MCop2001de |
Re: Zugriffsverletzung beim ini laden
Zitat:
Entweder ist das Verzeichnis falsch, oder mit Tabellen / Tabellen.Verbindung stimmt was nicht. |
Re: Zugriffsverletzung beim ini laden
Hallo,
das kommt mir spanisch vor - ein ADO ConnectionString für MS Access sieht etwa so aus:
Code:
Was steht denn in der Variable Dir?
'Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\somepath\myDb.mdb'
Grüße vom marabu |
Re: Zugriffsverletzung beim ini laden
Hallo
Die Ini sieht dan so aus wenn er es macht [DB] Pfad=D:\Mirko.M-COMPUTERTECHN\Eigene Dateien\Projekt\Ersatzteilverwaltung v1.0\Daten\Data.mdb Er erstellt mir aber keine Ini Datei. Den selben fehler bekomme ich auch wenn ich den ADOConnetion in ein eigens Datenmodul packe und ihm einen festen Pfad zuweise Mcop2001de |
Re: Zugriffsverletzung beim ini laden
Du musst den Pfad in Quotes einfassen, wenn er Leerzeichen enthält:
Code:
Freundliche Grüße
Pfad="D:\Mirko.M-COMPUTERTECHN\Eigene Dateien\Projekt\Ersatzteilverwaltung v1.0\Daten\Data.mdb"
|
Re: Zugriffsverletzung beim ini laden
Der Pfad soll aber nicht fest im Programm gespeichert werden.
In einen anderen Programm funtioniert das ja auch so wie es soll. beide Quelltexte sind identisch und trotzdem funktioniert das nicht. |
Re: Zugriffsverletzung beim ini laden
Niemand hat vor den Pfad fest im Programm zu speichern.
Delphi-Quellcode:
var
fn: TFileName; try fn := ini.ReadString('DB', 'Pfad', ''); Tabellen.Verbindung.ConnectionString := 'Provider=Microsoft.Jet.OLEDB.4.0;Data Source=' + fn; finally ini.Free; end; |
Re: Zugriffsverletzung beim ini laden
Ja Aber die Informationen hat der ADOconnation ja schon in dem Feld Provider.
mit dem Wert Microsoft.Jet.OLEDB.4.0 in dem Feld. Das müsst doch reichen oder? MCop2001de |
Re: Zugriffsverletzung beim ini laden
Achso noch etwas er erstellt auch die ini Datei nicht so wie er soll
|
Re: Zugriffsverletzung beim ini laden
Bin leider kein Hellseher und kann nicht sehen, welche Eigenschaften außer ConnectionString du bereits auf andere Weise gesetzt hast. Üblicherweise konfiguriert man alle Parameter über den ConnectionString.
Und vom Erstellen einer INI-Datei war bisher nicht die Rede - oder? Freundliche Grüße |
Re: Zugriffsverletzung beim ini laden
Delphi-Quellcode:
if Assigned(Tabellen) and Assigned(Tabellen.Verbindung) then
Tabellen.Verbindung.ConnectionString := Dir; |
Re: Zugriffsverletzung beim ini laden
Der Thread ist zwar schon ein bisschen älter, aber eine Lösung denke ich, könnte dennoch geposted werden.
Als ich das Problem hatte, konnte es wie folgt gelöst werden: In den "Projektoptionen -> Formulare" einfach die "Tabellen" über das Hauptformular schieben. Das DatenFormular mit der Connection wurde zum Zeitpunkt von OnCreate des Hauptformulares nämlich noch nicht erstellt, und somit kann noch nicht auf das Objekt zugegriffen werden. Ich hoffe, dass das jetzt noch irgend jemandem hilft :) mfG, Christian |
Alle Zeitangaben in WEZ +1. Es ist jetzt 12:10 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