SQL-Befehl ausführen



  • @medic89 sagte in SQL-Befehl ausführen:

    • m_strError	L"Der Datenquellenname ist zu lang\n"	ATL::CStringT<wchar_t,StrTraitMFC_DLL<wchar_t,ATL::ChTraitsCRT<wchar_t>>>
      

    Der Text ist wohl nicht vollständig (beachte das \n am ende des gezeigten texts). Lass ihn dir doch komplett ausgeben.

    Aber ansonsten ist die Meldung doch klar was das problem ist



  • Hab das Problem gelöst, "LPCTSTR lpszConnect" hat dem Compiler anscheinend nicht gefallen, ich habe jetzt ein "CString lpszConnect" draus gemacht, und schon funktionierts...



  • Also seit ich aus den LPCTSTR einen CString gemacht habe, läuft alles wie am schnürchen, weiß jemand, woran das liegen könnte?



  • @medic89 sagte in SQL-Befehl ausführen:

    Also seit ich aus den LPCTSTR einen CString gemacht habe, läuft alles wie am schnürchen, weiß jemand, woran das liegen könnte?

    Sollte keinen Unterschied machen. Bist du sicher dass du sonst nichts geändert hast?



  • LPCTSTR query = L"UPDATE Artikelbestand SET Abgelaufen = 'Ja' WHERE Verfallsdatum <= #" + Datum + L"#;";
    

    @hustbaer beachte das hier eine String Concatenation aus 2 string literalen und einer Variable (Datum, vermutlich von Type CString) stattfinden soll.

    Auch wenn Datum ein CString ist, funktioniert das wohl hier nicht, da query auf ein temporary zeigt (wenn ein CString implizit in ein LPCTSTR "konvertiert" werden kann).

    Und das temporary ist AFAIK nach ende der Zeile futsch.



  • @firefly sagte in SQL-Befehl ausführen:

    LPCTSTR query = L"UPDATE Artikelbestand SET Abgelaufen = 'Ja' WHERE Verfallsdatum <= #" + Datum + L"#;";
    

    @hustbaer beachte das hier eine String Concatenation aus 2 string literalen und einer Variable (Datum, vermutlich von Type CString) stattfinden soll.

    Auch wenn Datum ein CString ist, funktioniert das wohl hier nicht, da query auf ein temporary zeigt (wenn ein CString implizit in ein LPCTSTR "konvertiert" werden kann).

    Und das temporary ist AFAIK nach ende der Zeile futsch.

    Er hat geschrieben dass er LPCTSTR lpszConnect geändert hat. Und das sollte wörscht sein. Davon abgesehen stimmt schon was du schreibst. Nur passt es nicht zu dem was @medic89 behauptet geändert zu haben. Wobei ich da eh skeptisch bin, also ob das so wirklich stimmt was er behauptet.



  • @hustbaer Trotz deines Misstrauens kann ich dir Versichern, dass ich nur das geändert habe 😉

    @firefly Du hast Recht, die Variable Datum ist ein CString.



  • @medic89 sagte in SQL-Befehl ausführen:

    @hustbaer Trotz deines Misstrauens kann ich dir Versichern, dass ich nur das geändert habe

    Bist du wirklich sicher, dass du lpszConnect auf CString geändert hast und nicht query? (möglich ist vieles, wenn der Code UB ist)



  • @wob

    Ach sorry, natürlich habe ich quer geändert...🤦🏻♂



  • BTW: Der Thread ist schönes Beispiel dafür warum es eine schlechte Idee ist einen impliziten operator char const* (bzw. operator TCHAR const* o.ä.) anzubieten.

    ps: Und auch ein gutes Beispiel dafür wieso man beim Beschreiben von Fehlern/Änderungen etc. darauf achten sollte genau das zu beschreiben was passiert ist/was man geändert hat etc. Und auch nicht mehr und auch nicht weniger. 😉


Anmelden zum Antworten