In order for this site to work correctly we need to store a small file (called a cookie) on your computer. Most every site in the world does this, however since the 25th of May 2011, by law we have to get your permission first. Please abandon the forum if you disagree.

Para que este foro funcione correctamente es necesario guardar un pequeño fichero (llamado cookie) en su ordenador. La mayoría de los sitios de Internet lo hacen, no obstante desde el 25 de Marzo de 2011 y por ley, necesitamos de su permiso con antelación. Abandone este foro si no está conforme.

SaveToArray problem

Xailer professional forum in English
Responder
g.s.rogers
Mensajes: 202
Registrado: Dom Feb 17, 2008 3:35 am

SaveToArray problem

Mensaje por g.s.rogers »

When I try to save an array to aItems of a combobox control using this:
// look up codes for DMO's filtered by county civil module
::oDbfDataSetDMOCodes:Filter("CADOCUMT->MODULE == 'CCIVIL '")
oSender:aItems := ::oDbfDataSetDMOCodes:SaveToArray(
{"DOCUCODE","DOCUDESC"} )
oSender:aItemsBound := ::oDbfDataSetDMOCodes:SaveToArray(
{"DOCUCODE","DOCUDESC"} )
I get this error:
Subsystem Call: BASE
System Code: 1101
Default Status: .F.
Description: Argument error
Operation: LTRIM
Arguments: [ 1] = Type: A Val:
Involved File:
Dos Error Code: 0
I have the nDataType of the control set to dtBOUND and the nStyle set to
cDROPDOWNLIST. The combobox works with a single value, but not with the
above array. What am I doing wrong?
TIA,
Gary
Avatar de Usuario
ignacio
Site Admin
Mensajes: 9469
Registrado: Lun Abr 06, 2015 8:00 pm
Ubicación: Madrid, Spain
Contactar:

SaveToArray problem

Mensaje por ignacio »

Gary,
I am afraid there is not any call to function LTRIM() on method SaveToArray(). Please send a sample:
//---------------------------------------------------------- ----------------
METHOD SaveToArray( aFields, bFor, bWhile ) CLASS XDbfDataSet
LOCAL aData := {}
LOCAL aTemp
LOCAL xValue
LOCAL bEval
LOCAL nFor
IF aFields == NIL
aFields := {}
Aeval( ::aFields, {|v| Aadd( aFields, v:cDbfName ) } )
ENDIF
IF Valtype( aFields ) != "A"
aFields := { aFields }
ENDIF
FOR nFor := 1 TO Len( aFields )
xValue := aFields[ nFor ]
IF Valtype( xValue ) == "C"
aFields[ nFor ] := COMPILAR( ::cAlias + "->" + xValue )
ENDIF
NEXT
IF Len( aFields ) == 1
bEval := {|| AAdd( aData, Eval( aFields[ 1 ], Self, Len( aData ) + 1 ) ) }
ELSE
aTemp := Array( Len( aFields ) )
bEval := {|| AEval(aFields, {|v, e| aTemp[ e ] := Eval( v, Self ) } ), AAdd(aData, AClone( aTemp ) ) }
ENDIF
::SaveState()
( ::cAlias )->( DbEval( bEval, bFor, bWhile ) )
::RestoreState()
RETURN aData
Regards,
--
Ignacio Ortiz de Zúñiga
Xailer support / Soporte de Xailer
http://www.xailer.com
http://www.xailer.info
"Gary S. Rogers" <g.s.rogers@att.net> escribió en el mensaje news:4a6205ec$[email=1@svctag-j7w3v3j....]1@svctag-j7w3v3j....[/email]
> When I try to save an array to aItems of a combobox control using this:
>
> // look up codes for DMO's filtered by county civil module
> ::oDbfDataSetDMOCodes:Filter("CADOCUMT->MODULE == 'CCIVIL '")
> oSender:aItems := ::oDbfDataSetDMOCodes:SaveToArray(
> {"DOCUCODE","DOCUDESC"} )
> oSender:aItemsBound := ::oDbfDataSetDMOCodes:SaveToArray(
> {"DOCUCODE","DOCUDESC"} )
>
> I get this error:
>
> Subsystem Call: BASE
> System Code: 1101
> Default Status: .F.
> Description: Argument error
> Operation: LTRIM
> Arguments: [ 1] = Type: A Val:
> Involved File:
> Dos Error Code: 0
>
> I have the nDataType of the control set to dtBOUND and the nStyle set to
> cDROPDOWNLIST. The combobox works with a single value, but not with the
> above array. What am I doing wrong?
> TIA,
> Gary
>
>
--
Ignacio Ortiz de Zúñiga
[OZ Software]
https://www.ozs.es
--
[Equipo de Xailer / Xailer team]
https://www.xailer.com
Avatar de Usuario
ignacio
Site Admin
Mensajes: 9469
Registrado: Lun Abr 06, 2015 8:00 pm
Ubicación: Madrid, Spain
Contactar:

SaveToArray problem

Mensaje por ignacio »

Gary,
I am afraid there is not any call to function LTRIM() on method SaveToArray(). Please send a sample:
//---------------------------------------------------------- ----------------
METHOD SaveToArray( aFields, bFor, bWhile ) CLASS XDbfDataSet
LOCAL aData := {}
LOCAL aTemp
LOCAL xValue
LOCAL bEval
LOCAL nFor
IF aFields == NIL
aFields := {}
Aeval( ::aFields, {|v| Aadd( aFields, v:cDbfName ) } )
ENDIF
IF Valtype( aFields ) != "A"
aFields := { aFields }
ENDIF
FOR nFor := 1 TO Len( aFields )
xValue := aFields[ nFor ]
IF Valtype( xValue ) == "C"
aFields[ nFor ] := COMPILAR( ::cAlias + "->" + xValue )
ENDIF
NEXT
IF Len( aFields ) == 1
bEval := {|| AAdd( aData, Eval( aFields[ 1 ], Self, Len( aData ) + 1 ) ) }
ELSE
aTemp := Array( Len( aFields ) )
bEval := {|| AEval(aFields, {|v, e| aTemp[ e ] := Eval( v, Self ) } ), AAdd(aData, AClone( aTemp ) ) }
ENDIF
::SaveState()
( ::cAlias )->( DbEval( bEval, bFor, bWhile ) )
::RestoreState()
RETURN aData
Regards,
--
Ignacio Ortiz de Zúñiga
Xailer support / Soporte de Xailer
http://www.xailer.com
http://www.xailer.info
"Gary S. Rogers" <g.s.rogers@att.net> escribió en el mensaje news:4a6205ec$[email=1@svctag-j7w3v3j....]1@svctag-j7w3v3j....[/email]
> When I try to save an array to aItems of a combobox control using this:
>
> // look up codes for DMO's filtered by county civil module
> ::oDbfDataSetDMOCodes:Filter("CADOCUMT->MODULE == 'CCIVIL '")
> oSender:aItems := ::oDbfDataSetDMOCodes:SaveToArray(
> {"DOCUCODE","DOCUDESC"} )
> oSender:aItemsBound := ::oDbfDataSetDMOCodes:SaveToArray(
> {"DOCUCODE","DOCUDESC"} )
>
> I get this error:
>
> Subsystem Call: BASE
> System Code: 1101
> Default Status: .F.
> Description: Argument error
> Operation: LTRIM
> Arguments: [ 1] = Type: A Val:
> Involved File:
> Dos Error Code: 0
>
> I have the nDataType of the control set to dtBOUND and the nStyle set to
> cDROPDOWNLIST. The combobox works with a single value, but not with the
> above array. What am I doing wrong?
> TIA,
> Gary
>
>
--
Ignacio Ortiz de Zúñiga
[OZ Software]
https://www.ozs.es
--
[Equipo de Xailer / Xailer team]
https://www.xailer.com
Responder