ODBCDBE MySQL Count(*) liefert 0

alles zu mySql/mariadb

Moderator: Moderatoren

Antworten
Benutzeravatar
klammerauf
Cut&Paste-Entwickler
Cut&Paste-Entwickler
Beiträge: 40
Registriert: Do, 08. Feb 2007 14:16
Wohnort: 76327 Pfinztal

ODBCDBE MySQL Count(*) liefert 0

Beitrag von klammerauf » Mi, 27. Apr 2011 13:50

Xbase 1.82.294, ODBCDBE, MySQL

Kann mir jemand sagen, warum folgender Programmcode bei Lastrec() eine 1 und bei nLastRec eine 0 zurückliefert?

Danke
Sebastian

Code: Alles auswählen

#pragma Library( "Adac20b.lib" )

PROCEDURE Main()
	LOCAL cConnect
	LOCAL oSession
	LOCAL nLastrec

   cConnect := "DBE=ODBCDBE"
   cConnect += ";DSN=localhost"
   cConnect += ";UID=root"
   cConnect += ";PWD=root"

   oSession := DacSession():New( cConnect )

   DBUSEAREA( TRUE,, "stat_job",,TRUE )
   ? "Lastrec: ", stat_job->( LASTREC() )
   
   SQL "SELECT COUNT(*) FROM stat_job" INTO nLastRec
   ? "SQL-Count: ", nLastRec
   
   oSession:Disconnect()

RETURN

PROCEDURE DbeSys
   DbeLoad( "ODBCDBE" )
   DbeSetDefault( "ODBCDBE" )
RETURN


Benutzeravatar
urbi
Rekursionen-Architekt
Rekursionen-Architekt
Beiträge: 142
Registriert: So, 26. Mär 2006 18:47
Wohnort: 76185 Karlsruhe
Kontaktdaten:

Re: ODBCDBE MySQL Count(*) liefert 0

Beitrag von urbi » Mi, 27. Apr 2011 14:48

Hallo Sebastian,

ich benutze hier den Funktionsaufruf und bekomme korrektes Ergebnis

SQL("SELECT COUNT(*) FROM stat_job") INTO nLastRec

Gruss
Rainer
urbi

Benutzeravatar
Tom
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
Beiträge: 7874
Registriert: Do, 22. Sep 2005 23:11
Wohnort: Berlin
Kontaktdaten:

Re: ODBCDBE MySQL Count(*) liefert 0

Beitrag von Tom » Mi, 27. Apr 2011 15:26

Hallo, Sebastian.

Schau mal in die Doku zu "LastRec()". Da steht unter anderem:

Bei anderen Dateiformaten (Anm. also nicht bei DBF) kann das z.B. ein Wert für den Primärschlüssel sein, der nicht numerisch sein muß.

Kann es sein, dass die Tabelle einen Autoincrement-Primärschlüssel hat? Und dass es schon einmal mindestens einen Datensatz gab?
Herzlich,
Tom

Benutzeravatar
klammerauf
Cut&Paste-Entwickler
Cut&Paste-Entwickler
Beiträge: 40
Registriert: Do, 08. Feb 2007 14:16
Wohnort: 76327 Pfinztal

Re: ODBCDBE MySQL Count(*) liefert 0

Beitrag von klammerauf » Mi, 27. Apr 2011 20:17

Tom,

Danke für die Antwort.

Bei der Mutmaßung ein Volltreffer. Oder doch nicht ganz?

Ich habe einen AutoInc Primärschlüssel, es gibt einen (einzelnen) Datensatz.

phpMyAdmin liefert bei der gleichen Abfrage aber eine 1 zurück. Und entgegen deiner Vermutung ist der Rückgabewert von LastRec() durchaus numerisch und entspricht in diesem Fall ja auch den Tatsachen.

Lastrec() -> 1
ODBCDBE SQL Count(*) -> 0
MySQL Count(*) -> 1

Danke auch urbi, ich werds noch mit dem Funktionsaufruf probieren, bin mir aber irgendwie ziemlich sicher, dass der Precompiler mein Statement im PPO-Code eh schon in einen Funktionsaufruf umwandelt. Ach ja, ich sehe grade dass du irgendwo in Durlach oder Umgebung wohnst. Kann das sein?

Sebastian

Benutzeravatar
urbi
Rekursionen-Architekt
Rekursionen-Architekt
Beiträge: 142
Registriert: So, 26. Mär 2006 18:47
Wohnort: 76185 Karlsruhe
Kontaktdaten:

Re: ODBCDBE MySQL Count(*) liefert 0

Beitrag von urbi » Do, 28. Apr 2011 8:29

Hallo Sebastian,

wenn ich richtig vermute möchtest du die Anzahl der Datensätze ermitteln

versuchs mal so über AutoIncrement (Feld ID):

// erst auf Verbindung prüfen oSession ist STATIC
IF oSession=NIL .or. !oSession:isconnected()
oSession := SQLTEST()
ENDIF
SQL("SELECT ID FROM adres1 WHERE ID=(SELECT MAX(ID) FROM adres1)") VIA oSession
nTotal:=FIELD->ID

Gruss Rainer
ps Wir sind ja fast Nachbarn, bietet sich an sich mal zu treffen.
urbi

Antworten