Announcement

Collapse
No announcement yet.

Delphi 4 - Ora 8.1.6 - doppelte Datensätze in DBGrid - virtuell

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

  • Delphi 4 - Ora 8.1.6 - doppelte Datensätze in DBGrid - virtuell

    Hallo zusammen,

    laut Borland soll der Fehler, daß doppelte Datensätze im DBGrid erscheinen, mit der BDE 5.11 u. der sqlora8.dll vom 16.06.2000 behoben sein. Dieses trifft allerdings nicht zu.
    Das Problem besteht weiterhin.
    Alle bisher von mir gefundenen Informationen im Internet die auch Lösungvorschläge bzw. Hinweise beinhalten, lösen mein Problem bisher leider nicht.

    Habe zwischenzeitlich alle 5'er BDE-Versionen mit allen möglichen Einstellungsvarianten der BDE getestet (quasi rauf und runter). "NLS"-Parameter aus init.ora mit Client-Angaben (ORA-Angaben in der Registry), Ländereinstellung von Windows, LANGDRIVER in der BDE gleichgeschaltet, ROWSET SIZE auf 0 gesetzt, SHAREDMEMLOCATION auf "1000 to 7F00" eingestellt, BLOB SIZE und BLOBS TO CACHE lt. Hilfe mit unterschiedlichen Werten getestet, etc..
    Da ich mir bei der jeweiligen Neuinstalltion der BDE nicht sicher war, ob auch die jeweiligen Dateien tatsächlich überschrieben wurden, wäre auch hier eine Info ganz hilfreich. Geht beispielsweise auch eine BDE-Installation von 5.2 auf 5.10 durch?
    Mein Systemumfeld:
    Server:
    Windows NT 4.0 mit SP 6
    Oracle Server 8i, Release 8.1.6.1.0
    (Oracle Server 9.2 unter Linux ebenfalls getestet)
    Client:
    Windows NT 4.0, SP 6
    (mit SP 4 und 5 ebenfalls getestet)
    Oracle Client 8.1.6.0.0
    8.1.5.0.0 ebenfalls getestet)
    BDE:
    alle 5'er Versionen getestet
    Delphi:
    Delphi 4 Client/Server Suite mit UP 3

    Auch in den hier vorgehaltenen Foren (Delphi, Datenbanken etc.) bin ich leider nicht fündig geworden.
    Hat noch jemand eine Idee, wie das Problem unter der vorhandenen Systemumgebung gelöst werden könnte?

    Kann mir jemand sagen, wie aufwendig es ist, ein vorhandenes Delphi 4-Programm von der BDE auf beispielsweise NCOCI8 umzustellen und ob damit auch das Problem behoben werden kann?

  • #2
    ... wie aufwendig es ist, ein vorhandenes Delphi 4-Programm von der BDE auf beispielsweise NCOCI8 umzustellen

    Ich kenn zwar NCOCI8 nicht sondern nur die DOA-Komponenten von http://www.allroundautomations.nl/ und da ist der Umstellungsaufwand relativ gering.

    Wenn die NCOCI8-Komponenten ebenfalls TDataset-Nachfolger bereitstellen sollte eine Umstellung ebenfalls relativ einfach möglich sein

    Comment


    • #3
      vielen Dank für die Antwort.
      Wo könnte ich für diese Umstellung kompentente Unterstützung erhalten?
      Die Sourcen liegen mir vor und könnten zur Verfügung gestellt werden

      Comment


      • #4
        Wie schon gesagt, wenn die NCOCI8-Komponenten ebenfalls TDataset-Nachfolger besitzen, so sollte es 3 Umstellungsschritte geben:

        1, Ersetzen der Controls:<br>
        <pre>
        TDatabase -> TNCOCI8Database
        TTable -> TNCOCI8Table
        TQuery -> TNCOCI8Query
        ...
        </pre>

        2, Evtl. unterschiedliche Properties umsetzen, die in TDatabase/TTable/TQuery aber in den neuen Controls nicht vorhanden sind

        3, Test, Test, Test umd die Unterschiede in der Implementierung herauszufinden. Problematische Punkte sind:<br>
        a, Blob-Felder
        b, Find, Locate-Befehle
        c, Parameter-Behandlung

        Und im Normalfall bietet der Hersteller ja auch Forums/Newsgroups an denen man sich wenden kann

        Comment


        • #5
          Hallo Herr Geyer,
          vielen Dank für die Info's.
          Ich habe mir von der http://www.allroundautomations.nl/ eine 30-Tage Trial-Version der DOA-Komponenten heruntergeladen und installiert. Liegt als "Data Access"-Komponentenpalette vor.
          Welche Komponenten sollen nun ausgetauscht werden?
          TDatabase und TTable sind vorhanden.
          TQuery habe ich in den Sourcen nicht gefunden.
          In dem Projekt existiert eine eigene Unit, die die Standard-Anmeldemaske ersetzt.
          Reicht es jetzt aus, TDatabase gegen OracleLogon? und TTable gegen OracleDataSet? auszutauschen?

          Die Sourcen könnte ich Ihnen kurzfristig zukommen lassen.
          Könnten wir ggf. per e-mail korrespondieren um weitere Details zu erörtern?
          Meine Mail-Adresse: [email protected]

          Comment


          • #6
            TTable -> TOracleDataSet und <br>
            TDatabase -> TOraSession sind die Ersetzungen und TOracleDataset.Session entsprechend mit dem TOraSession verbinden.

            Auch sind die Properties LogonDatabase, LogonUsername und LogonPassword für die Anmeldung relevant (LogonDatabase ist der Name der NET8-Listeners Namens (ich hoffe das ist die richtige Bezeichnung).

            Die weitere Hilfe würde ich gerne über dieses Forum machen. Ich kenne nicht alle Oracle-Macken und hier im Forum sind noch ein paar Oracle-Spezialisten die evtl. weiterhelfen könnten

            Comment


            • #7
              Hallo Herr Geyer,

              vielen Dank für die Info's. Habe die Vorschläge noch nicht getestet, da ich zur Zeit auch noch einen anderen Weg teste. Und zwar habe ich die Oracle-Tabellen mit Datapump in eine Interbase-DB portiert. Hat soweit funktioniert, virtuell doppelte Datensätze tauchen nicht mehr auf.
              Es bleibt nur ein Problem:
              Die unter Oracle vorhandenen Views werden nicht als View sondern als Tabellen in der Interbase-DB angelegt (liegen in der Interbase-DB nach dem "Datapump" unter der Rubrik "Tabellen" vor).
              Wenn ich nun diese Views auf der Interbase-DB mit dem SQL-Explorer von Hand anlegen (Syntax ist ein wenig anders als unter ORACLE - hat aber dann irgendwann funktioniert), dann werden die Views unter Rubrik "Ansichten" angelegt. Die durch Datapump erstellten gleichnamigen Tabellen müssen allerdings vorher gelöscht werden.
              Im "sql-Explorer" sieht soweit alles gut aus. Wenn ich auf die jeweiligen Views zugreife, werden auch die aktuellen Daten angezeigt.
              Wenn ich nun über das Delphi-Programm zugreife (BDE-Änderungen etc. vorgenommen), erhalte ich eine Exception der Klasse EDBEngineError, Meldung: 'Allgemeiner SQL-Fehler arithmetic exception, numeric overflow, or string truncation Cannot transliterate character betwenn character sets'.

              Was könnte die Ursache sein und wo muß ich da ansetzen?

              Vielen Dank!

              PS: Auf der anderen Baustelle werde ich in Kürze weitermachen und mich dann sicher wieder melden

              Comment


              • #8
                Also über Interbase habe ich Null Ahnung. Könnte nur Vermutungen Anstellen aufgrund des Fehlertextes. Evtl. sind hier noch Codepage/Charaterset-Einstellungen nötig

                Comment


                • #9
                  Hallo Paul,

                  hast Du schon eine Lösung (oder einen Workaraound) für das Problem mit den doppelten Datensätzen im DBGrid unter Oracle gefunden?

                  Stepha

                  Comment

                  Working...
                  X