Zauberei bei meinen Datenbankeinträgen



  • Ich habe mit Borland 5.0 ein Programm geschrieben, mit dem ich Texte und Bilder in eine Cache-Datenbank abspeichere.

    Ich gehe über ein Table-Objekt (ODBC) in die Datenbank und weise die Textfelder zu.
    Wunderschön!

    Funktioniert soweit auch ganz gut, bis ich einen schönen Tages die Stringlängen in der Datenbank von 255 Zeichen auf 512 Zeichen vergrößert habe.

    Seitdem erscheint in der Datenbank von Zeit zu Zeit genau in diesem Feld der Eintrag:"1@%Library.GlobalCharacterStream".

    Dieser Eintrag ist nur hin und wieder zu finden, und beschränkt sich nicht nur auf die Daten die größer als 255 Zeichen sind.

    Kann mir hier irgen jemand helfen?????

    Ich verstehe den Fehler nich ein mal.

    Die Servicehotline von der Datenbank versichert mir, dass der Fehler nicht in der Datenbank zu finden ist. 😮


  • Mod

    Hallo

    arbeitest du denn mit dem BCB 5 oder dem Borland C++ 5

    wie hast du denn das Feld vergroessert
    wie werden die Daten ausgelesen (Code)

    MfG
    Klaus



  • Hallo

    du hast das Problem ja schon erkannt. Es sind einfach zu viele Zeichen.
    Ich vermute du benutzt eine normale, veraltete Paradox 7 Tabelle, und dort als Feldtyp "A". In der Hilfe im Programm "Datenbankoberfläche" steht zu Feldtypen, das die Länge dieses Feldtypes auf 255 beschränkt ist. Willst du mehr, must du den Feldtyp "M" für Memo nehmen.

    bis bald
    akari



  • KlausB schrieb:

    Hallo

    arbeitest du denn mit dem BCB 5 oder dem Borland C++ 5

    wie hast du denn das Feld vergroessert
    wie werden die Daten ausgelesen (Code)

    MfG
    Klaus

    Vielen Dank für die Antwort.

    Ich arbeite mit Borland C++ 5.
    Das Problem besteht bereits beim abspeichern, da dabei der Wert bereits reingeschrieben wird:

    [code]
    FormDatenbankverbindung->Tabellenverbindung->TableName="Auftragstechnologien";
    FormDatenbankverbindung->Tabellenverbindung->Active=true; FormDatenbankverbindung->Tabellenverbindung->Insert;
    FormDatenbankverbindung->Tabellenverbindung->FieldValues["Information"] = Edit1->Text;
    FormDatenbankverbindung->Tabellenverbindung->Post(); }
    Application->ProcessMessages();
    FormDatenbankverbindung->Tabellenverbindung->Active=false;

    Mehr ist das nicht.



  • akari schrieb:

    Hallo

    du hast das Problem ja schon erkannt. Es sind einfach zu viele Zeichen.
    Ich vermute du benutzt eine normale, veraltete Paradox 7 Tabelle, und dort als Feldtyp "A". In der Hilfe im Programm "Datenbankoberfläche" steht zu Feldtypen, das die Länge dieses Feldtypes auf 255 beschränkt ist. Willst du mehr, must du den Feldtyp "M" für Memo nehmen.

    bis bald
    akari

    Vielen Dank für die Antwort.
    Ich habe keine alte Paradoxtabelle, sondern eine Cache-Datenbank, wo die Stringlänge unbegrenzt gewählt werden kann.
    Oder verstehe ich Dich falsch?

    Gruß, Peter


  • Mod

    Hallo

    FormDatenbankverbindung->Tabellenverbindung->FieldValues["Information"] = Edit1->Text;
    

    besser ist da

    FormDatenbankverbindung->Tabellenverbindung->FieldByName("Information")->AsString  = Edit1->Text;
    

    oder noch besser Zugriffe nur per SQL

    MfG
    Klaus



  • KlausB schrieb:

    Hallo

    FormDatenbankverbindung->Tabellenverbindung->FieldValues["Information"] = Edit1->Text;
    

    besser ist da

    FormDatenbankverbindung->Tabellenverbindung->FieldByName("Information")->AsString  = Edit1->Text;
    

    oder noch besser Zugriffe nur per SQL

    MfG
    Klaus

    Vielen Dank,

    ich probiere das aus.

    Per SQL-Befehl kann ich leider keiner Bilder mit auslesen.

    Gruß, Peter 😉



  • Doch kannst Du. Schau Dir mal TQuery::CreateBlobStream() an. Da ist auch ein Beispiel dabei.



  • Beil2004:
    Zitate bitte auf das Notwendigste beschränken. Danke!


Anmelden zum Antworten