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