Strings mit Sonderzeichen in Select-Statements



  • Hallo,

    ich habe ein Programm, das SELECT-Statements ausführt und dadurch über ODBC daten aus einer Access-DB liest. Das funktioniert auch solange, bis der Suchstring keine Quotes (Zeichen ') enthält. Sobald dieses Zeichen im String enthalten ist, bekomme ich beim Ausführen der "Open"-Anweisung die Meldung "Syntax error (Missing operator) in expression" und dann den Ausdruck, nach dem ich suche.
    Beispiel:

    CString sqlstring, searchstring;
    searchstring = "CAN'T DO THIS"
    sql_string.Format("SELECT * FROM tabelle WHERE [feld1] = '%s'", searchstring);
    table1.Open(CRecordset::snapshot, sql_string);
    

    table1 ist von CRecordset abgeleitet.

    Mir ist klar, wo das Problem liegt, aber ich habe keine Ahnung, wie ich damit umgehen soll. Wie kann ich die Apostroph-Quotes irgendwie für das SELECT als Delimiter unkenntlich machen? Oder gibts eine andere Alternative?

    Danke im voraus für die Hilfe
    Gruss

    yeti



  • Das sollte funktionieren(Funktioniert jedenfalls wenn ich eine Abfrage so in Access eingebe):
    sql_string.Format("SELECT * FROM tabelle WHERE [feld1] = \"%s\"", searchstring);
    So kriegst du nur noch Probleme wenn der Suchstring ein " enthält.



  • Hi, Andorxor,

    hab ich schon versucht, aber dann sagt er mir: "Too few parameters. Expected 1."

    ?!?

    Gruss

    yeti



  • Doppelte ' könnten evtl. auch klappen:
    searchstring = "CAN''T DO THIS";

    [edit]
    also nicht Anführungszeichen (") sondern zwei Apostroph hintereinander(' ')
    [/edit]



  • Hi isabeau,

    das war die Lösung!!

    searchstring = "CAN''T DO THIS" 
    sql_string.Format("SELECT * FROM tabelle WHERE [feld1] = '%s'", searchstring);
    

    Danke nochmals + Gruss

    yeti


Anmelden zum Antworten