![]() |
Datenbank: dBase • Zugriff über: TSQL
Keine Verbindung zu dBase über Netzwerk
Liste der Anhänge anzeigen (Anzahl: 3)
Ich habe das Problem, dass, falls über das Netzwerk auf eine entsprechende dBase-Datei zugegriffen werden muss, keine Verbindung aufgebaut werden kann und das Programm dementsprechend mit lauter Fehlermeldungen den Start verweigert. Das ist ein riesiges Problem, weil dieser Fall sehr oft eintritt.
Gibt es eine entsprechende Einstellung für dBase-Datenbanken oder wie lässt sich dieses Problem lösen? Entsprechende Code-Stellen im Programm:
Delphi-Quellcode:
if DirectoryExists(path) then begin
Session.NetFileDir:=prgmpath+pdir; Session.PrivateDir:=prgmpath+pdir; end;
Delphi-Quellcode:
Beispiel für 'Einrichten' eines Querys:
if (neuer_pfad) OR (neues_schuljahr) then begin
for i := 1 to 33 do begin Application.ProcessMessages; TQuery(FindComponent('Query'+inttostr(i))).Close; TQuery(FindComponent('Query'+inttostr(i))).DatabaseName := path; //TQuery(FindComponent('Query'+inttostr(i))).Open; end;
Delphi-Quellcode:
Entsprechende Fehlermeldung im Anhang!
Query1.Close;
Query1.SQL.Text := 'SELECT * FROM "VT'+sj+'"'; Query1.SQL.Add('WHERE S NOT IN ("M","E","H") '+abteilung+SchPlKKA_Str+' AND DATUM=:today'); Query1.SQL.Add('ORDER BY '+order1); Query1.ParamByName('today').Value := today; Query1.Open; /edit: Anbei nochmal Objektinspektor/-hierarchie von Session1 und Query1! |
Re: Keine Verbindung zu dBase über Netzwerk
Hallo,
Delphi-Quellcode:
Also path ist ja wohl der Netzwerk-Pfad, also z.B. F:\Data.
if DirectoryExists(path) then begin
Session.NetFileDir:=prgmpath+pdir; Session.PrivateDir:=prgmpath+pdir; end; prgmpath und pdir Programmpfad (c:\programme) und der Pfad des Programms selbst. Das PrivateDir ins Programmeverzeichnis zu legen ist schlecht, dort gibt es meistens kein Schreibrecht. NetFileDir wird nur unter Paradox benutzt. Ich würde trotzdem beide aufs Temp-Verzeichnis des Users setzen. Ansonsten sehe ich hier nichts besonders "schlimmes". ausser vielleicht die Verwendung von "". Beim Tabellen-Namen ist es eigentlich nicht notwendig. Statt ("M","E","H") sollte QuotedStr oder Parameter verwendet werden. Ich würde einfach mal ein kleines Testprogramm schreiben, das ein simples Select * macht ohne irgendein where . Deine Fehlermeldung besagt übrigens, dass eine Query nicht geöffnet ist, prüfst du denn auch vor dem Zugriff, ob die Query geöffnet werden konnte ? Heiko |
Re: Keine Verbindung zu dBase über Netzwerk
Hallo
Hast du es schon mit Try..except..end versucht ? |
Re: Keine Verbindung zu dBase über Netzwerk
Hallo
...und noch etwas ist mir aufgefallen... Es wäre besser Pfade sicherer zu "verbinden" anstelle
Delphi-Quellcode:
würde ich besser empfehlen
...:=prgmpath+pdir;
Delphi-Quellcode:
...:=IncludeTrailingBackslash(prgmpath)+pdir;
|
Re: Keine Verbindung zu dBase über Netzwerk
Wie ich nun erfahren habe, tritt das Problem auf bei einem Anwender lokal auf. Das Problem ist nur ganz einfach, dass ich es nicht nachvollziehen bzw. reproduzieren kann.
@ peschei: Hastn Beispiel für try..except? |
Re: Keine Verbindung zu dBase über Netzwerk
Hallo,
Delphi-Quellcode:
try
Query1.Open; except on E: Exception do ShowMessage('Query1.Open, Fehler '+E.message); end; BTW: Warum DBase ? Heiko |
Re: Keine Verbindung zu dBase über Netzwerk
Da das Problem nur auf einem PC aufzutreten scheint:
Schau Dir die Konfiguration der IDAPI.CFG (oder wie heißt das Dingens heute?) auf den Rechnern an, wo die Abfrage funktioniert und vergleiche sie mit der, wo es nicht funktioniert. |
Re: Keine Verbindung zu dBase über Netzwerk
Halölo,
idapi32.cfg heisst die :=) Heiko |
Re: Keine Verbindung zu dBase über Netzwerk
Danke, so bleibt Opa ein wenig auf dem Laufenden. :thumb:
|
Re: Keine Verbindung zu dBase über Netzwerk
Liste der Anhänge anzeigen (Anzahl: 1)
Wie ich gerade sehe: Ich habe mich oben verschrieben und es sollte heißen, dass das Problem nun auch bei einem Anwender auftritt, der das Programm nur lokal verwendet. Es ist leider so, dass dieser Fehler anscheinend öfters auftritt. Vlt. könntet ihr mal testen, ob bei euch der Query-Fehler beim Start auch direkt auftritt.
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 08:42 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