Zeos und RowsAffected



  • Dumme Frage:
    Sollte RowsAffected nicht die Anzahl der modifizierten Datensätze zurückgeben? Bei einem Select werden keine Datensätze modifiziert.



  • schon möglich, aber bei dem blöden dbexpress query hat das immer so funktioniert.


  • Mod

    Hallo

    ich glaube nicht das das so funktioniert hat

    ZQuery1->SQL->Add( "SELECT urls FROM urls where id = 1;"); ZQuery1->ExecSQL();

    Problem ist SELECT und ExecSQL (schau dirs mal in der Hilfe an)
    (wozu wird ExecSQL verwendet und wozu Open)

    MfG
    Klaus



  • Executes the SQL statement for the query.

    void __fastcall ExecSQL(void);

    Description

    Call ExecSQL to execute the SQL statement currently assigned to the SQL property. Use ExecSQL to execute queries that do not return a cursor to data (such as INSERT, UPDATE, DELETE, and CREATE TABLE).

    Note: For SELECT statements, call Open instead of ExecSQL.

    ExecSQL prepares the statement in SQL property for execution if it has not already been prepared. To speed performance, an application should ordinarily call Prepare before calling ExecSQL for the first time.

    Tatsache. 🤡 Trotzdem!



  • Das ist doch genau das, was ich gesagt habe: RowsAffected funktioniert nicht mit SELECT.... 😉



  • Joe_M. schrieb:

    Dumme Frage:
    Sollte RowsAffected nicht die Anzahl der modifizierten Datensätze zurückgeben? Bei einem Select werden keine Datensätze modifiziert.

    und es geht doch

    ADOQuery1->SQL->Clear();
    	ADOQuery1->SQL->Add("SELECT urls FROM urls where id = 1;");
    	ADOQuery1->Open();
    	while (!ADOQuery1->Eof)
    	{
    		ADOQuery1->Edit(); //Datensatz Bearbeitungsmodus
    		ADOQuery1->FieldByName("urls")->AsString = ""; //löschen der URL
    		ADOQuery1->Post(); //Datensatz speichern
    		ADOQuery1->Next(); //zum nächsten Datensatz
    	}
    	ADOQuery1->Close();
    

    auch wenn man es nicht mehr machen sollte 😋



  • @aahhjaa:

    Es ging darum, per ExexSQL ein reines SELECT Statment auszuführen und mir RowsAffected die Anzahl der Datensätze zu ermitteln...



  • Joe_M. schrieb:

    Das ist doch genau das, was ich gesagt habe: RowsAffected funktioniert nicht mit SELECT.... 😉

    und wie kommst du dann auf diese Aussage?
    wenn du jetzt schreibts

    Joe_M. schrieb:

    Es ging darum, per ExexSQL ein reines SELECT Statment auszuführen und mir RowsAffected die Anzahl der Datensätze zu ermitteln...

    Obwohl KlausB den Unterschied zwischen Open() und ExexSQL() begesteuert hat?
    und von deiner Seite kein Wort darüber geschrieben wurde?

    Gruß
    Der Kniebohrer 😉



  • hä?
    Es ist doch jetzt klar das ExecSQL keinen Rückgabewert bei einem Select hat, oder haben sollte.
    Ich bin da allerdings immer noch anderer Meinung weil das meiner Meinung nach mit einem DBExpress Query funktioniert.



  • Okay, ich war tatsächlich auf dem Holzweg, ich hatte das damals mit einem Update gemacht, und dachte es war mit einem Select. Hab es jetzt extra nochmal ausprobiert. Es geht tatsächlich NICHT!



  • @aahhjaa: Ehrlich gesagt, weiß ich gar nicht, was Du mir sagen willst?!?

    Edit: Warum sollte ich erneut auf den Lösungsweg hinweisen, wenn KlausB das bereits getan hat, ich habe nur die Erklärung geliefert, warum RowsAffected in dem Fall nicht funktioniert.


Anmelden zum Antworten