Fehler: Object has no method with this name

Eigentlich ist mir die Frage peinlich, aber es kann sonst niemand helfen ... :)

Moderator: Moderatoren

Antworten
Benutzeravatar
satmax
1000 working lines a day
1000 working lines a day
Beiträge: 831
Registriert: Do, 02. Dez 2010 19:34
Wohnort: Biberbach in Österreich
Hat sich bedankt: 1 Mal
Danksagung erhalten: 1 Mal
Kontaktdaten:

Fehler: Object has no method with this name

Beitrag von satmax »

Wahrscheinlich ein dämlicher Fehler, so fix bin ich mit den Klassen noch nicht, ist mein erster Versuch eine neue Klasse zu schreiben...

Wird einwandfrei übersetzt, zur Laufzeit kommt der Fehler: Object has no method with this name

Code: Alles auswählen

proc main
LOCAL sqlDate

sqlDate:=cSqlDate()
sqlDate:new()

if sqlDate = NIL 
   ? "Fehler sqlDate=NIL"
endif

? sqlDate:getSqlDate()   // Fehler: Object has no method with this name
inkey(0)
return

CLASS cSqlDate 
	class VAR cDate
	class VAR cTime
	class VAR cTimeH
	class VAR SqlDate

exported:
	
	class method initClass
	method getSqlDat

endclass

class method cSqlDate:initClass()
::cDate := "01.01.1900"
::cTime := "00:00"
::cTimeH:= "000"
::SqlDate:=::cDate+ ::cTime+" "+::cTimeH

RETURN self

METHOD cSqlDate:getSqlDat() 

RETURN ::SqlDate
Die Methode gibt es aber.
Gruß
Markus
Benutzeravatar
Manfred
Foren-Administrator
Foren-Administrator
Beiträge: 21165
Registriert: Di, 29. Nov 2005 16:58
Wohnort: Kreis Wesel
Hat sich bedankt: 206 Mal
Danksagung erhalten: 67 Mal

Re: Fehler: Object has no method with this name

Beitrag von Manfred »

Hi,

lass mal das e am Ende weg. ich sehe nur getSqlDat
Gruß Manfred
Mitglied der XUG Osnabrück
Schatzmeister des Deutschsprachige Xbase-Entwickler e.V.
großer Fan des Xbaseentwicklerwiki https://wiki.xbaseentwickler.de/index.p ... Hauptseite
Doof kann man sein, man muß sich nur zu helfen wissen!!
Benutzeravatar
satmax
1000 working lines a day
1000 working lines a day
Beiträge: 831
Registriert: Do, 02. Dez 2010 19:34
Wohnort: Biberbach in Österreich
Hat sich bedankt: 1 Mal
Danksagung erhalten: 1 Mal
Kontaktdaten:

Re: Fehler: Object has no method with this name

Beitrag von satmax »

Manfred hat geschrieben:Hi,
lass mal das e am Ende weg. ich sehe nur getSqlDat
NEIN, das darf nicht war sein! :banghead:

Sollte getSqlDate werden, danke!

Code: Alles auswählen

proc main
LOCAL sqlDate

sqlDate:=cSqlDate()
sqlDate:new()


? sqlDate:getSqlDate()   
inkey(0)
return

CLASS cSqlDate //  from XbpStatic
        class VAR cDate
        class VAR cTime
        class VAR cTimeH
        class VAR SqlDate

exported:

        class method initClass
        class method getSqlDate

endclass

class method cSqlDate:initClass()
::cDate := "01.01.1900"
::cTime := "00:00"
::cTimeH:= "000"
::SqlDate:=::cDate+" "+::cTime+" "+::cTimeH

RETURN self

CLASS METHOD cSqlDate:getSqlDate()

RETURN ::SqlDate
Gruß
Markus
Benutzeravatar
Manfred
Foren-Administrator
Foren-Administrator
Beiträge: 21165
Registriert: Di, 29. Nov 2005 16:58
Wohnort: Kreis Wesel
Hat sich bedankt: 206 Mal
Danksagung erhalten: 67 Mal

