ADOTable Excaption Problem?



  • Also hier ein bisschen Code, wird denke ich mal aber nix bringen:

    ADOQuery1->SQL->Clear();
    ADOQuery1->SQL->Append("insert into Kunde (KundenNr,"
                           "Match)"
                           "values (15,'"+Matchcode+"')");
    ADOQuery1->ExecSQL();
    

    So und wenn ich dann zum Beispiel Button1 Drücke und der folgenden Code ausführt:

    ADOTable1->Active=true;
    

    Dann bekomm ich die Exception.

    Naja Woran kann das leigen??

    MFG

    Maruu



  • Nun, jetzt ist jedenfalls die Richtung um einiges klarer. Jetzt kann ich wenigstens mit Sicherheit sagen, dass ich davon keine Ahnung habe. 🙂 Schade.



  • *g* naja dohh, also es ist auch so wenn man nur alles zusammenklickt un die Tabelle schon im Objektinspektor auswählt ohne eine Zeile Code un Active auf true setzt und dann kompiliert kommt auch der Fehler. Weiß nur ned mit was des zusammenhängt.

    Gruß

    Maruu



  • Hast Du's schon mal mit TADOQuery oder TADODataset versucht. TADOTable ist voller Bugs. TADOTable sollte man höchstens dann verwenden, wenn eine bestehende Anwendung umgestellt wird. Auf gar keinen Fall sollte sie in neuen Anwendungen verwendet werden. Sie ist kaum mehr als ein 'Marketinggag'.
    Hab' ich jetzt schon mehrfach gepostet, aber anscheinend glaubt mir niemand. 😉



  • Ok das hab ich nicht gewusst.
    Aber wie verwende ich das dann?
    TADOQuerry hab ich ja oben schon drin (siehe weiter oben),
    was hat es mit dem TADODataset auf sich?? Wie verwende ich es??

    MFG

    Maruu



  • TADODataset läßt sich wie TADOQuery verwenden....

    Aber da Du schon Query verwendest sollte das eigentlich funktionieren. Sind das alle Felder aus der Tabelle? Wenn noch mehr Felder da sind: Sind davon welche NOT NULL definiert?

    Lass mal die TADOTable ganz weg und nimm statt dessen da auch eine TADOQuery, oder besser noch eine TADODataset.



  • Leider weiß ich über die Datenbank nicht viel, ich greife auf sie per
    ODBC zu und die eigendliche Datenbank ist nicht offen. Aber soweit ich das
    sehe ist das nicht der Fall das die anderen Felder die nicht in der Abfrage
    vorkommen auf NOT NULL gesetzt sind.

    Das mit dem TADOQuerry1 peil ich noch ned. Ich hab jetzt ein:
    ADOConnection1 mit gesetztem ConnectionString
    DataSource1 ohne veränderte Einstellungen im Objektinspektor
    ADOQuery1 mit ADOConnection als Connection und DataSource1 als DataSource
    DBGrid1 mit DataSource1 als DataSource

    So und dann führ ich folgenden Code aus:

    ADOQuery1->SQL->Clear();
    ADOQuery1->SQL->Add("SELECT * FROM Kunde");
    ADOQuery1-> Open();
    ADOQuery1->Active=true;

    Aber im DBGrid wird nix angezeigt was mach ich da falsch??

    MFG

    Maruu


  • Mod

    Hallo

    schau mal mit dem Debugger ob du was zurueckbekommst
    (das active=true kannst du dir sparen
    mit open holst du schon die Daten

    MfG
    Klaus



  • Naja das is mir jetzt peinlich ich kenn mich mit dem Debugger garnicht aus.
    Wie mach ich das?? Hab grad mal geschaut unter Ansicht->Debugger Fenster gibts ein paar sachen aber wie kann ich das kontrollieren??

    MFG

    Maruu



  • in diesem Fall kann dir ein Beitrag der FAQ helfen, schau mal hier http://www.c-plusplus.net/forum/viewtopic.php?t=39305 unter "Debuggen?"



  • Davon abgesehen, sollte das so eigentlich funktionieren... Befinden sich den Datensätze in der Tabelle?



  • Linnea:
    Ok hab jetzt den Beitrag zum Thema debuggen gelesen.
    Aber welches Element muss ich nun genau überwachen??
    Ich meine mit ADOQuery1-> Open(); setze ich ja den Command
    ab und was muss ich dann überwachen, wo wird das Ergebnis
    hingespeichert??

    Joe_M.:
    Jap die Tabelle ist gefüllt. Hab auch schon ne andere probiert,
    bei der wird auch nix angezeigt.

    MFG

    Maruu



  • Versuch doch bitte mal (in einem neuen Projekt):
    Eine TADOConnection und ein TADOQuery und eine TDataSoruce, entsprechend verbunden und konfiguriert...

    In der Eigenschaft SQL der Query trägst Du dann "SELECT * FROM Kunde" ein. Nach einem Doppelklick öffnet sich der Feldeditor, rechte Maustaste -> Alle Felder hinzufügen. Was passiert?



  • Leider bin ich gerade an der FH!
    Ich werds aber gleich heute Abend ausprobieren wenn ich heim komme.

    Gruß

    Maruu



  • Hi!

    Also ich hab jetzt das Problem. Es muss irgendeinen Fehler gegeben
    haben beim erstellen des DataSource Objektes hab dieses nochmal neu erstellt
    und alles eingetragen jetzt gehts.
    Nun hab ich aber noch ne Frage. Ich mach die Abfrage
    SELECT MAX(KundenNr) AS MAX FROM Kunde;
    So in der Tabelle steht unter KundenNr folgendes
    1,2,3,4,5,6,10,11,12,13,14
    Das scheint der PrimaryKey zu sein. Nun liefert er mir aber als Ergebnis 6 zurück der peilt nicht das es da noch bei 10 weiter geht. Woran kann das liegen?
    Hab dann folgendes versucht:
    SELECT KundenNr FROM Kunde;

    int maxKundenNr=1;
    while(!ADOQuery1->Eof){
    if(ADOQuery->Fields->FieldByName("KundenNr")->AsInteger > maxKundenNr){
    maxKundenNr=ADOQuery->Fields->FieldByName("KundenNr")->AsInteger;
    }
    ADOQuery1->Next();
    }
    

    Das müsste doch gehen oder???
    Leider geht es nicht er liefert immer 1 als maxKundenNr zurück.

    MFG

    Maruu

    PS: Wieso ist eigendlich ab und zu das Forum down???



  • Bevor es die Mods schreiben: 1 Thema pro Thread, 1 Thread pro Thema!
    Eröffne also bitte eine neue Diskussion.


Anmelden zum Antworten