Announcement

Collapse
No announcement yet.

Zugriff von TIBDataset (DLL) auf TIBDatabase (EXE)

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

  • Zugriff von TIBDataset (DLL) auf TIBDatabase (EXE)

    Hallo.

    Ich habe ein kleines Problem, an dem ich leider schon etliche Tage herumarbeite und ich komm leider nicht drauf

    Ich habe ein TIBDatabase in einer EXE und möchte mit mehreren TIBDataset, die sich in einer dynamisch aufgerufenen DLL befinden, auf die Daten zugreifen. Die TIBDataset übergebe ich mittels Parameter. Das klappt auch wunderbar und ich kann auch Daten über mehrere TIBDataset bearbeiten (sind alle mit der gleichen TIBDatabase verbunden).

    Jetzt kommt's aber. Sobald die EXE beendet wird (die DLL wird vorher ordnungsgemäß entladen) erscheint eine Zugriffsverletztung. Wenn ich innerhalb der DLL nur eine TIBDataset verwende, klappts ohne Probleme. Woran kann das liegen? Ich hab's auch schon mit einer total abgespeckten Version (ohne TIBEvents, etc.) versucht - gleiches Ergebnis.

    Vielleicht fällt ja jemanden etwas dazu ein. Vielen Dank auf alle Fälle schon jetzt dafür.
    Liebe Grüße aus Wien.
    oerni

  • #2
    Hallo,

    >Wenn ich innerhalb der DLL nur eine TIBDataset verwende, klappts ohne Probleme.

    was passiert, wenn beim Beenden erst alle Verbindungen zwischen TIBDatabase, TIBTransaktion und TIBDataSet getrennt werden (entschprechende Eigenschaften auf Nil setzen)? Werden die TIBDataSet + TIBDatabase vom Programm vorher geschlossen oder müssen die Komponenten beim Beenden der EXE selbst aufräumen

    Comment


    • #3
      Na das macht Freude - so schnelle Antworten ;-)

      Habe ich auch schon probiert, funktioniert leider auch nicht. Die TIBDataSet werden natürlich geschlossen. Die TIBDatabase schließe ich erst beim Beenden der EXE, das kann auch viel später als das Entladen der DLL sein. Trotzdem der gleiche Fehler.

      lg. oern

      Comment


      • #4
        Hallo

        >..funktioniert leider auch nicht...

        2. Versuch: Gleich zu Beginn die Prozedure <b>DisableMonitoring</b> (Unit <i>IBSQLMonitor</i>) aufrufen. <br>
        3. Versuch: <b>Randomize</b> in der DLL aufrufen.

        Mit welcher IBX-Version wird gearbeitet (dies hätte ich sofort abfragen sollen)? Je nach IBX-Version hilft eventuell der 2. und 3. Versuch

        Comment


        • #5
          Hello.

          Tja, leider brachte beides kein Ergebnis. Die Versionen hätte ich anführen müssen - sorry. Ich benutze Delphi 5 und IBX 5.03. Die Version 5.04 brachte überhaupt mehr Fehler (Zugriffsverletzung gleich beim Verlassen der DLL, vor dem Entladen) - mit dem gleichen Code. Ich bin daher auf 5.03 zurückgegangen.

          Wenn's anders nicht geht, muss ich halt die Formulare in die EXE packen oder eine zweite IBDatabase-Instanz erzeugen. Das wollte ich mir ersparen.

          Aber vielleicht gibt's ja noch eine Lösung ;-)
          lg. oern

          Comment


          • #6
            Ich benutze für jede DLL eine extra Database. Diese bekommt bei der Initialisierung den Handle der Database der Hauptanwendung übergeben.

            OH TIBDataBase --> SetHande

            Bern

            Comment


            • #7
              @ Bernd Wilske:

              Kannst du deine Lösung bitte etwas ausführlicher beschreiben.

              Gruß
              Gunna

              Comment

              Working...
              X