Autor Beitrag
D. Annies
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 1843

windows 7
D6 Enterprise, D7 Pers und TD 2006
BeitragVerfasst: Mo 18.03.13 09:31 
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:

ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
      aktvz := getcurrentdir;

      dn := extractfilename(opendialog1.filename);
      delete(dn, length(dn)-34);   showmessage(dn);
      DaMod1.ADOTbSchule.Connection := DaMod1.ADOConnection2;  //schuelertss
      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:

ausblenden 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 user profile iconMartok: Delphi-Tags hinzugefügt

_________________
ut vires desint, tamen est laudanda voluntas
WasWeißDennIch
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 653
Erhaltene Danke: 160



BeitragVerfasst: 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)).
Frühlingsrolle
Ehemaliges Mitglied
Erhaltene Danke: 1



BeitragVerfasst: Mo 18.03.13 21:52 
- Nachträglich durch die Entwickler-Ecke gelöscht -

Für diesen Beitrag haben gedankt: D. Annies
Perlsau
Ehemaliges Mitglied
Erhaltene Danke: 1



BeitragVerfasst: Di 19.03.13 08:37 
user profile iconWasWeißDennIch hat folgendes geschrieben Zum zitierten Posting springen:
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 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 1843

windows 7
D6 Enterprise, D7 Pers und TD 2006
BeitragVerfasst: Di 19.03.13 19:09 
Hi, Frühlingsrolle,

leider meckert der Compiler, wenn ich in uses die unit dbf hinschreibe.

LG, Detlef

_________________
ut vires desint, tamen est laudanda voluntas
Perlsau
Ehemaliges Mitglied
Erhaltene Danke: 1



BeitragVerfasst: 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:
ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
      aktvz := getcurrentdir; // welcher Ordnerpfad befindet sich in aktvz?

      dn := extractfilename(opendialog1.filename); // wieso hier den Dateinamen extrahieren?
      delete(dn, length(dn)-34);   showmessage(dn); // wieso hier die Datei-Endung entfernen?
      DaMod1.ADOTbSchule.Connection := DaMod1.ADOConnection2;  //schuelertss
      DaMod1.ADOTbSchule.Active := false;
        DaMod1.ADOTbSchule.TableName := dn;  // wieso hier den "verstümmelten" Dateinamen übergeben?
        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?
ausblenden 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:
ausblenden Delphi-Quelltext
1:
     ShowMessage(ExtractFileName(dn) + ' ist geladen von ' + ExtractFilePath(dn));					


Zuletzt bearbeitet von Perlsau am Di 19.03.13 23:15, insgesamt 2-mal bearbeitet

Für diesen Beitrag haben gedankt: D. Annies
Frühlingsrolle
Ehemaliges Mitglied
Erhaltene Danke: 1



BeitragVerfasst: Di 19.03.13 20:19 
- Nachträglich durch die Entwickler-Ecke gelöscht -

Für diesen Beitrag haben gedankt: D. Annies
D. Annies Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 1843

windows 7
D6 Enterprise, D7 Pers und TD 2006
BeitragVerfasst: 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

_________________
ut vires desint, tamen est laudanda voluntas
Perlsau
Ehemaliges Mitglied
Erhaltene Danke: 1



BeitragVerfasst: Mi 20.03.13 22:52 
user profile iconD. Annies hat folgendes geschrieben Zum zitierten Posting springen:
@ 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?

Für diesen Beitrag haben gedankt: D. Annies