Re: Fehler: Object has no method with this name

Beitrag von Manfred »

kein Problem, passiert jedem mal und deshalb soll man einfach mal 2 andere Augen drüberschauen lassen. 8)
Gruß Manfred
Mitglied der XUG Osnabrück
Schatzmeister des Deutschsprachige Xbase-Entwickler e.V.
großer Fan des Xbaseentwicklerwiki https://wiki.xbaseentwickler.de/index.p ... Hauptseite
Doof kann man sein, man muß sich nur zu helfen wissen!!
Benutzeravatar
satmax
1000 working lines a day
1000 working lines a day
Beiträge: 831
Registriert: Do, 02. Dez 2010 19:34
Wohnort: Biberbach in Österreich
Hat sich bedankt: 1 Mal
Danksagung erhalten: 1 Mal
Kontaktdaten:

Re: Fehler: Object has no method with this name

Beitrag von satmax »

Swups, das ist auf die Schnelle daraus geworden:

Code: Alles auswählen

// SQL Datum
// "01.01.1900 00:00:00.000"
proc main
LOCAL sqlDate

SET DATE TO GERMAN

sqlDate:=cSqlDate()
sqlDate:new()


? "sqlDate:getDateAsString() "
? sqlDate:getDateAsString()
? "sqlDate:getDateAsDate() "
? sqlDate:getDateAsDate()
?  "sqlDate:getSqlDateTime() "
?  sqlDate:getSqlDateTime()
?
? 'sqlDate:setDateTime("07.10.2014 14:30:00.100") '
? sqlDate:setDateTime("07.10.2014 14:30:00.100")   
?
? "sqlDate:getDateAsString() "
? sqlDate:getDateAsString()
? "sqlDate:getDateAsDate() "
? sqlDate:getDateAsDate()
?  "sqlDate:getSqlDateTime() "
?  sqlDate:getSqlDateTime()
?
? "Taste"
inkey(0)

? 'sqlDate:setDate("15.10.2014 15:55:55.555") Zeit wird ignoriert'  
? sqlDate:setDate("15.10.2014 15:55:55.555")   
? sqlDate:getDateAsString()
? "+ 1 Tag"
? sqlDate:getDateAsDate()+1

sqlDate:setDate("16.10.2014")   
? "sqlDate:getDateAsString() "
? sqlDate:getDateAsString()
? "sqlDate:getDateAsDate() "
? "+ 1 Tag"
? sqlDate:getDateAsDate()+1
?  "sqlDate:getSqlDateTime() "
?  sqlDate:getSqlDateTime()
 

? "Rechnen + 25 Tage"

? sqlDate:getDateAsDate() +25 // Tage

? 'sqlDate:setTime("12:00:00") '
? sqlDate:setTime("12:00:00")

?  "sqlDate:getSqlDateTime() "
?  sqlDate:getSqlDateTime()

? 'sqlDate:setTime("12:00:00.123") '
? sqlDate:setTime("12:00:00.123")

?  "sqlDate:getSqlDateTime() "
?  sqlDate:getSqlDateTime()


? "Taste"
inkey(0)
return


// Verschiedenen Methoden umd mit dem SQL DateTime zu arbeiten
// Noch keine Zeitberechnung
CLASS cSqlDate 
        class VAR cDate
        class VAR cTime
        class VAR cTimeH
        class VAR SqlDate

exported:
        class method initClass
        
        class method setDate
        class method setDateTime
        class method setTime
        
        class method getSqlDateTime
        class method getDateAsString
        class method getDateAsDate
endclass

// Initilaisiert mit dem Datum 01.01.1900 00:00:00.000
class method cSqlDate:initClass()
::cDate := "01.01.1900"
::cTime := "00:00:00"
::cTimeH:= "000"
::SqlDate:=::cDate+" "+::cTime+"."+::cTimeH
RETURN self

// Liefert das komplette Datum im SQL Format 01.01.1900 00:00:00.000
CLASS METHOD cSqlDate:getSqlDateTime
RETURN ::cDate+" "+::cTime+"."+::cTimeH

