tutorials.de Buch-Aktion 05/2012
ERLEDIGT
NEIN
ANTWORTEN
1
ZUGRIFFE
3773
EMPFEHLEN
  • An Twitter übertragen
  • An Facebook übertragen
AUF DIESES THEMA
ANTWORTEN
  1. #1
    Sapperlot Sapperlot ist offline Mitglied Silber
    Registriert seit
    Jun 2005
    Beiträge
    51
    Hallo:
    Situation: Habe Access DB mit verschiedenen Tabellen.
    Borland C++ Builder, zugriff auf DB geschieht über TQuery.

    An und für sich funktioniert die Sache, jedoch macht mir irgendwie ein Memo Feld Probleme. Ich schildere kurz die Situation anhand des Source Codes:

    /*
    //Auf diesen Quelltextabschnitt beziehe ich mich später.
    // COMMENTED_SOURCE
    Query1->Close();
    Query1->SQL->Clear();
    Query1->SQL->Add("insert into Test");
    Query1->SQL->Add("values (:Param0)");
    Query1->ParamByName("Param0")->AsMemo = AnsiString("DAJKLDUUJALKDJBBBBBBKLAJDLKJADLKJ");

    Query1->ExecSQL();
    Query1->Close();
    */

    //Hier der Problemcode...

    AnsiString Bericht = m_pRecordValues->GetPruefbericht();

    Query1->SQL->Clear();
    Query1->SQL->Add("insert into T02_PRUEFUNG");
    Query1->SQL->Add("values (:Param0, :Param1, :Param2, :Param3, :Param4, :Param5, :Param6, :Param7, :Param8)");
    Query1->ParamByName("Param0")->AsInteger = maxID;
    Query1->ParamByName("Param1")->AsDateTime = DatumZeit->CurrentDate();
    Query1->ParamByName("Param2")->AsDateTime = DatumZeit->CurrentTime();
    Query1->ParamByName("Param3")->AsBoolean = m_pRecordValues->GetPruefungBestanden();
    //Es wird zwischen String und Memo unterschieden, da Memo Datenmüll in die DB schreibt, wenn der Bericht == "";
    if(m_pRecordValues->GetPruefbericht().Length()<20)
    Query1->ParamByName("Param4")->AsString = Bericht;
    else
    Query1->ParamByName("Param4")->AsMemo = Bericht;
    ... RESTLICHE PARAMS WERDEN ÜBERGEBEN...
    Query1->ExecSQL();
    Query1->Close();

    Das Problem:
    Im Projekt Projektname.exe ist eine Exception der Klasse EDBEngine aufgetreten.
    Meldung: 'Allgemeiner SQL-Fehler
    [Microsoft ][ODBC Microsoft Access Driver] Die Zeichenfolgedaten wurden rechts abgeschnitten. (null)'.
    Prozeß wurde angehalten. Mit einzelne Anweisung oder Start fortsetzen.

    Im Debugger ist jedoch zu sehen, dass Bericht sehr wohl daten enthält, und auch richtig formatiert ist. Der Fehler kommt auch, wenn einfach ein AnsiString("Hallo Welt"); übergeben wird.

    Was ist bekannt?
    Nach dem ich die Datenbank neu gestartet habe, kann ich einen Datensatz in die DB schreiben. nachdem ich nochmals einen Datensatz in die Tabelle schreiben möchte kommt obiger Fehler.
    Früher hat das Ding tadellos funktioniert. Es muss mit einer Änderung zusammenhängen, die ich anderweiteig gemacht habe.
    Komisch ist:
    Wenn ich den COMMENTED_SOURCE einkommentiere (Er schreibt in eine andere Tabelle in der gleichen DB sinnlos Zeichen rein, aber ebenfalls als Memo) funktioniert das untere Insert Satement beliebig oft.

    Ich habe das Gefühl, als sei in dem Query noch irgendwelcher Müll drin, aber ich rufe ja Query1->SQL->Clear(); auf.
    Gibt es noch andere Befehle, die das Query wieder in einen "reinen" Zustand versetzen.
    Kann mir jemand obiges Phänomen erklären?
    Muss Query1->Close eigentlich nur nach Select Statements aufgerufen werden, oder überhaupt nicht. Ich sehe gar keine Veränderung, ob ich es nun aufrufe, oder nicht.

    Danke,

    Gruß, Basti
    Geändert von Sapperlot (01.08.05 um 10:21 Uhr)
     

  2. #2
    Leo Freitag Leo Freitag ist offline Grünschnabel
    Registriert seit
    Nov 2006
    Beiträge
    1
    Hi Sapperlot,

    ich mühe mich ebenfalls seit geraumer Zeit, um per Borland BDE Daten in ein Memofeld einer Access-Datenbank zu schreiben.

    Habe diverse Ansätze probiert. Leider war bisher keiner dabei, der stabil genug lief.

    Hast Du Dein Probelm von damals lösen können? Wenn Du Interesse an Erfahrungsaustausch hast, gebe Nachricht.

    Gruß
    Leo
     

Ähnliche Themen

  1. Zeilenumbrüche im Memo-Feld
    Von Alex Duschek im Forum Delphi, Kylix, Pascal
    Antworten: 11
    Letzter Beitrag: 18.12.09, 09:50
  2. [Access] Abfrage aus Memo-Feld liefert kryptische Zeichen
    Von fiacyberz im Forum Office-Anwendungen
    Antworten: 3
    Letzter Beitrag: 12.01.09, 09:53
  3. Insert Statement
    Von kloakenratte im Forum Java Grundlagen
    Antworten: 1
    Letzter Beitrag: 06.10.08, 15:34
  4. Insert - Abfrage mit TQuery - Borland Builder C++
    Von Mike_2005 im Forum Borland CBuilder und VCL
    Antworten: 2
    Letzter Beitrag: 28.12.04, 11:08
  5. Antworten: 2
    Letzter Beitrag: 22.01.04, 09:31