ich kämpfe mit einem Fehler, der sich leider nicht provozieren läßt und immer wieder auftritt.
Es geht um ein Erfassungsprogramm in dem eine Tabelle zeileweise mit Daten gefüllt wird. Das passiert lokal
auf diversen verschiedenen Erfassungsstationen und funktioniert eigentlich reibungslos. Aber eben nur "eigentlich".
Ab und zu passiert nun folgendes. Der Erfasser bemerkt irgendwann eine Fehler, den er ein paar Zeilen vorher gemacht hat.
Um das zu korregieren klickt er in die entsprechende Zelle und macht seine Änderung. Dieser Klick in die Zelle verursacht nun
in nicht nachvollziebaren Intervallen folgende Fehlermeldung, die soweit ich das sehe besagt, dass ein logischer Wert erwartet
wurde. Eine Eingabe in das angeklickt Feld ist nicht erfolgt. Sie kommt aber auch dann, wenn das Feld, das verlassen wird z.B.
der Name ist und das zu ändernde Feld der Vorname. Da ist nichts mit logischer Rückgabe.
Wenn unmittelbar nach dem Fehler exakt das gleiche gemacht wird, passiert nichts. Der Fehler tritt nicht wieder auf.
Code: Alles auswählen
-----------------------------------------------------------------------------
ERROR LOG of "F:\hosperfa.EXE" Date: 20.10.2010 12:47:29
Xbase++ version : Xbase++ (R) Version 1.90.331
Operating system : Windows XP 05.01 Build 02600 Service Pack 3
------------------------------------------------------------------------------
oError:args :
oError:canDefault : N
oError:canRetry : N
oError:canSubstitute: N
oError:cargo : NIL
oError:description : Parameter has a wrong data type
oError:filename :
oError:genCode : 2
oError:operation :
oError:osCode : 0
oError:severity : 2
oError:subCode : 2311
oError:subSystem : BASE
oError:thread : 1
oError:tries : 0
------------------------------------------------------------------------------
CALLSTACK:
------------------------------------------------------------------------------
Called from DC_XBPGET:SETDATA(602)
Called from DC_GETVALIDATE(6613)
Called from _PROCESSHOTKEY(4132)
Called from DC_GETLIST:EVENTLOOP(3581)
Called from DC_GETLIST:READGUI(2961)
Called from DC_READGUI(202)
Called from MAIN(142)
Code: Alles auswählen
@ 06,01 dcbrowse ob1 alias "hospdb" size 102,30 ;
edit xbeBRW_ItemSelected action {||ob1:forcestable()} ;
mode DCGUI_BROWSE_EDITACROSSDOWN_APPEND ;
font "10.Arial" ;
when {||!empty(vanfang)}
dcbrowsecol field hospdb->name header "Nachname" parent ob1 ;
picture "@!" width 15 font "10.Arial" ;
object fangan
dcbrowsecol field hospdb->vorname header "Vorname" parent ob1 ;
picture "@!" width 15 font "10.Arial"
dcbrowsecol field hospdb->geb header "geboren" parent ob1 ;
width 6 font "10.Arial"
dcbrowsecol field hospdb->behandlung header "Behandlung" parent ob1 ;
width 6 font "10.Arial" ;
valid {||year(behandlung) = vjahr1}
dcbrowsecol field hospdb->nummer header "Nummer" parent ob1 ;
width 08 editprotect {||.t.} ;
font "10.Arial" picture "@R 99-99-999999"
@ 37,01 dcpushbutton caption "Ende " size 10,1 ;
action {||fsicher(getlist),dc_readguievent(DCGUI_EXIT_OK,Getlist)}
@ 37,12 dcpushbutton caption "Einspielen" size 10,1 ;
action {||fabuchen(getlist)}
100 Namen zerschossen wird
Wir haben es echt ausprobiert, in so einer Tabelle mit 100ten von Einträgen wie wild hin und her zu klicken und zu ändern, ohne dass irgendwas pasiert ist.
Und dann erreicht mich der Anruf, das es gekracht hat, als erst ein paar Zeilen erfasst waren.
Die Tabelle ist vorbelegt mit ein paar hundert Leersätzen, in denen nur die Felder "Behandlung" und das Feld "nummer" Daten haben.
Behandlung ist vorbelegt mit dem 1.1. von vorjahr1, liefert also standardmäßig immer .t. und kann nicht verlassen werden, wenn das mit dem Datum
nicht paßt.