[Access Datenbank] einen Datensatz "senden"



  • Hast du diesen INSERT SQL mal direkt auf der Datenbank ausgeführt?
    Da kannst den SQL natürlich auch gern hier posten. Vielleicht lässt sich der Syntax Fehler finden.
    Zumindest könntest du dann weiterhin diese Methode für dein Problem verwenden.



  • Ja ich habs direkt an die Datenbank geschickt.
    Hier der String:

    strQuery = "INSERT INTO Data (User,Password,Age,EmailAddress) VALUES ("+strUser+","+strPassword+","+strAge+","+strEmailAddress+")";
    
    m_Backup_DB.Execute(strQuery);
    

    So ungefähr müßte er gewesen sein. Zumindest habe ich extra noch nach genauen Syntax gegoogled gehabt bevor ichs das erstemal verwendete.

    Eine andere Möglichkeit wäre natürlich auch es so zu lösen:
    http://www.codersource.net/mfc_ado_insert.html



  • inva schrieb:

    Ja ich habs direkt an die Datenbank geschickt.

    Ich meinte egtl ob du es direkt in Access ausgeführt hast. Wenn ja, dann müssten in dem SQL nämlich schon die endgültigen Werte drin stehen und nicht die Variablen ... aber nicht so wild, hab glaub ich eh deinen Fehler entdeckt

    inva schrieb:

    strQuery = "INSERT INTO Data (User,Password,Age,EmailAddress) VALUES ("+strUser+","+strPassword+","+strAge+","+strEmailAddress+")";
    
    m_Backup_DB.Execute(strQuery);
    

    Ich vermute mal die Felder welche du hier füllst sind Strings (also char, varchar...). Dann musst du im SQL ein Hochkomma vor die Feldwerte setzen, also:

    INSERT INTO Data (User,Password,Age,EmailAddress) VALUES ('"+strUser+"','"+strPassword+"',"+strAge+",'"+strEmailAddress+"')

    Da Age wohl numerisch sein dürfte hier kein Hochkomma.

    inva schrieb:

    Eine andere Möglichkeit wäre natürlich auch es so zu lösen:
    http://www.codersource.net/mfc_ado_insert.html

    Also das entspricht egtl nicht dem Problem, so wie ich es zumindest verstanden hatte. In dem Beispiel werden die Feldnamen nämlich noch einzeln angegeben.

    Ich hatte das so verstanden, dass du ohne die Feldnamen einzeln abtippen zu müssen, du nur anhand deines RecordSets Daten in eine Zieltabelle hinzufügen möchtest. Der SQL, welchen wir da oben im Übrigen behandelt haben dürfte dann wohl auch nicht der eigtl Lösungsidee entsprechen.

    Was ich meinte, war das iterieren über alle gefundenen Spalten im RecordSet und dann ein Zusammenbauen des SQLs anhand der gefundenen Spaltennamen. Dadurch hättest dir das abtippen der Spaltennamen nämlich erspart. Aber du kannst das natürlich auch so lösen. 😉



  • Also du meinst ich sollte die Spaltennamen aus meinem Recordset auslesen?
    Auch eine gute Idee, jedoch brauch ich das nicht zwangsweise, da ich zwei identische DB's mit identischen tabellen hab und somit weiß welche spaltennamenvorhanden sind. Der einzige Unterschied ist das die eine DB voll und die andere leer ist. Die 2. DB soll ebend als Backup DB dienen.

    Das mit den Hochkomma's hab ich bereits ausprobiert. Und meine Variablen sind CString Elemente, liegts vielleicht daran? Die Felder in der DB sollten eigentlich "Text" verstehen können, zumindest waren sie so eingestellt.
    Nein direkt in Access hab ichs nicht ausgeführt, ich habe es einfach als SQL Statement an die DB gesendet. Komisch ist das Abfragen ohne Probleme in der SQL Syntax funktionieren, nur Anfragen irgendwie nicht. Hat Access eine spezielle SQL Syntax?



  • Die *.mdb kopieren kommt zufällig nicht als Backup in Frage ?



  • Nein, das kopieren ist ja nur eine teilfunktion der APP 🙂
    Zudem sollen nicht immer alle Datensätze kopiert werden, sondern nur der Teil der einem gewissem Kriterium unterliegt.
    Aber danke für die guten Denkanstöße, denen werde ich erstmal nachgehen, dafür vielen Dank 🙂



  • strQuery = "INSERT INTO Data (User,Password,Age,EmailAddress) VALUES ("+strUser+","+strPassword+","+strAge+","+strEmailAddress+")";
    
    m_Backup_DB.Execute(strQuery);
    

    Nur so eine Idee aber ich glaub Access braucht hinter jedem Query einen ';'.
    Also gehts vielleicht so

    strQuery = "INSERT INTO Data (User,Password,Age,EmailAddress) VALUES ("+strUser+","+strPassword+","+strAge+","+strEmailAddress+");";
    
    m_Backup_DB.Execute(strQuery);
    

    Grüsse
    Tobi



  • Hallo, ich habe nun etwas rumprobiert und stehe nun in meinem code an der Stelle mit der Insert Into Anweisung, und ich bekomme immernoch wie vorher einen Syntaxfehler in der Instert Into Anweisung ... Jedoch mache ich meines erachtens nichts falsch

    INSERT INTO Image (...,...,...,...,...) VALUES (...,...,...,...,...);
    

    Es handelt sich bei jedem Element um einen CString, sieht vielleicht jemand von euch den Fehler?



  • inva schrieb:

    Es handelt sich bei jedem Element um einen CString, sieht vielleicht jemand von euch den Fehler?

    Die Verwendung von Hochkommas innerhalb von SQL Anweisungen ist abhängig von dem Feldtyp welcher auf der Datenbank angelegt wurde, nicht vom Datentyp innerhalb deines Programmes.



  • Jau, Fehler gefunden, die Abfrage bzw. das senden des Datensatzes klappt wunderbar! Es haben einfach nur in dem VALUES(...) Teil die Hochkomma's gefehlt. Danke an dieser Stelle, Problem behoben 🙂


Anmelden zum Antworten