CDOWEX(dFecha, nFormato)
Acepta como primer parámetro una fecha o un número de día del 1 al 7 (1 es Lunes). Devuelve una cadena con el nombre completo o el nombre abreviado correspondiente al día de la semana.
- dFecha: es una expresión de fecha, o un número del 1 al 7 que representa un día de la semana, siendo 1 el día Lunes.
- nFormato: indica el formato deseado, puede ser 1, "S" (Short), "C" (Corto) ó 2, "L" (Long o Largo). El valor por omisión es 2.
? CDOWEX(1,2) Lunes
? CDOWEX(Date(2007,1,3),1) MiéCMONTHEX(dFecha, nFormato)
Acepta como primer parámetro una fecha o un número de mes del 1 al 12. Devuelve una cadena con el nombre completo o abreviado correspondiente al mes.
- dFecha: es una expresión de fecha, o un número del 1 al 12 que representa un mes del año, siendo 1 el mes Enero.
- nFormato: indica el formato deseado, puede ser 1, "S" (Short), "C" (Corto) ó 2, "L" (Long o Largo). El valor por omisión es 2.
? CMONTHEX(1,1), CMONTHEX(1,2) Ene Enero
? CMONTHEX(Date(2007,12,7),1), CMONTHEX(12,2) Dic DiciembreCDATEEX(dFecha, nFormato)
Acepta como primer parámetro una fecha o una expresión cualquiera. Devuelve una cadena con la fecha formateada según el formato del sistema.
- dFecha: es una expresión de fecha, si se pasa cualquier otro tipo de valor, la función utiliza el valor de DATE() como expresión de fecha.
- nFormato: indica el formato deseado, puede ser 1, "S" (Short), "C" (Corto) ó 2, "L" (Long o Largo). El valor por omisión es 2.
? CDATEEX(Date(),1) 20/04/2006
? CDATEEX(Date(),2) Jueves, 20 de Abril de 2006Otro ejemplo:
? Transform(Day(Date())) + [/] + CMONTHEX(Date(),1) + ; [/] + Transform((Year(Date()))) 20/Abr/2006
NOTA: Dado que los valores devueltos por estas funciones dependen de la configuración del formato de fecha y del idioma del sistema operativo Windows, en cada caso los valores pueden ser distintos a los mostrados en los ejemplos, y pueden variar en cada equipo de acuerdo al gusto del usuario.
CODIGO:
CLEAR
? CDATEEX(DATE(),1)
? CDATEEX(DATE(),2)
?
FOR i = 1 TO 12
? CDATEEX(DATE(2007,i,1),2)
ENDFOR
?
? CDOWEX(DATE(2007,1,1),1), CDOWEX(1,2)
? CDOWEX(DATE(2007,1,2),1), CDOWEX(2,2)
? CDOWEX(DATE(2007,1,3),1), CDOWEX(3,2)
? CDOWEX(DATE(2007,1,4),1), CDOWEX(4,2)
? CDOWEX(DATE(2007,1,5),1), CDOWEX(5,2)
? CDOWEX(DATE(2007,1,6),1), CDOWEX(6,2)
? CDOWEX(DATE(2007,1,7),1), CDOWEX(7,2)
?
FOR i = 1 TO 12
? CMONTHEX(i,1), CMONTHEX(i,2)
ENDFOR
?
? CMONTHEX(DATE(2007,12,7),1), CMONTHEX(12,2)
?
? TRANSFORM(DAY(DATE())) + [/] + CMONTHEX(DATE(),1) + ;
[/] + TRANSFORM((YEAR(DATE())))
RETURN
*
*****
* CDOWEX(dDate, nFormat)
* dDate: expresión de fecha/fechahora/dia de la semana
* nFormat: 1/S/C = nombre de dia abreviado,
* 2/L = nombre de dia completo (Default)
*****
FUNCTION CDOWEX
PARAMETERS tdDate, tnFormat
DeclareDlls()
LOCAL lnType, lcBuffer, lnBufferLen, lnRetVal
IF VARTYPE(m.tnFormat) = [C] AND UPPER(m.tnFormat) $ "SC" THEN
m.tnFormat = 1
ENDIF
IF NOT VARTYPE(m.tnFormat) = [N] THEN
m.tnFormat = 2
ENDIF
IF NOT BETWEEN(m.tnFormat, 1, 2) THEN
m.tnFormat = 2
ENDIF
IF VARTYPE(m.tdDate) = [N] AND BETWEEN(m.tdDate, 1, 7)
m.lnType = m.tdDate + IIF(m.tnFormat = 1, 48, 41)
ELSE
IF NOT VARTYPE(m.tdDate) $ [DT] THEN
m.tdDate = DATE()
ENDIF
m.lnType = DOW(m.tdDate,2) + IIF(m.tnFormat = 1, 48, 41)
ENDIF
m.lcBuffer = SPACE(254)
lnRetVal = GetLocaleInfo(1024, m.lnType, @m.lcBuffer, 254)
m.lcBuffer = LEFT(m.lcBuffer, m.lnRetVal - 1)
RETURN m.lcBuffer
ENDFUNC
*****
* CMONTHEX(dDate, nFormat)
* dDate: expresión de fecha/fechahora/numero de mes
* nFormat: 1/S/C = nombre de mes abreviado,
* 2/L = nombre de mes completo (Default)
*****
FUNCTION CMONTHEX
PARAMETERS tdDate, tnFormat
DeclareDlls()
LOCAL lnType, lcBuffer, lnBufferLen, lnRetVal
IF VARTYPE(m.tnFormat) = [C] AND UPPER(m.tnFormat) $ "SC" THEN
m.tnFormat = 1
ENDIF
IF NOT VARTYPE(m.tnFormat) = [N] THEN
m.tnFormat = 2
ENDIF
IF NOT BETWEEN(m.tnFormat, 1, 2) THEN
m.tnFormat = 2
ENDIF
IF VARTYPE(m.tdDate) = [N] AND BETWEEN(m.tdDate, 1, 12)
m.lnType = m.tdDate + IIF(m.tnFormat = 1, 67, 55)
ELSE
IF NOT VARTYPE(m.tdDate) $ [DT] THEN
m.tdDate = DATE()
ENDIF
m.lnType = MONTH(m.tdDate) + IIF(m.tnFormat = 1, 67, 55)
ENDIF
m.lcBuffer = SPACE(254)
lnRetVal = GetLocaleInfo(1024, m.lnType, @m.lcBuffer, 254)
m.lcBuffer = LEFT(m.lcBuffer, m.lnRetVal - 1)
RETURN m.lcBuffer
ENDFUNC
*****
* CDATEEX(dDate, nFormat)
* dDate: expresión de fecha/fechahora
* nFormat: 1/S/C = formato de fecha corta,
* 2/L = formato de fecha larga (Default)
*****
FUNCTION CDATEEX
PARAMETERS tdDate, tnFormat
DeclareDlls()
LOCAL lcDate, lcBuffer, lnBufferLen, lnRetVal
IF NOT VARTYPE(m.tdDate) $ [DT] THEN
m.tdDate = DATE()
ENDIF
IF VARTYPE(m.tnFormat) = [C] AND UPPER(m.tnFormat) $ "SC" THEN
m.tnFormat = 1
ENDIF
IF NOT VARTYPE(m.tnFormat) = [N] THEN
m.tnFormat = 2
ENDIF
IF NOT BETWEEN(m.tnFormat,1,2) THEN
m.tnFormat = 2
ENDIF
m.lcDate = ShortToBin(YEAR(m.tdDate)) + ;
ShortToBin(MONTH(m.tdDate)) + ;
ShortToBin(DOW(m.tdDate,2)) + ;
ShortToBin(DAY(m.tdDate)) + ;
REPLICATE(CHR(0),8)
m.lcBuffer = SPACE(254)
m.lnBufferLen = 254
m.lnRetVal = GetDateFormat_CDATEEX(1024, m.tnFormat, ;
@m.lcDate, 0, @m.lcBuffer, m.lnBufferLen)
m.lcBuffer = LEFT(m.lcBuffer, m.lnRetVal - 1)
RETURN m.lcBuffer
ENDFUNC
*****
* DeclareDlls
* Declara las funciones API usadas por CDOWEX, CMONTHEX, CDATEEX
*****
PROCEDURE DeclareDlls
LOCAL laDlls(1,3), lnLen AS NUMBER
m.lnLen = ADLLS(laDlls )
IF ASCAN(laDlls, "GetDateFormat_CDATEEX", 1, m.lnLen , 2, 15) = 0
DECLARE INTEGER GetDateFormat ;
IN kernel32 AS GetDateFormat_CDATEEX ;
INTEGER Locale, ;
INTEGER dwFlags, ;
STRING @lpDate, ;
INTEGER lpFormat, ;
STRING @lpDateStr, ;
INTEGER cchDate
ENDIF
IF ASCAN(laDlls, "GetLocaleInfo", 1, m.lnLen , 2, 15) = 0
DECLARE INTEGER GetLocaleInfo ;
IN kernel32 ;
INTEGER Locale, ;
INTEGER LCType, ;
STRING lpLCData, ;
INTEGER cchData, ;
ENDIF
ENDIF
RETURN
ENDFUNC
*****
* ShortToBin
* Convierte un numero en una cadena binaria de 2 bytes
*****
FUNCTION ShortToBin
PARAMETERS tnLongVal
PRIVATE i, lcRetstr
IF VERSION(5) < 900 THEN
m.lcRetstr = ""
FOR i = 8 TO 0 STEP -8
m.lcRetstr = CHR(INT(m.tnLongVal/(2^i))) + m.lcRetstr
m.tnLongVal = MOD(m.tnLongVal, (2^i))
NEXT
ELSE
m.lcRetstr = BINTOC(m.tnLongVal,[2RS])
ENDIF
RETURN m.lcRetstr
ENDFUNC
Carlos Alloatti
No excel tem esta funcao para saber o total acumulado do mes, ReceitaAcumMes:=TOTALMTD([Receita];fVendas[DataVenda];ALL(dCalendario[DataBase])) , como fazer isso no foxpro ?
ResponderBorrar