Entwickler-Ecke
Datenbanken - Keine Connection?
D. Annies - Mo 18.03.13 09:31
Titel: Keine Connection?
Hi, Delpher,
bei diesem Prg verwende ich Borland Delphi 2006. zur Laufzeit bekomme ich den Fehler:
[Microsoft][ODBC Visual FoxProDriver]file 'schuelertss.dbf does nor exist
obwohl es im Verzeichnis steht.
Code dazu:
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11:
| aktvz := getcurrentdir;
dn := extractfilename(opendialog1.filename); delete(dn, length(dn)-3, 4); showmessage(dn); DaMod1.ADOTbSchule.Connection := DaMod1.ADOConnection2; DaMod1.ADOTbSchule.Active := false; DaMod1.ADOTbSchule.TableName := dn; DaMod1.ADOtbschule.readonly := true; DaMod1.ADOTbSchule.active := true; showmessage(dn + ' ist geladen von '+getcurrentdir); chdir(home); |
Der ConnectionString ist:
Delphi-Quelltext
1: 2: 3: 4:
| DaMod1.ADOConnection2.ConnectionString := 'Provider=MSDASQL.1;Persist Security Info=False;User ID=an;'+ 'Data Source=schuelertss;'+ 'Initial Catalog='+aktvz; |
Wo liegt da der Fehler?
Danke für Ideen,
Detlef
Moderiert von
Martok: Delphi-Tags hinzugefügt
WasWeißDennIch - Mo 18.03.13 12:41
Bist Du sicher, dass GetCurrentDir (=aktuelles Arbeitsverzeichnis) stimmt? Oder meinst Du eher das Verzeichnis, in dem sich auch die Exe befindet? Das wäre ExtractFileDir(ParamStr(0)).
Delete - Mo 18.03.13 21:52
- Nachträglich durch die Entwickler-Ecke gelöscht -
Delete - Di 19.03.13 08:37
WasWeißDennIch hat folgendes geschrieben : |
Bist Du sicher, dass GetCurrentDir (=aktuelles Arbeitsverzeichnis) stimmt? Oder meinst Du eher das Verzeichnis, in dem sich auch die Exe befindet? Das wäre ExtractFileDir(ParamStr(0)). |
Da mußt du anders fragen: Bist du dir sicher, daß deine DB im aktuellen Arbeitsverzeichnis liegt? Schließlich ändert sich das aktuelle AV ständig, z.B. durch den Einsatz eines TSaveDialog oder TOpenDialaog. Wenn deine DB im selben Verzeichnis liegt wie deine EXE-Datei (bei ordnungsliebenden Programmierern ist das der Ordner BIN im Projektverzeichnis), dann verwende ExtractFilePath(ParamStr(0)).
D. Annies - Di 19.03.13 19:09
Hi, Frühlingsrolle,
leider meckert der Compiler, wenn ich in uses die unit dbf hinschreibe.
LG, Detlef
Delete - Di 19.03.13 19:43
Laut deinen eigenen Angaben lautet die Fehlermeldung:
file 'schuelertss.dbf does not exist
An diese Fehlermeldung mußt du dich auch halten, wenn du dein Problem lösen möchtst. Sie besagt nämlich, das die angegebene Datei an der angegebenen Stelle nicht existiert.
Da liegt der Fehler!
Oben gibst du ein umständliches und unvollständiges Code-Beispiel:
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11:
| aktvz := getcurrentdir; dn := extractfilename(opendialog1.filename); delete(dn, length(dn)-3, 4); showmessage(dn); DaMod1.ADOTbSchule.Connection := DaMod1.ADOConnection2; DaMod1.ADOTbSchule.Active := false; DaMod1.ADOTbSchule.TableName := dn; DaMod1.ADOtbschule.readonly := true; DaMod1.ADOTbSchule.active := true; showmessage(dn + ' ist geladen von '+getcurrentdir); chdir(home); |
Aus welchem Grund übergibst du an DaMod1.ADOTbSchule.TableName nicht einfach den vollständigen Dateinamen?
Delphi-Quelltext
1: 2: 3:
| if not OpenDialog1.Execute then exit; dn := OpenDialog1.Filename; DaMod1.ADOTbSchule.TableName := dn; |
Wenn du später Teile des Dateinamenes zur User-Benachrichtigung benötigst, kannst du diese Teile noch immer extrahieren:
Delphi-Quelltext
1:
| ShowMessage(ExtractFileName(dn) + ' ist geladen von ' + ExtractFilePath(dn)); |
Delete - Di 19.03.13 20:19
- Nachträglich durch die Entwickler-Ecke gelöscht -
D. Annies - Mi 20.03.13 16:00
@ Perlsau: Ich hatte wirklich geglaubt, dass ich nur einen "verstümmelten" Dateinamen übergeben darf.
Jetzt ist das Problem eigentlich fast gelöst. Ich melde mich heute abend noch einmal.
LG, Detlef
Delete - Mi 20.03.13 22:52
D. Annies hat folgendes geschrieben : |
@ Perlsau: Ich hatte wirklich geglaubt, dass ich nur einen "verstümmelten" Dateinamen übergeben darf.
Jetzt ist das Problem eigentlich fast gelöst. Ich melde mich heute abend noch einmal. |
Woher auch soll Delphi den Pfad zu einer Datei kennen, wenn du ihn vor der Zuweisung herausschneidest?
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2025 by Christian Stelzmann Alle Rechte vorbehalten.
Alle Beiträge stammen von dritten Personen und dürfen geltendes Recht nicht verletzen.
Entwickler-Ecke und die zugehörigen Webseiten distanzieren sich ausdrücklich von Fremdinhalten jeglicher Art!