dcbrowse ...

Moderator: Moderatoren

dcbrowse ...

Beitragvon XBaseAzubi » Do, 30. Jun 2016 9:33

Hallo!
Ich bekomme beim Öffnen der Anwendung die Fehlermeldung: "Fehler BASE/2266. Empfänger der Nachrichten ist kein Objekt. Operation: dataSource
Dabei soll nur unter anderem zu Beginn ein leeres Browse-Objekt angezeigt werden.

Code: Alles auswählen
CLASS Kassa
...   
   EXPORTED:
   VAR aKassa
   VAR oArtikel
...
ENDCLASS

method Kassa:show
   ::aKassa:={NIL,NIL,NIL,NIL,NIL,NIL,NIL,NIL,NIL,NIL,NIL,NIL,NIL,NIL,NIL}

...
@ 10,0 dcbrowse ::oArtikel DATA ::aKassa SIZE 99,25 TABSTOP OPTIMIZE
            dcbrowsecol DATA {||DC_GetColArray(1 ,::aKassa)} HEADER "KassenID" PARENT ::oArtikel PROTECT {||.t.}
...
return

Bitte wo habe ich den Denkfehler?

Danke
Martin
XBaseAzubi
Rookie
Rookie
 
Beiträge: 10
Registriert: Fr, 13. Mai 2016 8:14
Wohnort: Tattendorf/Österreich

Re: dcbrowse ...

Beitragvon brandelh » Do, 30. Jun 2016 9:36

bei normalen Browsern muss man leere Strings oder Zahlen angeben, NIL mag der gar nicht.
Gruß
Hubert
Benutzeravatar
brandelh
Foren-Moderator
Foren-Moderator
 
Beiträge: 13384
Registriert: Mo, 23. Jan 2006 21:54
Wohnort: Germersheim

Re: dcbrowse ...

Beitragvon Tom » Do, 30. Jun 2016 9:56

Falsch ist der zweite Parameter von DC_GetColArray. Da muss das Browse-Objekt angegeben werden:

Code: Alles auswählen
DATA {||DC_GetColArray(1 ,::oArtikel)}


Ach so: DC_GetColArray() gibt bei leeren Arrays immer einen String zurück. Das ist gefährlich, wenn man Arrays browsen will, die spaltenweise andere Daten enthalten und dort anders formatieren. Dies nur als Hinweis. Man kann das so abfangen:

Code: Alles auswählen
DATA {||IF(Len(oBrowse:dataSource)>0,DC_GetColArray(1 ,oBrowse),0.00)} HEADER 'Preis'

Bei Strings ist das nicht nötig.
Herzlich,
Tom
Benutzeravatar
Tom
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
 
Beiträge: 6708
Registriert: Do, 22. Sep 2005 23:11
Wohnort: Berlin

Re: dcbrowse ...

Beitragvon Tom » Do, 30. Jun 2016 13:40

Ergänzung:

Das:

Code: Alles auswählen
::aKassa:={NIL,NIL,NIL,NIL,NIL,NIL,NIL,NIL,NIL,NIL,NIL,NIL,NIL,NIL,NIL}


ist ein eindimensionales Array. Das geht sowieso nicht (zu browsende Arrays müssen zweidimensional sein, es sei denn, man hat ziemlich komplexe DATA-Codeblöcke gebaut), ist aber nicht für den Fehler verantwortlich. Es müsste so aussehen:

Code: Alles auswählen
::aKassa:={{NIL,NIL,NIL,NIL,NIL,NIL,NIL,NIL,NIL,NIL,NIL,NIL,NIL,NIL,NIL}}


Eigentlich aber reicht das hier:

Code: Alles auswählen
::aKassa:={}


DCBROWSE kann das, wie gesagt, aber der Parameter in DC_GetColArray ist falsch.
Herzlich,
Tom
Benutzeravatar
Tom
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
 
Beiträge: 6708
Registriert: Do, 22. Sep 2005 23:11
Wohnort: Berlin


Zurück zu eXpress++

Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 2 Gäste