Announcement

Collapse
No announcement yet.

Fehlermeldung bei Zugriff auf Interbasedatenbank über Netzwerk

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

  • Fehlermeldung bei Zugriff auf Interbasedatenbank über Netzwerk

    Hallo,

    ich habe eine Datenbankanwendung mit Delphi, unter Verwendung von ADO und Interbase erstellt. Nun soll dieses Programm in einen Netzwerk laufen. Den Connectionstring gebe ich über eine UDL-Datei an. Die Verbindung darüber funktioniert auch. Wenn ich nun aber das Programm starte und mich über den User 'sysdba' einlogge, erhalte ich immer die Fehlermeldung:

    'Der verwendete Provider unterscheidet sich von dem angegebene Provider'.

    Dabei ist auf beiden Rechnern der gleiche OLE-DB Provider installiert.

    Kann mir jemand sagen, woran das liegt ?

    Danke und Gruß Elke

  • #2
    Hallo Elke,

    >'Der verwendete Provider unterscheidet sich von dem angegebene Provider'.

    diese Fehlermeldung ist mir noch nicht untergekommen. Was bedeutet "Die Verbindung darüber funktioniert auch"? Arbeitet das Programm trotz dieser Fehlermeldung dann normal weiter

    Comment


    • #3
      Hallo Andreas,

      mit "Die Verbindung darüber funktioniert" meine ich, wenn ich die Verbindung teste, ist der test erfolgreich.

      Nach dieser Fehlermeldung arbeitet das Programm nicht weiter.

      Vielleicht ist es erwähnenswert, dass ich auf einem Rechner zuerst InterBase 6, die Opensoucre installiert hatte und auf dem anderen den InterBase 6 Server, der bei Delphi 6 Enterprise dabei war (ich war eben der Annahme es wäre der gleiche). Jetzt habe ich auf beiden Rechnern den Opensource-Server installiert. Hat aber nichts gebracht.

      Gruß Elk

      Comment


      • #4
        Hallo,

        >Nach dieser Fehlermeldung arbeitet das Programm nicht weiter.

        Ich gehe davon aus, dass der <i>SIBProvider</i> als OLE DB Provider verwendet wird, oder greift das Programm über den <i>OLE DB Provider for ODBC Driver</i> auf die InterBase-Datenbank zu?

        Im Fall von <i>SIBProvider</i> würde ich diesen zuerst erneut installieren/registrieren. Wenn das nichts hilft, was passiert, wenn anstelle der UDL-Datei der ConnectionString als Zeichenkette fest im Programm abgelegt wird? Wie sieht der ConnectionString aus

        Comment


        • #5
          Hallo Andreas,

          den IBProvider hatte ich schon neu installiert, hat aber auch nichts gebracht.

          Wenn ich den ConnectionString als Zeichenkette festzulegekommt zwar keine Fehlermldung, aber leider kommt das nicht in Frage, da der Datenbankpfad ja nicht immer der gleiche ist. Das Programm wird in verschiedenen Ingenieurbüros verwendet.

          Der Connectionsting sieht etwa so aus:

          ConnectionString := 'Filename = .\Stuko.udl'
          Properties['password'].Value := spwd;
          Properties['user name'].Value := suser;
          Properties['role'].Value := role;

          Was ich wohl jetzt noch versuchen könnte, ist den Provider auch explizit zuzuweisen.

          Gruß Elk

          Comment


          • #6
            Hallo Andreas,

            Das Problem war folgendes:

            ich musste mich zwei mal auf der Datenbank einloggen. Einmal mit SYSDBA um die User-spezifischen Daten erst einaml auszulesen und dann noch einmal mit dem eigenen User-Name wegen der Benutzerrechte im Programm. Von dem ersten einloggen bekommt der Anwender nichts mit. Da beides aber über die gleiche ADOConnection-Instanz lief haben sich die beiden Verbindungen scheinbar behindert. Solange ich an den Eigenschaften nichts geändert hatte gabs auch keine Probleme. Nur wenn ich dann versuchte mittels Properties den neuen User und das Passwort zuzuweisen, kam diese Fehlermeldung.

            Ich habe es jetzt so gelöst:

            über die Properties habe ich alle notwendigen Daten aus der ersten Verbindung ausgelesen und für die zweite Verbindung den ConnectionString mit diesen Daten und den User-Angaben neu aufgebaut. Nun funktioniert wieder alles.

            Also Danke für Deine Hilfe

            Grüße Elk

            Comment


            • #7
              Hallo,

              &gt;ConnectionString := 'Filename = .\Stuko.udl' Properties['password'].Value := spwd; Properties['user name'].Value := suser; Properties['role'].Value := role;

              das geht so nicht - der Connectionstring darf in diesem Fall nur die Zeichenfolge <i>'Filename = .\Stuko.udl'</i> enthalten! Die anderen Properties dürfen <b>nicht</b> im ConnectionString gesetzt werden, sondern erst im Sourcecode:
              <pre>
              ...
              with ADOConnection1 do
              begin
              Properties['password'].Value := spwd;
              Properties['user name'].Value := suser;
              Properties['role'].Value := role;
              Connected := True;
              end;
              </pre&gt

              Comment


              • #8
                Hallo Andreas,

                ich hatte nur das eine Semikolon hinter dem ConnectionString vergessen. Aber wie ich ja feststellen musste geht das sowieso nicht, dem Connectionsting die UDL zuzuweisen und dann einzelne Properties wieder zu ändern.

                Gruß Elk

                Comment

                Working...
                X