Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- * Genera un cursor a partir de un string de definicion + datos tipo:
- * Codigo I |Nombre C(15) |Direccion C(15)|Datos1 C(15) |Datos2 C(15) |Datos3 C(15) |Nrocui I
- * 1 |JUAN PEREZ |DIRECCION |.NULL. |.NULL. |.NULL. | 201130
- * 7 |MARIO LOPEZ |.NULL. |.NULL. |OTRO DATO |.NULL. | 123456
- FUNCTION StrToDBF(sAlias, sDatos)
- LOCAL sFields, sTmp, axFld[1], nFld, sFld, sType
- SET MEMOWIDTH TO 1024
- sFields = STRTRAN(MLINE(sDatos, 1), "|", " NULL ,")
- sTmp = ADDBS(SYS(2023)) + "app.tmp"
- STRTOFILE(sDatos, sTmp)
- CREATE CURSOR (sAlias) ( &sFields )
- APPEND FROM (sTmp) DELIMITED WITH CHARACTER "|"
- DELETE RECORD 1 && Titulos
- FOR nFld = 1 TO AFIELDS(axFld)
- sFld = axFld[nFld, 1]
- sType = axFld[nFld, 2]
- IF sType=="C"
- REPLACE (sFld) WITH .NULL. FOR &sFld =".NULL."
- ENDIF
- NEXT
- GO TOP
- RETURN
- #define CRLF CHR(13)+CHR(10)
- #define SEP " |"
- * Vuelca una tabla a un string separandola con | , ej:
- * CODIGO |NOMBRE |DIRECCION |DATOS1 |DATOS2 |DATOS3 |NROCUI |
- * 6 |MARIO LOPEZ |DIRECCION #2 |.NULL. |OTRO DATO |.NULL. |123456 |
- * 3 |JUAN PEREZ |DIRECCION |CORRECTO |DATOS |OTRO DATO |201130 |
- FUNCTION DBFToStr(sAlias)
- LOCAL axFld[1], nFlds, nFld, sFld, sType, anLen[1], nLen, sStr
- sAlias = EVL(sAlias, ALIAS())
- sStr = ""
- nFlds = AFIELDS(axFld, sAlias)
- FOR nFld = 1 TO nFlds
- sFld = axFld[nFld, 1]
- sType = axFld[nFld, 2]
- nLen = axFld[nFld, 3]
- IF sType=="C" && Autoajusto columna
- SELECT MAX(LEN(ALLTRIM(&sFld ))) FROM (sAlias) INTO ARRAY anLen
- nLen = anLen[1]
- ENDIF
- nLen = MAX(nLen, LEN(sFld))
- axFld[nFld, 3] = nLen
- sStr = sStr + PADR(sFld, nLen) + SEP
- NEXT
- SCAN
- sStr = sStr + CRLF
- FOR nFld = 1 TO nFlds
- sFld = axFld[nFld, 1]
- nLen = axFld[nFld, 3]
- sStr = sStr + PADR(TRANSFORM(EVALUATE(sFld)), nLen) + SEP
- NEXT
- ENDSCAN
- RETURN sS
- * Codigo I |Nombre C(15) |Direccion C(15)|Datos1 C(15) |Datos2 C(15) |Datos3 C(15) |Nrocui I
- * 1 |JUAN PEREZ |DIRECCION |.NULL. |.NULL. |.NULL. | 201130
- * 7 |MARIO LOPEZ |.NULL. |.NULL. |OTRO DATO |.NULL. | 123456
- FUNCTION StrToDBF(sAlias, sDatos)
- LOCAL sFields, sTmp, axFld[1], nFld, sFld, sType
- SET MEMOWIDTH TO 1024
- sFields = STRTRAN(MLINE(sDatos, 1), "|", " NULL ,")
- sTmp = ADDBS(SYS(2023)) + "app.tmp"
- STRTOFILE(sDatos, sTmp)
- CREATE CURSOR (sAlias) ( &sFields )
- APPEND FROM (sTmp) DELIMITED WITH CHARACTER "|"
- DELETE RECORD 1 && Titulos
- FOR nFld = 1 TO AFIELDS(axFld)
- sFld = axFld[nFld, 1]
- sType = axFld[nFld, 2]
- IF sType=="C"
- REPLACE (sFld) WITH .NULL. FOR &sFld =".NULL."
- ENDIF
- NEXT
- GO TOP
- RETURN
- #define CRLF CHR(13)+CHR(10)
- #define SEP " |"
- * Vuelca una tabla a un string separandola con | , ej:
- * CODIGO |NOMBRE |DIRECCION |DATOS1 |DATOS2 |DATOS3 |NROCUI |
- * 6 |MARIO LOPEZ |DIRECCION #2 |.NULL. |OTRO DATO |.NULL. |123456 |
- * 3 |JUAN PEREZ |DIRECCION |CORRECTO |DATOS |OTRO DATO |201130 |
- FUNCTION DBFToStr(sAlias)
- LOCAL axFld[1], nFlds, nFld, sFld, sType, anLen[1], nLen, sStr
- sAlias = EVL(sAlias, ALIAS())
- sStr = ""
- nFlds = AFIELDS(axFld, sAlias)
- FOR nFld = 1 TO nFlds
- sFld = axFld[nFld, 1]
- sType = axFld[nFld, 2]
- nLen = axFld[nFld, 3]
- IF sType=="C" && Autoajusto columna
- SELECT MAX(LEN(ALLTRIM(&sFld ))) FROM (sAlias) INTO ARRAY anLen
- nLen = anLen[1]
- ENDIF
- nLen = MAX(nLen, LEN(sFld))
- axFld[nFld, 3] = nLen
- sStr = sStr + PADR(sFld, nLen) + SEP
- NEXT
- SCAN
- sStr = sStr + CRLF
- FOR nFld = 1 TO nFlds
- sFld = axFld[nFld, 1]
- nLen = axFld[nFld, 3]
- sStr = sStr + PADR(TRANSFORM(EVALUATE(sFld)), nLen) + SEP
- NEXT
- ENDSCAN
- RETURN sS
- * 1 |JUAN PEREZ |DIRECCION |.NULL. |.NULL. |.NULL. | 201130
- * 7 |MARIO LOPEZ |.NULL. |.NULL. |OTRO DATO |.NULL. | 123456
- FUNCTION StrToDBF(sAlias, sDatos)
- LOCAL sFields, sTmp, axFld[1], nFld, sFld, sType
- SET MEMOWIDTH TO 1024
- sFields = STRTRAN(MLINE(sDatos, 1), "|", " NULL ,")
- sTmp = ADDBS(SYS(2023)) + "app.tmp"
- STRTOFILE(sDatos, sTmp)
- CREATE CURSOR (sAlias) ( &sFields )
- APPEND FROM (sTmp) DELIMITED WITH CHARACTER "|"
- DELETE RECORD 1 && Titulos
- FOR nFld = 1 TO AFIELDS(axFld)
- sFld = axFld[nFld, 1]
- sType = axFld[nFld, 2]
- IF sType=="C"
- REPLACE (sFld) WITH .NULL. FOR &sFld =".NULL."
- ENDIF
- NEXT
- GO TOP
- RETURN
- #define CRLF CHR(13)+CHR(10)
- #define SEP " |"
- * Vuelca una tabla a un string separandola con | , ej:
- * CODIGO |NOMBRE |DIRECCION |DATOS1 |DATOS2 |DATOS3 |NROCUI |
- * 6 |MARIO LOPEZ |DIRECCION #2 |.NULL. |OTRO DATO |.NULL. |123456 |
- * 3 |JUAN PEREZ |DIRECCION |CORRECTO |DATOS |OTRO DATO |201130 |
- FUNCTION DBFToStr(sAlias)
- LOCAL axFld[1], nFlds, nFld, sFld, sType, anLen[1], nLen, sStr
- sAlias = EVL(sAlias, ALIAS())
- sStr = ""
- nFlds = AFIELDS(axFld, sAlias)
- FOR nFld = 1 TO nFlds
- sFld = axFld[nFld, 1]
- sType = axFld[nFld, 2]
- nLen = axFld[nFld, 3]
- IF sType=="C" && Autoajusto columna
- SELECT MAX(LEN(ALLTRIM(&sFld ))) FROM (sAlias) INTO ARRAY anLen
- nLen = anLen[1]
- ENDIF
- nLen = MAX(nLen, LEN(sFld))
- axFld[nFld, 3] = nLen
- sStr = sStr + PADR(sFld, nLen) + SEP
- NEXT
- SCAN
- sStr = sStr + CRLF
- FOR nFld = 1 TO nFlds
- sFld = axFld[nFld, 1]
- nLen = axFld[nFld, 3]
- sStr = sStr + PADR(TRANSFORM(EVALUATE(sFld)), nLen) + SEP
- NEXT
- ENDSCAN
- RETURN sS
- * 7 |MARIO LOPEZ |.NULL. |.NULL. |OTRO DATO |.NULL. | 123456
- FUNCTION StrToDBF(sAlias, sDatos)
- LOCAL sFields, sTmp, axFld[1], nFld, sFld, sType
- SET MEMOWIDTH TO 1024
- sFields = STRTRAN(MLINE(sDatos, 1), "|", " NULL ,")
- sTmp = ADDBS(SYS(2023)) + "app.tmp"
- STRTOFILE(sDatos, sTmp)
- CREATE CURSOR (sAlias) ( &sFields )
- APPEND FROM (sTmp) DELIMITED WITH CHARACTER "|"
- DELETE RECORD 1 && Titulos
- FOR nFld = 1 TO AFIELDS(axFld)
- sFld = axFld[nFld, 1]
- sType = axFld[nFld, 2]
- IF sType=="C"
- REPLACE (sFld) WITH .NULL. FOR &sFld =".NULL."
- ENDIF
- NEXT
- GO TOP
- RETURN
- #define CRLF CHR(13)+CHR(10)
- #define SEP " |"
- * Vuelca una tabla a un string separandola con | , ej:
- * CODIGO |NOMBRE |DIRECCION |DATOS1 |DATOS2 |DATOS3 |NROCUI |
- * 6 |MARIO LOPEZ |DIRECCION #2 |.NULL. |OTRO DATO |.NULL. |123456 |
- * 3 |JUAN PEREZ |DIRECCION |CORRECTO |DATOS |OTRO DATO |201130 |
- FUNCTION DBFToStr(sAlias)
- LOCAL axFld[1], nFlds, nFld, sFld, sType, anLen[1], nLen, sStr
- sAlias = EVL(sAlias, ALIAS())
- sStr = ""
- nFlds = AFIELDS(axFld, sAlias)
- FOR nFld = 1 TO nFlds
- sFld = axFld[nFld, 1]
- sType = axFld[nFld, 2]
- nLen = axFld[nFld, 3]
- IF sType=="C" && Autoajusto columna
- SELECT MAX(LEN(ALLTRIM(&sFld ))) FROM (sAlias) INTO ARRAY anLen
- nLen = anLen[1]
- ENDIF
- nLen = MAX(nLen, LEN(sFld))
- axFld[nFld, 3] = nLen
- sStr = sStr + PADR(sFld, nLen) + SEP
- NEXT
- SCAN
- sStr = sStr + CRLF
- FOR nFld = 1 TO nFlds
- sFld = axFld[nFld, 1]
- nLen = axFld[nFld, 3]
- sStr = sStr + PADR(TRANSFORM(EVALUATE(sFld)), nLen) + SEP
- NEXT
- ENDSCAN
- RETURN sS
- * Vuelca una tabla a un string separandola con | , ej:
- * CODIGO |NOMBRE |DIRECCION |DATOS1 |DATOS2 |DATOS3 |NROCUI |
- * 6 |MARIO LOPEZ |DIRECCION #2 |.NULL. |OTRO DATO |.NULL. |123456 |
- * 3 |JUAN PEREZ |DIRECCION |CORRECTO |DATOS |OTRO DATO |201130 |
- FUNCTION DBFToStr(sAlias)
- LOCAL axFld[1], nFlds, nFld, sFld, sType, anLen[1], nLen, sStr
- sAlias = EVL(sAlias, ALIAS())
- sStr = ""
- nFlds = AFIELDS(axFld, sAlias)
- FOR nFld = 1 TO nFlds
- sFld = axFld[nFld, 1]
- sType = axFld[nFld, 2]
- nLen = axFld[nFld, 3]
- IF sType=="C" && Autoajusto columna
- SELECT MAX(LEN(ALLTRIM(&sFld ))) FROM (sAlias) INTO ARRAY anLen
- nLen = anLen[1]
- ENDIF
- nLen = MAX(nLen, LEN(sFld))
- axFld[nFld, 3] = nLen
- sStr = sStr + PADR(sFld, nLen) + SEP
- NEXT
- SCAN
- sStr = sStr + CRLF
- FOR nFld = 1 TO nFlds
- sFld = axFld[nFld, 1]
- nLen = axFld[nFld, 3]
- sStr = sStr + PADR(TRANSFORM(EVALUATE(sFld)), nLen) + SEP
- NEXT
- ENDSCAN
- RETURN sS
- * CODIGO |NOMBRE |DIRECCION |DATOS1 |DATOS2 |DATOS3 |NROCUI |
- * 6 |MARIO LOPEZ |DIRECCION #2 |.NULL. |OTRO DATO |.NULL. |123456 |
- * 3 |JUAN PEREZ |DIRECCION |CORRECTO |DATOS |OTRO DATO |201130 |
- FUNCTION DBFToStr(sAlias)
- LOCAL axFld[1], nFlds, nFld, sFld, sType, anLen[1], nLen, sStr
- sAlias = EVL(sAlias, ALIAS())
- sStr = ""
- nFlds = AFIELDS(axFld, sAlias)
- FOR nFld = 1 TO nFlds
- sFld = axFld[nFld, 1]
- sType = axFld[nFld, 2]
- nLen = axFld[nFld, 3]
- IF sType=="C" && Autoajusto columna
- SELECT MAX(LEN(ALLTRIM(&sFld ))) FROM (sAlias) INTO ARRAY anLen
- nLen = anLen[1]
- ENDIF
- nLen = MAX(nLen, LEN(sFld))
- axFld[nFld, 3] = nLen
- sStr = sStr + PADR(sFld, nLen) + SEP
- NEXT
- SCAN
- sStr = sStr + CRLF
- FOR nFld = 1 TO nFlds
- sFld = axFld[nFld, 1]
- nLen = axFld[nFld, 3]
- sStr = sStr + PADR(TRANSFORM(EVALUATE(sFld)), nLen) + SEP
- NEXT
- ENDSCAN
- RETURN sS
- * 6 |MARIO LOPEZ |DIRECCION #2 |.NULL. |OTRO DATO |.NULL. |123456 |
- * 3 |JUAN PEREZ |DIRECCION |CORRECTO |DATOS |OTRO DATO |201130 |
- FUNCTION DBFToStr(sAlias)
- LOCAL axFld[1], nFlds, nFld, sFld, sType, anLen[1], nLen, sStr
- sAlias = EVL(sAlias, ALIAS())
- sStr = ""
- nFlds = AFIELDS(axFld, sAlias)
- FOR nFld = 1 TO nFlds
- sFld = axFld[nFld, 1]
- sType = axFld[nFld, 2]
- nLen = axFld[nFld, 3]
- IF sType=="C" && Autoajusto columna
- SELECT MAX(LEN(ALLTRIM(&sFld ))) FROM (sAlias) INTO ARRAY anLen
- nLen = anLen[1]
- ENDIF
- nLen = MAX(nLen, LEN(sFld))
- axFld[nFld, 3] = nLen
- sStr = sStr + PADR(sFld, nLen) + SEP
- NEXT
- SCAN
- sStr = sStr + CRLF
- FOR nFld = 1 TO nFlds
- sFld = axFld[nFld, 1]
- nLen = axFld[nFld, 3]
- sStr = sStr + PADR(TRANSFORM(EVALUATE(sFld)), nLen) + SEP
- NEXT
- ENDSCAN
- RETURN sS
- * 3 |JUAN PEREZ |DIRECCION |CORRECTO |DATOS |OTRO DATO |201130 |
- FUNCTION DBFToStr(sAlias)
- LOCAL axFld[1], nFlds, nFld, sFld, sType, anLen[1], nLen, sStr
- sAlias = EVL(sAlias, ALIAS())
- sStr = ""
- nFlds = AFIELDS(axFld, sAlias)
- FOR nFld = 1 TO nFlds
- sFld = axFld[nFld, 1]
- sType = axFld[nFld, 2]
- nLen = axFld[nFld, 3]
- IF sType=="C" && Autoajusto columna
- SELECT MAX(LEN(ALLTRIM(&sFld ))) FROM (sAlias) INTO ARRAY anLen
- nLen = anLen[1]
- ENDIF
- nLen = MAX(nLen, LEN(sFld))
- axFld[nFld, 3] = nLen
- sStr = sStr + PADR(sFld, nLen) + SEP
- NEXT
- SCAN
- sStr = sStr + CRLF
- FOR nFld = 1 TO nFlds
- sFld = axFld[nFld, 1]
- nLen = axFld[nFld, 3]
- sStr = sStr + PADR(TRANSFORM(EVALUATE(sFld)), nLen) + SEP
- NEXT
- ENDSCAN
- RETURN sStr
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement