Announcement

Collapse
No announcement yet.

Tarnkappe bei Delphi und Interbase

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

  • Tarnkappe bei Delphi und Interbase

    Nach einem Backup und Restore einer Datenbank hatte ich plötzlich das Problem, daß ich Datensätze einer Tabelle in einem DBGrid nicht mehr dargestellt bekam. Aber als ich versuchte die gleichen Datensätze nochmals einzufügen, sagte mir Interbase, daß ich die referentielle Integrität verletzen würde, also waren die Datensätze noch gespeichert und ich konnte sie dennoch nicht sehen, als ob sie eine Tarnkappe trügen. Andere Datensätze waren ohne Probleme einfügbar. Da ich die Datenbank nicht lange geschlossen halten konnte, kopierte ich die Vorgängerversion wieder zurück und die Datensätze waren wieder sichtbar.
    <p>
    Hat irgend jemand schon mal eine ähnliche Konstellation bei Interbase und Delphi vorgefunden ? Und wenn ja, welches Problem könnte dahinter stecken. Liegt es in der DBGridkomponente? Oder kann der Interbase-Server aus unerfindlichen Gründen, die Datensätze nicht an den Client zurückschicken ?

  • #2
    Hallo,

    hat der Client vor dem Restore seine Datenbankverbindungen geschlossen und erst nach dem Restore wieder aufgebaut? Waren die Datensätze in der IBConsole bzw. wisql sichtbar

    Comment


    • #3
      Ich solle noch hinzufügen, daß ich bei einer Klinksanwendung derzeit noch eine alte IB-Version (4.2) nutze und die Applikationen mit Delphi 3 entwickle. Alle Applikationen werden von einem zentralen Server geladen. Ist einfacher für Programmupdates.
      Bei Änderungen der Datenbank lasse ich über einen speziellen Tabellenwert (Integer), der in 5-minütigen Abständen abgefragt wird, alle Client-Anwendungenn sich beenden und die Datenbankanbindung bleibt gesperrt. Somit meldete ich mich nach dem Backup neu an.
      Da ich damals unter Zeitdruck stand ( 8 Uhr morgens ) konnte ich keine Tests durchführen.
      <p>
      Zusatzfrage: Lohnt sich ein Umstieg auf IB 6 wenn man weiterhin zunächst nur Dialekt 1 nutzt

      Comment


      • #4
        Hallo Herr Kosch,
        ich hatte jetzt Zeit mich nochmal der Problemdatenbank zu widmen.
        Es sieht so aus, daß in eine Tabelle die Daten korrekt gespeichert werden, aber in einem von dieser Tabelle abgeleiteten View, den ich zur Anzeige benötige, können die Daten nach dem Backup/Restore nicht mehr angezeigt werden. In WSQL kommt die Fehlermeldung sql -802 arithmetic exception, numeric overflow, or string truncation. Ein count über den view bringt jedoch die korrekte Anzahl an Einträgen.
        <p>
        Interessanter Weise kann ich jedoch wenn ich anhand der Metainformation den View ein zweites mal erstelle die Daten wieder sehen. Das bedeutet, daß bei dem Backup/Restore etwas passiert, daß den View nicht mehr anzeigbar macht. Außerdem habe ich noch festgestellt, daß daselbe für einen weiteren View in der Datenbank gilt.
        <p>
        Gibt es hierfür eine Erklärung

        Comment


        • #5
          Hallo,

          tauchen irgendwo in Ihren Schemainformationen für die Tabellen/Views deutsche Umlaute oder sonstige Sonderzeichen auf? Wie sieht die Deklaration des Views aus

          Comment


          • #6
            Hallo Herr Kosch <P>
            anbei die Deklarationen der Views, bei denen dieses Problem auftrat.
            Nach meiner Meinung sind diese Deklarationen in Ordnung.

            CREATE VIEW VW_DIAGNOSE_ICD10_TEXT (
            ICD10_DIAGNOSE_ID,
            ICD10_OPPLAN_ID,
            ICD10_VERSION_ID,
            ICD10_CODE_ICD10,
            ICD10_DIAGNOSEART,
            ICD10_DIAGNOSEDATUM,
            ICD10_DIAGNOSEGUELTIG,
            ICD10_DIAGNOSESICHERHEIT,
            ICD10_DIAGNOSESEITE,
            TITEL,
            USERTEXT
            ) AS
            Select
            d.ICD10_Diagnose_ID,
            d.ICD10_OpPlan_ID,
            d.ICD10_Version_ID,
            d.ICD10_CODE_ICD10,
            d.ICD10_DIAGNOSEART,
            d.ICD10_DIAGNOSEDATUM,
            d.ICD10_DIAGNOSEGUELTIG,
            d.ICD10_DiagnoseSicherheit,
            d.ICD10_DiagnoseSeite,
            i.TITEL,
            t.UserText
            From Diagnose_ICD10 d join ICD10_Codes i on d.ICD10_CODE_ICD10 = i.Code and
            d.ICD10_Version_ID = i.Version_ID
            left outer join Diagnose_ICD10_Utext t on d.ICD10_Diagnose_ID = t.Diagnose_ID

            CREATE VIEW VW_PROC (
            PROC_ID,
            OPPLAN_ID,
            DATUM,
            CODE,
            VERSION_ID,
            SEITE,
            TYP,
            ORT,
            TITEL,
            USERTEXT
            ) AS
            Select p.Proc_ID, p.Proc_OpPlan_ID, p.Proc_Datum, p.Proc_Proc_ID,
            p.Proc_Version_ID, p.Proc_Seite, p.Proc_Typ, p.Proc_Ort, o.Titel, u.UserText
            From Proc p join OPS_CODES o on p.Proc_Proc_ID = o.Code and
            p.Proc_Version_ID = o.Version_ID left join
            Proc_UText u on p.Proc_ID = u.Proc_ID

            CREATE VIEW VW_PROZEDUR_PROC (
            P_ID,
            CODE,
            VERSION_ID,
            TITEL,
            TEXT
            ) AS
            select p.PO_P_ID, p.PO_Code, p.PO_Version_ID, c.Titel, p.PO_Text
            from Prozedur_OPS p join OPS_Codes c on p.PO_Code = c.Code and
            p.PO_Version_ID = c.Version_I

            Comment

            Working...
            X