CLOSE DATABASES CLEAR ALL USE C:\fmsrun\PROMPT\WorkList_Detail.dbf SCAN SCATTER NAME oWorkListDetail =Obj2Cursor(oWorkListDetail,'csrTemp') IF !USED('csrWorkListDetail') SELECT * FROM csrTemp WHERE .F. INTO CURSOR csrWorkListDetail READWRITE ENDIF SELECT csrWorkListDetail APPEND FROM DBF('csrTemp') SELECT WorkList_Detail ENDSCAN SELECT csrWorkListDetail BROWSE LAST>>I want to loop through an object and evaluate each value.
> >* obj2cursor > >LPARAMETERS toObject, tcCursor, tcOpt >LOCAL lcCursor, lcOpt, lvPropVal, lcPropName, lnI, laStru[1], lnRows, lcPropType > >lcCursor = IIF( Empty( tcCursor) Or VarType(tcCursor) <> "C", SYS(2015), tcCursor) >lcOpt = UPPER(IIF( Empty( tcOpt) Or VarType(tcOpt) <> "C", "", tcOpt)) > >lcCmd = "CREATE CURSOR " + lcCursor > >lnCount = AMEMBERS(laProps, toObject, 0) >DIMENSION laStru(lnCount, 16) >laStru = "" > >lnRows = 0 > >FOR lnI=1 TO lnCount > lcPropName = LOWER(laProps[lnI]) > lvPropVal = EVALUATE( "toObject." + lcPropName) > lcPropType = TYPE("toObject." + lcPropName) > > lnDp = 0 > DO CASE > CASE lcPropType = "C" > lnSize = LEN(lvPropVal) > IF lnSize = 0 > lnSize = 1 > ENDIF > IF lnSize > 254 > lcPropType = "M" > lnSize = 0 > ENDIF > CASE lcPropType = "L" > lnSize = 0 > CASE lcPropType = "D" > lnSize = 0 > CASE lcPropType = "T" > lnSize = 0 > CASE lcPropType = "N" > lcVal = ALLTRIM(PADL(lvPropVal,20)) > lnSize = LEN(lcVal) > IF "." $ lcVal > lnDp = lnSize - RAT(".", lcVal) > ELSE > lcPropType = "I" > lnSize = 0 > ENDIF > OTHERWISE > * Unsupported data types > LOOP > ENDCASE > > lnRows = lnRows + 1 > > laStru[lnRows, 1] = lcPropName > laStru[lnRows, 2] = lcPropType > laStru[lnRows, 3] = lnSize > laStru[lnRows, 4] = lnDp > laStru[lnRows, 5] = .T. > laStru[lnRows, 6] = .F. > > >ENDFOR > >IF lnRows > 0 > DIMENSION laStru(lnRows, 16) > * Make a cursor with fields defined by laStru > CREATE CURSOR (lcCursor) FROM ARRAY laStru > INSERT INTO (lcCursor) FROM NAME toObject > llOk = .T. >ELSE > llOk = .F. >ENDIF > >RETURN llOk >