ODBCDBE MySQL Count(*) liefert 0

alles zu mySql/mariadb

Moderator: Moderatoren

Antworten
Benutzeravatar
klammerauf
UDF-Programmierer
UDF-Programmierer
Beiträge: 67
Registriert: Do, 08. Feb 2007 14:16
Wohnort: Karlsruhe
Hat sich bedankt: 3 Mal

ODBCDBE MySQL Count(*) liefert 0

Beitrag von klammerauf »

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

Exzessiver Codeblock Programmierer
--
Grüße
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 »

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: 9345
Registriert: Do, 22. Sep 2005 23:11
Wohnort: Berlin
Hat sich bedankt: 100 Mal
Danksagung erhalten: 359 Mal
Kontaktdaten:

Re: ODBCDBE MySQL Count(*) liefert 0

Beitrag von Tom »

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
UDF-Programmierer
UDF-Programmierer
Beiträge: 67
Registriert: Do, 08. Feb 2007 14:16
Wohnort: Karlsruhe
Hat sich bedankt: 3 Mal

Re: ODBCDBE MySQL Count(*) liefert 0

Beitrag von klammerauf »

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
Exzessiver Codeblock Programmierer
--
Grüße
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 »

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