Zeos und RowsAffected
-
Hallo
machs doch so
ZQuery1->SQL->Clear(); ZQuery1->SQL->Add( "SELECT urls FROM urls where id = 1;"); ZQuery1->Open(); if (ZQuery1->RecordCount > 0) { //Datensatz ist vorhanden }(moeglicherweise lag es an ExecSQL - gibt nichts zurueck -)
MfG
Klaus
-
oder besser:
try {
ZQuery1->Active = false;
ZQuery1->SQL->Clear();
ZQuery1->SQL->Add( "SELECT urls FROM urls where id = 1;");
ZQuery1->Active = true;
if (ZQuery1->RecordCount > 0){
//Datensatz ist vorhanden
}
ZQuery1->Active = false;
} catch(...){
//
}
-
Jetzt geht es DANKESCHÖN!!
-
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.
-
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 schreibtsJoe_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.