Fehler im Browse

Grafische Primitive, XbaseParts und Darstellungsfragen allgemein.

Moderator: Moderatoren

Antworten
Benutzeravatar
Rolf Ramacher
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
Beiträge: 1930
Registriert: Do, 09. Nov 2006 10:33
Wohnort: Bergheim
Danksagung erhalten: 3 Mal
Kontaktdaten:

Fehler im Browse

Beitrag von Rolf Ramacher »

Guten Morgen

folgende Problematik
ich ahbe einen browse-Anzeige um diese auch per Klick zu sortieren. Wenn ich einen Artikel auswählen möchte muss ich erst auf die Überschrift klicken - mache ich dies nicht erhalte ich eine Fehlermeldung.
Hat jemand eine Idee ?

Code: Alles auswählen

		use (cHeimat+"\TmpBestLArt") New
		Index on lartnr Tag "1" to (cHeimat+"\TmpBestLArt.cdx")
		Index on artnr Tag "2" to (cHeimat+"\TmpBestLArt.cdx")
		Index on text Tag "3" to (cHeimat+"\TmpBestLArt.cdx")
		TmpBestLArt->(OrdSetFocus("1"))

		DbSelectArea("TmpBestLArt")

		oLABrowse := GuiBrowseDb( oDlg, {100,70}, {400,250} )
		If nFarbe > 0
			aPP := {{ XBP_PP_FGCLR       , nFarbe} , ;
		           { XBP_PP_BGCLR       , GRA_CLR_WHITE        }}  
		   oLaBrowse:setPresParam( aPP )
		Endif

	   FOR i=1 TO FCount()
			cField:=FieldName( i ) 
	 		oBrowseCol:=oLABrowse:addColumn(FieldBlock(cField),,cField,,) 
			oBrowseCol:Heading:LbClick := &("{||SortiereLArt("+Ltrim(Str(i,5,0))+"),oLABrowse:RefreshAll()}")

	   NEXT i
		TmpBestLArt->(OrdSetFocus("1"))
		TmpBestLArt->(DbGoTop())
		SortiereLArt(1)
in SortiereLArt erfolgt die sortierung

Code: Alles auswählen

#include "dmlb.ch"
Function SortiereLArt(nPos)
	Local cName:="", cNr:=""

	cNr:=alltrim(str(nPos))
	
	DbSelectArea("TmpBestLArt")
	TmpBestLArt->(OrdSetFocus(cNr))
	TmpBestLArt->(DbGotop())
Return Nil
Gruß Rolf

Mitglied der Gruppe XUG-Cologne
www.xug-cologne.de
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 im Browse

Beitrag von AUGE_OHR »

Rolf Ramacher hat geschrieben:Wenn ich einen Artikel auswählen möchte muss ich erst auf die Überschrift klicken - mache ich dies nicht erhalte ich eine Fehlermeldung.

Code: Alles auswählen

     oBrowseCol:Heading:LbClick := &("{||SortiereLArt("+Ltrim(Str(i,5,0))+"),oLABrowse:RefreshAll()}")
versuche es mal mit

Code: Alles auswählen

   oBrowse:getColumn( nCol ):heading:lbClick := ... 
gruss by OHR
Jimmy
Benutzeravatar
Rolf Ramacher
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
Beiträge: 1930
Registriert: Do, 09. Nov 2006 10:33
Wohnort: Bergheim
Danksagung erhalten: 3 Mal
Kontaktdaten:

Re: Fehler im Browse

Beitrag von Rolf Ramacher »

HI Jimmy

es geht mir nicht um das anklicken. das funkt. ja richtig. Es geht mir darum, das ohne das anklicken eines der Header nicht funktioniert.
Gruß Rolf

Mitglied der Gruppe XUG-Cologne
www.xug-cologne.de
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: Fehler im Browse

Beitrag von Tom »

Die Fehlermeldung wäre sehr hilfreich. Du machst vermutlich in "SortiereArt" etwas, das anderswo gebraucht wird - z. B. Variablen bestücken.
Herzlich,
Tom
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 im Browse

Beitrag von AUGE_OHR »