// Liefert das Datum als String 01.01.1900 
CLASS METHOD cSqlDate:getDateAsString()
RETURN SubStr(::cDate,1,10)

// Liefert das Datum als Datum (rechnen möglich) 01.01.1900 
CLASS METHOD cSqlDate:getDateAsDate()
RETURN CtoD(::getDateAsString())


// Setzt das Datum, Zeit bleibt erhalten und/oder wird ignoriert
// LIEFERT: sqlDate 01.01.1900 00:00:00.000
CLASS METHOD cSqlDate:setDate(sqlDate)
// "01.01.1900 00:00:00.000"
::cDate := SubStr(sqlDate,1,10)
::SqlDate:=::cDate+" "+::cTime+"."+::cTimeH
RETURN ::SqlDate

// Setzt Datum und Zeit 
// Erwartet  01.01.1900 00:00:00.000
// LIEFERT: sqlDate 01.01.1900 00:00:00.000
CLASS METHOD cSqlDate:setDateTime(sqlDate)
::cDate := SubStr(sqlDate,1,10)
::cTime := SubStr(sqlDate,12,8)
::cTimeH:= SubStr(sqlDate,21,3)
::SqlDate:=::cDate+" "+::cTime+"."+::cTimeH
RETURN ::SqlDate

// Setzt die Zeit, Datum beibt erhalten
// IN: cZeit "00:00:00" oder "00:00:00.000"
// LIEFERT: sqlDate 01.01.1900 00:00:00.000
CLASS METHOD cSqlDate:setTime(sqlTime)

::cTime := SubStr(sqlTime,1,8)
::cTimeH:= PADR(SubStr(sqlTime,10,3),3,"0")
::SqlDate:=::cDate+" "+::cTime+"."+::cTimeH
RETURN ::SqlDate

Was mir noch fehlt ist die Zeitberechnung.
Gruß
Markus
georg
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
Beiträge: 2823
Registriert: Fr, 08. Feb 2008 21:29
Hat sich bedankt: 95 Mal
Danksagung erhalten: 13 Mal

Re: Fehler: Object has no method with this name

Beitrag von georg »

Hallo, Markus -


da Du hier immer ein festes Format vorfindest, eine eigene Funktion schreiben, das Datum und die Uhrzeit auseinanderfieseln und selbst rechnen.

Geht am schnellsten.
Liebe Grüsse aus der Eifel,

Georg S. Lorrig
Redakteur der Wiki des Deutschprachigen Xbase-Entwickler e.V.
Benutzeravatar
satmax
1000 working lines a day
1000 working lines a day
Beiträge: 831
Registriert: Do, 02. Dez 2010 19:34
Wohnort: Biberbach in Österreich
Hat sich bedankt: 1 Mal
Danksagung erhalten: 1 Mal
Kontaktdaten:

Re: Fehler: Object has no method with this name

Beitrag von satmax »

georg hat geschrieben:Hallo, Markus -


da Du hier immer ein festes Format vorfindest, eine eigene Funktion schreiben, das Datum und die Uhrzeit auseinanderfieseln und selbst rechnen.

Geht am schnellsten.
Ja, dazu habe ich begonnen die obige Klasse zu schreiben. So kann ich einfach nur die Zeit oder nur das Datum setzen und lesen.
Gruß
Markus
Benutzeravatar
AUGE_OHR
Marvin
Marvin
Beiträge: 12903
Registriert: Do, 16. Mär 2006 7:55
Wohnort: Hamburg
Hat sich bedankt: 19 Mal
Danksagung erhalten: 44 Mal

Re: Fehler: Object has no method with this name

Beitrag von AUGE_OHR »

Anmerkung : die Verwendung von "Class METHOD" ist nicht unbedingt notwendig, es reicht METHOD oder INLINE METHOD.

ich kenne hauptsächlich die "CLASS METHOD initClass" welche von einer Class, am Anfang, automatisch ausgeführt wird.
eine "CLASS METHOD" wird üblicherweise nur von der Class benutzt um auf iVar zuzugreifen.
gruss by OHR
Jimmy
Antworten