Announcement

Collapse
No announcement yet.

BDE 5.2 und Oracle

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

  • BDE 5.2 und Oracle

    Hallo,<br>
    Umg.: Delphi 6 Ent. UP2, BDE 5.2.0.2, Oracle 9i Release 1 u./o. 2<br>
    Zwei kleine Fragen:
    - Wie lässt sich am sinnvollsten eine Verbindung zu Oracle auf BDE-Basis aufbauen?
    - Worin kann der Fehler "Datensatz/Schlüssel gelöscht" begründet liegen?<br>Danke<br>Stephan

  • #2
    > Wie lässt sich am sinnvollsten eine Verbindung zu Oracle auf BDE-Basis aufbauen?

    Definitiv nicht mit der BDE. Vergiß sie. Schmeiß sie weg. Lösch sie von der Festplatte.
    Kauf dir native Komponenten (http://www.allroundautomations.nl/doa.html, http://crlab.com/odac/). Du wist mir BDE nur probleme haben.

    > Worin kann der Fehler "Datensatz/Schlüssel gelöscht" begründet liegen?

    An der BDE.

    <b>Kein</b> Entwickler sollte mehr mit der BDE irgendwelche Datenbank-Projekte beginnen. Selbst bei schon bestehenden Projekten ist bei einer zu erwartenden Reslebenszeit > 6 Monate ein Ablösung der BDE angesagt. Und ein paar 100 € für eine Komponente sollte für einen komerziellen Entwickler kein Problem darstellen. Du wirst dir einige Tage BDE-Fehlersuche ersparen

    Comment


    • #3
      Hallo Bernhard,

      ich teile Deine Meinung uneingeschränkt, aber leider existiert diese Systematik (noch) und muss gepflegt werden. Das Ende ist zwar schon beschlossene Sache, aber nur nicht eben hier und jetzt und sofort. Leider. Von daher muss ich die Fragen nochmal stellen

      Comment


      • #4
        > ich teile Deine Meinung uneingeschränkt, aber leider existiert diese Systematik (noch) und muss gepflegt werden.

        Deine Frage hörte sich aber eher danach an das etwas neues begonnen werden muß. Sonst sollte doch mindestens schon der erste Teil klar sein (sinnvollste Verbindung), da er ja schon existiert

        Comment


        • #5
          Es gibt Anwendungen, die via ODBC auf Oracle zugreifen und wiederum andere, die dies mit den nativen Treibern der BDE tun. Jeder beklagt sich ab und an, dass es 'unerklärliche Fehlermeldungen' gibt. Beim einen klappt dies (nicht), beim anderen jenes (nicht). Beispielsweise ist besagter Fehler "Datensatz/Schlüssel gelöscht" so ein Kandidat. Daher rühren meine Fragen: Welcher Zugriff ist für Oracle erfahrungsgemäß am sinnvollsten? Und wie ist besagter Fehler zu interpretieren

          Comment


          • #6
            Das ist nunmal das Problem. Mit BDE sind noch soviel andere Teile beteiligt. Welche BDE-Version, welche SQL-Links-Version, welche ODBC-Version, welche .NET9-Client, welche genaue Oracle-Version.
            Tritt der Fehler immer noch auf wenn BDE/ODBC/.NET9-Client aktualisiert wird?

            > Worin kann der Fehler "Datensatz/Schlüssel gelöscht" begründet liegen?

            Ich vermute mal das dein Programm (über BDE/SQL-Links/ODBC) nicht alle Schlüssel-Informationen komplett abfragen kann. Hier wäre noch interessant zu wissen aus welchen Feldern der Schlüssel besteht.

            Aber trotzdem: Wieviel Zeit habt ihr (alle Entwickler/Support/...) schon damit verbracht BDE/ODBC-Fehler zu suchen und zu umschiffen? Und vor allem die Aussage: "Das Ende ist zwar schon beschlossene Sache" kann sich auch noch über Jahre hinziehen und der Pflegeaufwand damit um einiges höher liegen als eine sofortige Umstellung

            Comment


            • #7
              Hi Bernhard,

              ich müsste mir Vorwürfe machen, wenn ich nicht schon vor zwei Jahren(!) auf exakt diese Probleme hingewiesen hätte (Vorträge, Präsentationen etc.). Damals hat man überwiegend mit Paradox gearbeitet und alles lief gut, schnell und stabil. Das Desktop-DB-Zeitalter ist vorbei, RDBMS überwiegen (erinnert einen auch etwas an die Zeit der Dinosaurier, aber die ist auch vorbei, ohne wenn und aber). Und nun soll mit Oracle alles so laufen wie früher mit Paradox. Ein bekanntes Sprichwort besagt: Wer nicht hören will, muss fühlen

              Comment


              • #8
                Hi Stephan,

                Ich durfte schon vor 3 Jahren die letzen BDE-Zugänge in unserer Software auf nativen Zugang umstellen (mySQL, MS SQL-Server) und mit der aktuellen Version der SW wird die BDE nicht mehr unterstützt. Also sollte es schon vo 2 Jahren klar sein. Jedoch wird ja der Leidensdruck mit jedem MS Hotfix/ServicePack immer größer da immer weniger mit der BDE geht.

                Und wenn du schon vor 2 Jahren darauf hingewiesen hattest: Wieso setzt du immer noch auf BDE? SOllte schon damal die Software auslaufen..

                Comment


                • #9
                  Hallo Stephan,<p>
                  suche in google nach "record / key deleted", also nach der englischen Fehlermeldung.
                  <p>
                  Meist sind es "autoinc"-Felder und TTable-Komponenten, die den Fehler erzeugen. Das Problem bei autoinc ist, das das TTable nach dem Post versucht, den Datensatz wieder vom Server zu laden, klappt nicht, weil sich durch das autinc ja der Wert geändert hat, daher die hilflose Meldung.
                  <br>
                  Ah, ja, TQuiery hat das gleiche Problem.
                  <p>
                  Heik

                  Comment


                  • #10
                    btw<p>
                    die Meldungen "weg von bde" kann ich nicht mehr hören!!
                    <p>
                    Ich habe hier ne etwa 800k Zeilen App.
                    Uralt, viel DB-Code in Formularen.
                    <br>
                    Das Programm muss Geld einspielen,
                    muss also weiterhin gewartet / erweitert werden.
                    <p>
                    Ein Umstieg auf "was gaanz anderes" ist damit schwer zu machen.
                    <p>
                    Was nimmt man denn, wenn man es unter mssql und firebird laufen lassen will ?
                    <p>
                    Heik

                    Comment


                    • #11
                      > die Meldungen "weg von bde" kann ich nicht mehr hören!!

                      > Ich habe hier ne etwa 800k Zeilen App.
                      > Uralt, viel DB-Code in Formularen.

                      > Das Programm muss Geld einspielen,
                      > muss also weiterhin gewartet / erweitert werden.

                      > Ein Umstieg auf "was gaanz anderes" ist damit schwer zu machen.

                      Es ist bei solcher schlechten Kapslung der DB-Schnittstelle sicherlich schwer zu realisieren. Aber es die Frage ob du evtl schon nächste Woche komplett vor einer nicht mehr funktionsfähigen Anwendung steht weil in einem MS-Patch die BDE komplett inkompatible wurde und Borland keine Veranlassung mehr sieht das zu fixen (Wurde ja schon lange genug angekündigt das die BDE ausläuft). Was werden dann wohl deine Kunden sagen? Oder wirst Du ihnen glaubhaft machen können das sie doch den (sicherheitsrelevanten) Patch nicht einspielen sollen?
                      Und vor allem "was gaanz anderes" ist ja auch nicht nötig. Borland hat ab Delphi 3 mit der TDataset-Schnittstelle die Grundlagen für die einfache Unterstützung von mehreren DBMS in einer Anwendung gelegt.

                      Also fange sofort damit an:

                      - Kapslung der DB-Schnittstelle in wenigen/einer Unit (Bei unseren Projekt mit ca. 1 Mio. Quellcodezeilen in ca. 1500 Zeilen Code)
                      - Setze eine DB-Neutrale Schnittstelle auf (Stichwort: Bridge-Pattern)
                      - Implementiere eine erste alternative (z.B. Oracle-Zugriff über native Komponente)

                      Comment


                      • #12
                        Hallo Bernhard,<p>
                        ich benutze zwar Adapter-Pattern
                        <br>
                        aber ist ja im Prinzip das gleiche.
                        <p>
                        Immer wnen etwas Zeit ist, wird wieder ein Teil umgestellt, also den ganzen db-Kram in eine (eh schon vorhandene Klasse) und alles aus den Forms raus. <br>
                        Das dumme sind meist die TTables (es war mal ne Paradox-App, bis interbase opensource wurde). Man muss halt erst mal alles auf Queries umstellen, dann testen (das dauert). <br>
                        Ich benutze eine abstrakte Query-Klasse, die per Factory erzeugt wird, obwohl es erst eine abgeleitete Klasse gibt (für Interbase, aber immer noch TQuery der bde ;( )
                        <p>
                        Wie heisst es so schön: "Hätt ich das doch früher gewusst!"
                        <p>
                        Heik

                        Comment


                        • #13
                          @Heiko,

                          Kannst Du nicht als Schnittstellenparameter überall TDataset nehmen?

                          Wir sind sogar noch einen Schritt weiter gegangen das wir nicht mal TDataset haben sondern mit disconnected Datas wie bei ADO.NET arbeiten. Sparen uns bei MS-SQL damit den teilweisen Performance-Fresser ADOExpress

                          Comment


                          • #14
                            Danke für Eure rege Anteilname!

                            @Bernhard
                            Nein, die Softwae stand vor zwei Jahren auf den Prüfstand. Aber aufgrund politischer Enscheidungen, die meines Erachtens nicht nachvollziehbar waren, wurde ein Umstieg abgelehnt.

                            @Heiko
                            Die Software läuft ja, aber eben mit Paradox. Bei SQL-Servern als Backend merkt man eben, was man einer derart eierlegenden Wollmichsau hat. Natürlich geht's, die Frage ist aber wie?

                            Danke für Deinen Hinweis mit record/key deleted. TTable und TQuery verursacht diese Probleme!? Was soll ich nehmen, wenn eine BDE-basierte App auf Paradox und SQL Server (Oracle, MS SQL) zugreifen soll? Nun mal Hand aufs Herz: Ist das kein Grund die BDE abzusetzen bzw. sich nicht mehr so 100%ig für sie einzusetzen. Ich mag die BDE ja, ehrlich, aber wie schon gesagt: Vor etlichen Millionen Jahren beherrschten Dinosaurier die Erde..

                            Comment


                            • #15
                              > Nein, die Softwae stand vor zwei Jahren auf den Prüfstand. Aber aufgrund politischer Enscheidungen, die meines Erachtens nicht nachvollziehbar waren, wurde ein Umstieg abgelehnt.

                              Kenn ich. War auch bei einer Firma die Jahrelang (bis 2002) noch mit Uralt-MFC unter 16-Bit entwickelt hatte weil es hieße das heuer der letzte Auftrag für dieses System kommt. Was hätten die sich gespart wenn man gleich den Schritt nach 32-Bit gegangen wär

                              Comment

                              Working...
                              X