Rolf Ramacher hat geschrieben:es geht mir nicht um das anklicken. das funkt. ja richtig. Es geht mir darum, das ohne das anklicken eines der Header nicht funktioniert.
das es "funktioniert" heisst ja nicht das es richtig ist sonst würdest du ja keinen Fehler bekommen [-X

Frage : sortiert er wirklich die "richtig" Spalte mit deine Syntax ?

wenn ich c:\ALASKA\XPPW32\Source\samples\basics\GuiBrow\FBROWSE.prg nehme

Code: Alles auswählen

   FOR i:=1 TO F_LEN
      oCol := oBrowse:addColumn( DirBlock( aArray, i ), aHeading[i,1], aHeading[i,2] )
      // Sortierung       
*     oBrowse:getColumn( i ):heading:lbClick := SwitchIndex( i, oBrowse )
      oCol:heading:lbClick := SwitchIndex( i+1, oBrowse )
   NEXT
dann funktioniert oBrowse:getColumn( i ) "richtig" während ich bei oCol i+1 benutzen muss ...
gruss by OHR
Jimmy
Benutzeravatar
Rolf Ramacher
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
Beiträge: 1930
Registriert: Do, 09. Nov 2006 10:33
Wohnort: Bergheim
Danksagung erhalten: 3 Mal
Kontaktdaten:

Re: Fehler im Browse

Beitrag von Rolf Ramacher »

so hier die Funktion sortiereLart

Code: Alles auswählen

#include "dmlb.ch"
Function SortiereLArt(nPos)
	Local cName:="", cNr:=""

	cNr:=alltrim(str(nPos))
	
	DbSelectArea("TmpBestLArt")
	TmpBestLArt->(OrdSetFocus(cNr))
	TmpBestLArt->(DbGotop())
Return Nil
nachstehend der fehler

Code: Alles auswählen

-----------------------------------------------------------------------------
FEHLERPROTOKOLL von "C:\32Bit\Wareneingang.exe" Datum: 04.12.2015 09:12:18

Xbase++ Version     : Xbase++ (R) Version 1.90.331
Betriebssystem      : Windows  06.01 Build 07601 Service Pack 1
------------------------------------------------------------------------------
oError:args         :
          -> VALTYPE: O CLASS: XbpCombobox
          -> VALTYPE: U VALUE: NIL
oError:canDefault   : N
oError:canRetry     : N
oError:canSubstitute: J
oError:cargo        : NIL
oError:description  : Parameter hat falschen Typ
oError:filename     : 
oError:genCode      :          2
oError:operation    : :setData
oError:osCode       :          0
oError:severity     :          2
oError:subCode      :       1025
oError:subSystem    : BASE
oError:thread       :          1
oError:tries        :          0
------------------------------------------------------------------------------
CALLSTACK:
------------------------------------------------------------------------------
Aufgerufen von PRFARTFERTIG(711)
Aufgerufen von AUSWAHLLARTNR(17)
Aufgerufen von (B)SUCHELARTNR(99)
Aufgerufen von SUCHELARTNR(115)
Aufgerufen von (B)MAIN(868)
Aufgerufen von MAIN(1851)
so nochmal in dieser Maske habe ich ausser dem Browse 2 Pushbutton - "auswahl" und "Neu"
Dieser besagte Fehler tritt nur dann auf wenn ich NICHT vorher auf die Überschrift des Browses anklicke. Klicke ich vorher auf die Überschrift erhalte ich diese Fehlermeldung nach "auswahl" NICHT, Auch kann ich dann wenn dort mehrere Artikel zur Auswahl stehen, kann ich nicht direkt runterscrollen. Ich muss vorher auf die Überschrift klicken. Dann klappt alles wie es soll.

Die Frage wie bekomme ich es hin, das es ohne auf das Klicken der Überschrift funktionier.t
Gruß Rolf

Mitglied der Gruppe XUG-Cologne
www.xug-cologne.de
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 im Browse

Beitrag von AUGE_OHR »

Rolf Ramacher hat geschrieben:so hier die Funktion sortiereLart

Code: Alles auswählen

	cNr:=alltrim(str(nPos))
        ...
	TmpBestLArt->(OrdSetFocus(cNr))
hm ... deine TAG Namen sind "1","2" und "3" aber du machst eine Schleife mit

Code: Alles auswählen

FOR i=1 TO FCount()
oder hast du nur 3 Column ?
gruss by OHR
Jimmy
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: Fehler im Browse

Beitrag von Tom »

In "PRFARTFERTIG", Zeile 711 des Quellcodes, versuchst Du, eine Combobox via SetData mit Daten zu bestücken. Das, was in "SetData" an die Combobox übergeben werden soll, ist aber falsch. Möglicherweise ist die Variable leer oder überhaupt nicht definiert. Für letzteres spricht, dass es ja funktioniert, wenn Du vorher Deine Sortierroutine aufrufst. In der geschieht etwas, das ohne Aufruf der Sortierung fehlt.

Du solltest Deine ErrorSys mal erweitern, beispielsweise um die Fehlerargumente (oError:Args, simpel über Var2Char()) und im Idealfall noch um die geöffneten Tabellen (WorkSpaceList(), DbInfo()) und die Indexe (OrdKey(), OrdNumber() usw.) sowie den Alias der selektierten Tabelle. Das würde Dir die Fehlersuche deutlich erleichtern.
Herzlich,
Tom
Antworten