ExecuteSQL() wird nicht ausgeführt



  • Hi,
    beim ausführen von ExecuteSQL() wird der Datensatz nicht aktualisiert.
    Dieses Problem taucht nur selten auf und deswegen kann ich es nicht nachvollziehen voran es liegen kann?

    z. B.
    Dieser Code wird im Programm immer aufgerufen wenn ein Vorgang abgeschlossen ist

    CString strSql;
    long lVorlaufigeNr, lNeueNr;

    lVorlaufigeNr = 10001775;
    lNeueNr = 12331;

    try
    {
    //UINT III_ID, LPCTSTR III_TEXTID, LONG lWert
    rs->m_strFilter.Format("L_ID = %d AND STR_ID = '%s'", III_ID, III_TEXTID);
    rs->Requery();
    if(rs->GetRecordCount() > 0 )
    {
    rs->Edit();

    rs->m_L_ID = III_ID;
    rs->m_STR_ID = III_TEXTID;
    rs->m_L_FORMAT = 0;
    rs->m_STR_RET = "";
    rs->m_L_RET = lWert;

    rs->Update();
    }

    strSql.Format("Update MyTabelle Set Nummer = %ld, Status = TRUE Where Nummer = %ld AND Status = FALSE", lNeueNr, lVorlaufigeNr);
    dbDatabase.ExecuteSQL(strSql); // Datensatz wird in seltenen Fällen nicht aktualisiert
    }
    catch(CDBException *e)
    {
    AfxMessageBox(e->m_strError, MB_ICONEXCLAMATION);
    e->Delete();
    return FALSE;
    }

    Hat jemand eine Idee?

    Mfg,
    tocha


  • Mod

    Was ist das für eine DB? MS_SQL?



  • DB Access 2002



  • wie siehst strSQL aus?



  • siehe Quellcode oben!

    ...
    strSql.Format("Update MyTabelle Set Nummer = %ld, Status = TRUE Where Nummer = %ld AND Status = FALSE", lNeueNr, lVorlaufigeNr);



  • zusätzliche Informationen:

    Es sind Datensätze vorhanden.
    Obwohl habe ich bedenken, dass Daten erst nach 5 s. aktualisiert werden (PageTimeout = 5000)

    ODBC: Access 2000
    Visual C++, MFC, Version 6.0

    liegt das Problem ev. beim Open() mit snapshot?
    if( dbDatabase.IsOpen() == 0 )
    return FALSE;

    rs = new CRecSet(&dbDatabase);
    if( !rs->Open(CRecordset::snapshot, "TABELLE", CRecordset::none) )
    {
    dbDatabase.Close();
    AfxMessageBox("Problem beim Öffnen TabelleSet");
    return FALSE;
    }

    Mfg,
    tocha



  • afaik werden sql-commands immer komplett groß geschrieben..

    also

    SELECT * FROM ..blablabla usw
    

    benutz mal bitte code-tags, das sieht schrecklich aus...


  • Mod

    Machine schrieb:

    afaik werden sql-commands immer komplett groß geschrieben..

    Nö, das ist wurscht!



  • ich habe schon öfter seltsame effekte im zusammenhang mit CRecordset::Update beobachtet. hast du schon versucht, das Edit-Update-Konstrukt durch ein SQL-Update-Statement zu ersetzen?


Anmelden zum Antworten