Announcement

Collapse
No announcement yet.

Paradox-Fehlermeldung "Kein Zugriff auf das Verzeichnis"

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • Paradox-Fehlermeldung "Kein Zugriff auf das Verzeichnis"

    Hallo Leute,

    habe folgendes Problem. Auf einem Netzlaufwerk liegen verschiedene Paradox-Dateien (*.db). Ein Programm greift auf diese Tabellen mittels einer TQuery-Komponente zu.

    Ich selbst habe in diesem Verzeichnis Schreibrechte und das Programm funktioniert einwandfrei.

    Jedoch klappt dies bei einem Kollegen, der für dieses Verzeichnis nur Leserechte besitzt, nicht. Das Programm versucht wahrscheinlich, lck-Dateien in dieses Verzeichnis zu schreiben.

    Ebenso ist es nicht möglich, diese Paradox-Datei bei dem Kollegen mit Paradox zu öffnen. Es erscheint dann folgende Fehlermeldung:
    <PRE>
    "Öffnen der Tabelle nicht möglich
    Kein Zugriff auf dieses Verzeichnis
    Datei: L:\PDOXUSRS.LCK"
    </PRE>

    Ich hoffe, jemand kann mir bei dem Problem mit ein wenig Sourcecode helfen. Mit den entsprechenden Sucheinträgen hier im Forum unter Sperrungsdatei und lck-Dateien konnte ich diesbezüglich nicht so viel anfangen.

    Das Verzeichnis selbst ist im Explorer sichtbar und ich kann die Datei problemlos in ein anderes Verzeichnis kopieren.

  • #2
    hi

    die meldung L:\PDOXUSRS.LCK"
    kenne ich. wird von bde erzeugt wenn zwei gleichzeitig auf eine datenbank zugreifen. wenn due die L:\PDOXUSRS.LCK"
    löschentust geht alles wieder perfekt. auf die datenbank kann nur einer zugreifen und ändern. es gibt aber einen weg glaube ich das zu umgehen. habe hier auch glaube ich schonmal was gelesen programm bzw *.db im netzwerk verbinden. also was da immer einen in die pfanne haut ist die bde.

    hoffe es hilft weiter

    ciao

    thoma

    Comment


    • #3
      Hallo!<br>
      Das Problem ist die Konfigurationseinstellung in der BDE. Dort gibt es unter Konfiguration Treiber Native Paradox rechts den Eintrag "Net Dir" dieser Eintrag muß ein Netzwerkverzeichnis sein, das von beiden Rechnern sichtbar und mit schreib-lese-rechten versehen ist.<br>
      Dieser Eintrag muß auf beiden Rechnern identisch sein.<br>
      <br>
      Wenn man diese Einstellung einmal für alle anpasst ist es wahrscheinlich notwendig alle *.LCK und *.NET Dateien in allen Unterverzeichnissen des Projektes zu löschen.<br>
      BYE BERN

      Comment


      • #4
        Ganz so einfach ist es nicht, Leute.
        Ich habe mir jetzt hier von unserer EDV mal ein Verzeichnis einrichten lassen, wo nur ich Leserechte habe. In diesem Verzeichnis (es liegt übrigens auf einem Novell-Server) liegt eine Paradox-Tabelle.

        Auf meinem Windows-NT-Rechner kann ich die Tabelle über Paradox nicht öffnen. Es kommt die Fehlermeldung wie in meinem 1. Posting beschrieben.

        Ebensowenig kann ich mit Hilfe eines kleinen Delphi-Programms auf diese Tabelle mittels einer Query zugreifen. Es erscheint lediglich
        <PRE>
        "Kein Zugriff auf dieses Verzeichnis
        Datei: L:\PDOXUSRS.LCK"
        </PRE>
        Das Verzeichnis "L:\" ist übrigens das Verzeichnis, wo für mich nur Leserechte auf dem Novell-Server eingerichtet sind.

        Hinweis:
        Ich könnte schlimmstenfalls die Datei nach "C:\" kopieren und dann eine Query auf diese Kopie durchführen. Aber es wäre schön, wenn es einfacher gehen würde.

        Grüsse,
        Carste

        Comment


        • #5
          Noch ein Nachtrag zu Thomas (Posting 1):
          Meiner Vermutung nach, versucht die BDE, schon bei Öffnen einer Query bzw. Tabelle, eine Lock-Datei in dem entsprechenden Verzeichnis anzulegen. Das müßte man irgendwie umgehen.

          @ Bernd (Posting 2):
          Bei Net Dir ist ein Eintrag vorhanden. Da ich das Problem ja jetzt auf einem Rechner reduziert habe, dürfte der Eintrag ja erst einmal keine Rolle spielen, oder?
          Nichtsdestotrotz er verweist auf ein Laufwerk, wo ich Schreib- und Leserechte für habe. Dies konnte ich mittels des Explorers testen.

          Grüsse,
          Carste

          Comment


          • #6
            Schaue mal in der Hilfe nach PrivateDir. Ich erinnere mich nicht genau, aber da konnte man glaube ich, den Ablageort der Dateien steuern, die zum Arbeiten angelegt werden.<p>
            Schöne Grüße, Mario Noac
            Schöne Grüße, Mario

            Comment


            • #7
              Hallo!<br>
              Paradox (also hier die BDE) legt in jedem Verzeichnis, in dem auf Tabellen zugegriffen wird automatisch eine LCK Datei an. Also mußt Du Dir auch Schreibrechte gönnen.<br>
              Aber: Es scheint da dann doch einen Trick zu geben, da ja einige Datenbanken auf CD ausgeliefert werden<br>
              http://www.paedagogische-medien.de/faq.htm#MultipleNetFiles<br>
              Wenn ich das richtig lese muß einmal eine LCK Datei erzeugt werden und dann kann nach Umstellung des LocalShare=true auf diese readonly Datenbank zugegriffen werden.<br>
              Viel Spaß beim ausprobieren.<br>
              BYE BERND<br>
              PS: Wenns klappt bitte ein kurzes Posting wie man das hinbekommt. (Für den nächsten

              Comment


              • #8
                @ Mario Posting 5:
                'PrivateDir' scheint die Stelle zu sein, wo temporäre Dateien (z.B. im Zusammenhang mit SQL-Abfragen) gespeichert werden sollen.
                In Paradox 9 ist der Menüpunkt zu finden unter:
                "Extras\Einstellungen...\Einstellungen...\Datenban k\". Dort kann nun unter Privatverzeichnis (:PRIVAT das gewünschte Verzeichnis eingestellt werden.
                Bei mir verweist dieser Eintrag auf ein lokales "C:\"-Verzeichnis.

                @ Bernd Posting 6:
                So wie ich den Artikel richtig verstanden habe, sollte auf sämtlichen Laufwerken die "PDOXUSRS"-Dateien (*.lck und *.net) gelöscht werden. Anschließend sollte in der BDE "LOCAL SHARE = TRUE" gesetzt werden.
                Nach Neustart des BDE-Programms sollte man lesend auf die Tabelle zugreifen können.

                Da ich bei mir am Platz nicht alle "PDOXUSRS"-Dateien löschen konnte (andere Benutzer waren anscheinend in BDE-Anwendungen drin), habe ich in der Registry das "Idapi.cfg"-File auf ein bei mir lokales "C:\"-Verzeichnis gesetzt.
                Ebenso habe ich das "NET DIR"-Verzeichnis auf ein anderes lokales "C:\"-Verzeichnis gesetzt.
                Resultat war, daß ich noch immer keinen Zugriff hatte auf die Paradox-Tabelle im Netzlaufwerk, wo ich nur Leserechte für habe.

                Wenn es natürlich so sein sollte, wie Du sagst, daß in diesem Verzeichnis bereits eine "lck-Datei" liegen muß, so müßte ich mal mit meinem DBA reden, ob er es dort anlegen kann. Ich gebe noch mal Bescheid, wenn sich Neuigkeiten ergeben.

                Grüsse,
                Carste

                Comment


                • #9
                  So, das Problem ist nun erst einmal gelöst. Mit Hilfe des folgenden Programmcodes wird eine lck-Datei in einem entsprechenden Verzeichnis angelegt.

                  Dazu bitte folgende Komponenten auf das Formular ziehen: TButton, TEdit und TDataBase.

                  <PRE>
                  uses FileCtrl, BDE
                  ...
                  public
                  function ChkPath: Boolean

                  function TForm1.ChkPath: Boolean;
                  var s: array[0..100] of char;
                  begin
                  IF DirectoryExists(EdDirectory.Text) THEN BEGIN
                  DataBase1.DatabaseName:= 'TempDB';
                  DataBase1.DriverName:= 'Standard';
                  DataBase1.LoginPrompt:= False;
                  DataBase1.Connected:= False;

                  DataBase1.Params.Add('Path=' + EdDirectory.Text);
                  DataBase1.Connected:= True;
                  END ELSE BEGIN
                  StrPCopy(s, 'Directory: ' + EdDirectory.Text + ' does not exist');
                  Application.MessageBox(s, 'Error!', MB_ICONSTOP);
                  Result:= False;
                  END;
                  end;

                  Procedure TForm1.btLckClick(Sender: TObject);
                  begin
                  IF ChkPath THEN BEGIN
                  Check(DbiAcqPersistTableLock(Database1.Handle, 'PARADOX.DRO', 'PARADOX'));
                  END;
                  showmessage('Die lck-Dateien wurden angelegt.');
                  end;
                  </PRE>

                  Die lck-Dateien werden nun nach Klick auf den Button in das gewünschte Verzeichnis angelegt. Dies muß natürlich jemand machen, der auch Schreibrechte für das entsprechende Laufwerk besitzt.

                  Nun kann jeder, der nur Leserechte hat, sich die entsprechende Tabelle über Paradox oder aber über ein Delphi-Programm mit einer Query auf diese Tabelle zugreifen und sich die Daten anzeigen lassen.

                  Grüsse,
                  Carste

                  Comment

                  Working...
                  X