Firebird Speicherschwierigkeiten (?)



  • Hab letztes Wochende mal angefangen mich mit Datenbanken zu beschäftigen und hab die BDE & Paradox Datenbank gewählt. Am Montag lese ich hier das die BDE nicht zu empfehlen und Paradox quasi tot ist. Hab zwar nicht vor mein Programm zu verkaufen aber am Puls der Zeit zu sein kann ja nicht schaden also bin ich auf die embedded Firebird version umgestiegen. (Verwende die Interbase komponenten)

    Für TTable hab ich mir eine eigene klasse geschrieben um den zugriff auf die Datenbank zu erleichtern. Statt TTable verwende ich jetzt TIBTable. Aber anscheinend funktionieren meine (für ttable funktionierenden) Funktionen nun nicht mehr ganz richtig.

    Ich erstelle die Datenbank, transaction und table und verknüpfe sie richtig. Die Datenbank wird auch (anscheinend) korrekt erstellt.

    Dann will ich natürlich eine tabelle erstellen. Das geht auch. Will ich dann aber diese Tabelle öffnen bekomme ich einen 'Dynamich SQL Error SQL Error Code = -204 Table unknown'. Aber der Table ist nicht unknown wurde ja gerade richtig erstellt!

    Und was dann echt komisch ist, ist die Tatsache das nach dem Beenden des Programmes und erneutem Starten die Tabelle auf einmal da ist.

    Hab ich jetzt einfach eine Speicherfunktion übersehen (die man für TTable nicht brauchte) oder ist ein etwas teifergreifendes Problem?

    Hab hier gesucht, auf diversen firebird-sites, faqs, usw.. aber nichts gefunden (nun, wahrscheinlich gibt es da draußen die lösung aber ich werd sie übersehen haben 🙄 )

    Ihr seids jetzt die letzte Instanz Hilfe bevor ich wieder zu Paradox zurückkehre...

    (Wenn code benötigt wird poste ich gerne, nur weis ich nicht welcher von belang ist.. initialisieren von dem Ganzen?, Tabelle erstellen?, In Tabelle schreiben?)



  • scheint so als würde die Datenbank die Tabelle noch nicht richtig kennen

    versuch mal nach dem Erstellen

    if (!Trans->InTransaction) Trans->StartTransaction();
    Trans->CommitRetaining();
    

    eventuell noch mal doppelt auf die Transaction-Komponente klicken und dort die gewünschten Transactionseigenschaften einstellen

    günstiger ist auch die Tabelle mittels SQL und IBQuery zu erstellen und dann die neue Tabelle an TIBTable zu übergeben



  • Danke so hat es funktioniert.

    Auch ein weiteres Problem hab ich jetzt behoben. RecordCount hat mir immer nur '1' zurückgegeben, daher hab ich immer geglaubt mit dem Schreiben stimmt was nicht.

    Jetzt zeig ich einfach auf dein letzten Datensatz und hol mir RecNo. (Warum aber recordcount nicht geht verstehe ich nicht. Vergessen zu implementieren?)



  • Bevor Du mit Deinem Projekt weiter machst und viel Zeit kaputt machst. Firebird ist eine SQL-Datenbank. IBTable gibt es nur als absolute Krücke für Anfänger damit der Umstieg von der BDE nicht so schwer fällt. Bei einer größeren Datenbank ist IBTable absolut unbrauchbar. Deine Freunde heißen TIBQuery und TIBSQL. Machs lieber gleich richtig, dann ist es später auch kein großes Problem die Datenbank mit Firebird als Server übersNetz zu verwenden.



  • Hmmm

    Ich werd die mir mal anschauen. Aber momentan bin ich mal recht froh das mit das mit dem table soweit gelungen ist.

    Mein jetztiges Projekt ist eigentlich nur eine 'Entwicklungs- bzw. test' Umgebung für meine Datenbank Versuche. (Erste Schritte) Also wird mir ein Umstieg, soweit ich den verstehen kann, wohl hoffentlich nicht so schwer fallen.

    Thx für den Hinweis.


Anmelden zum Antworten