Bilddatei mit ftBlob in Datenbankspeichern



  • Hallo

    Compiler : Borland C++ 2007
    Datenbank : Paradox

    Ich habe folgende Funktion aus einem Programm kopiert,
    in dem sie schon funktioniert hat.

    Ich habe eine Query auf dem Formular
    in dem ich unter Strings folgende Zeilen habe

    update zustandstext
     set Symbol = :wSymbol
     where TextNr = :wTextNr
    

    und im Programm unter einer Zuweisungsmethode habe ich noch

    Query1->Params->ParamByName("wTextNr")->Value = TxtNr;
    Query1->Params->ParamByName("wSymbol")->LoadFromFile(DateiName, ftBlob);
    Query1->ExecSQL();
    

    in TxtNr steht die richtige Zahl und in DateiName der komplette Pfad, Datei existiert auch.

    Das ganze habe ich nun in meinem neuen Programm so verfasst

    TQuery* QBlob = new TQuery(this);
    QBlob->DatabaseName = "GLT";
    try{
    QBlob->SQL->Clear();
    QBlob->SQL->Add("update " + DatenbankName);
    QBlob->SQL->Add(" set "+DatenbankFeld +" = :wSymbol");
    QBlob->SQL->Add(" where TextNr = :wTextNr");
    
    QBlob->Params->ParamByName("wTextNr")->Value = TextNr;
    QBlob->Params->ParamByName("wSymbol")->LoadFromFile(DateiName, ftBlob);
    
    QBlob->ExecSQL();
    }
    catch(...)
    {
      ShowMessage("Fehler beim Ausführen des EcexSQL");
    }
    

    Und er läuft hier jedesmal in den Catch!
    aber Warum?!
    alle Felder sind exakt gefüllt, korrekt.Ging vorher ja auch 😕

    Ich trett auf der STelle, kann mir jemand helfen?! Tipps?!

    Danke



  • Hallo

    Dann las dir doch mal die konkrete Meldung der Exception anzeigen, dazu ist sie ja da.

    catch(Exception& e)
    {
      Application->ShowException(&e);
    }
    

    bis bald
    akari



  • Darauf hätte ich eigentlich selber kommen können. Dankeschön.
    Problem war das Die Variable TextNr ein AnsiString war
    und das Feld TextNr aber ein Integer...

    Wie einfach manche Probleme sind aba man sieht den wald vor lauter bäumen nicht 🙂

    danke


Anmelden zum Antworten