'---------------------------- VBLibCliente.asp --------------------------------------------------- ' Propósito: Contiene las funciones de visual basic script que se ejecutan del lado del Cliente ' Sistema: Sistema de Atención Mexiquense (SAM) - Ayuntamientos. ' Fecha última modificación Enero/2008 '-------------------------------------------------------------------------------------------------- FUNCTION Quitar_EspaciosIntermedios(cValor) ' Autor: Araceli Sánchez García ' Fecha: 11 de mayo 2009 ' Propósito: Quitar los espacios intermedios de una cadena ' cuando dichos sean mayores a un espacio nNoEspacios = Contar_Espacios(cValor) IF nNoEspacios > 1 THEN For x = nNoEspacios to 1 Step -1 cValor = Replace(cValor,Formar_CadenaEspacios(x)," ") Next END IF Quitar_EspaciosIntermedios = cValor END FUNCTION FUNCTION Contar_Espacios(cCadena) ' Autor: Araceli Sánchez García ' Fecha: 11 de mayo 2009 ' Propósito: Cuenta los espacios intermedios en una cadena ' siempre y cuando el siguiente caracter sea un espacio cCont = 1 FOR x= 1 to len(cCadena) IF MID(cCadena,x,1) = " " THEN IF MID(cCadena,x+1,1) = " " THEN cCont = cCont + 1 END IF END IF Next Contar_Espacios = cCont END FUNCTION FUNCTION Formar_CadenaEspacios(cCont) ' Autor: Araceli Sánchez García ' Fecha: 11 de mayo 2009 ' Propósito: Formar una cadena de n espacios cString ="" For x=1 to cCont cString = cString + " " Next Formar_CadenaEspacios = cString END FUNCTION FUNCTION Verificar_Nombre(cDato,cMensaje) ' Autor: Araceli Sánchez García ' Fecha: Agosto 2011 ' Próposito: Validar que el usuario no digito nombres anonimos, ' o nombres con una misma letra por mas de tres veces ' o nommbres que inicien con una consonante seguido de otra ' consonante con excepcion de: H, L, R, Y cNombre = UCASE(cDato.value) Dim vPalabras ' vector con palabras no permitidas. Dim vOtrasPalabras ' vector con otras plabras no permitidas. Dim vAbc ' vector con el abecedario. vPalabras = Array("ANONIMA","ANONIMO") vOtrasPalabras = Array("YO", "QUE", "SR.") vAbc = Array ("A","B", "C", "D", "E", "F", _ "G", "H", "I,","J", "K", "L", "M", "N","Ñ","O", "P", "Q", "R", _ "S", "T", "U", "V", "W", "X", "Y", "Z") '-- Validando que el usuario no digite nombres que contengan la palabra anonimos For x=0 to 1 IF INSTR(cNombre,vPalabras(X)) > 0 THEN Verificar_Nombre = TRUE MSGBOX cMensaje,vbOKOnly+vbCritical+vbDefaultButton1,"Mensaje del Sistema" cDato.focus() EXIT FUNCTION END IF Next '-- Validando que el usuario no digite nombres que sean igual a: YO, QUE, SR . For x=0 to 2 IF cNombre = vOtrasPalabras(x) THEN Verificar_Nombre = TRUE MSGBOX cMensaje,vbOKOnly+vbCritical+vbDefaultButton1,"Mensaje del Sistema" cDato.focus() EXIT FUNCTION END IF Next '-- Validando que el usuario no digite nombres que contengan una misma letra tres veces o mas cContador = 0 cInic = vAbc(0) For x=0 to 26 For y=1 to len(cNombre) IF Mid(cNombre,y,1) = vAbc(x) THEN cContador = cContador + 1 ELSE cContador = 0 END IF IF cContador >= 3 THEN Verificar_Nombre = TRUE MSGBOX cMensaje,vbOKOnly+vbCritical+vbDefaultButton1,"Mensaje del Sistema" cDato.focus() EXIT FUNCTION END IF Next Next '-- Validando que el usuario no digite nombres formados por una misma letra 2 veces cContador = 0 cInic = vAbc(0) For x=0 to 26 For y=1 to len(cNombre) IF Mid(cNombre,y,1) = vAbc(x) THEN cContador = cContador + 1 ELSE cContador = 0 END IF IF cContador >= 2 THEN 'si aun no se termina de revisar la cadena IF y < len(cNombre) THEN '-- verificar si el siguiente caracter es un espacio IF Asc(Mid(cNombre,y+1,1)) = 32 THEN Verificar_Nombre = TRUE MSGBOX cMensaje,vbOKOnly+vbCritical+vbDefaultButton1,"Mensaje del Sistema" cDato.focus() EXIT FUNCTION END IF 'si ya se llego al final de la cadena ELSEIF y = len(cNombre) THEN '-- verificar si previo a las dos letras existe un espacio IF Asc(Mid(cNombre,y-2,1)) = 32 THEN Verificar_Nombre = TRUE MSGBOX cMensaje,vbOKOnly+vbCritical+vbDefaultButton1,"Mensaje del Sistema" cDato.focus() EXIT FUNCTION END IF END IF END IF Next Next '-- Validando que el usuario no digite nombres que inicien con dos consonantes '-- exceptuando a las siguientes como segunda consonate: H, L, R, Y,. IF cDato.name <> "TLocalida" AND cDato.name <> "TDomicili" THEN 'Diferente a: vocal IF Asc(MID(cNombre,1,1)) <> 65 AND _ Asc(MID(cNombre,1,1)) <> 69 AND _ Asc(MID(cNombre,1,1)) <> 73 AND _ Asc(MID(cNombre,1,1)) <> 79 AND _ Asc(MID(cNombre,1,1)) <> 85 THEN 'Diferente a: H, L, R, Y, A, E, I, O, U, . IF Asc(MID(cNombre,2,1)) <> 46 AND _ Asc(MID(cNombre,2,1)) <> 72 AND _ Asc(MID(cNombre,2,1)) <> 76 AND _ Asc(MID(cNombre,2,1)) <> 82 AND _ Asc(MID(cNombre,2,1)) <> 89 AND _ Asc(MID(cNombre,2,1)) <> 65 AND _ Asc(MID(cNombre,2,1)) <> 69 AND _ Asc(MID(cNombre,2,1)) <> 73 AND _ Asc(MID(cNombre,2,1)) <> 79 AND _ Asc(MID(cNombre,2,1)) <> 85 THEN Verificar_Nombre = TRUE MSGBOX cMensaje,vbOKOnly+vbCritical+vbDefaultButton1,"Mensaje del Sistema" cDato.focus() EXIT FUNCTION END IF END IF '-- Validando que el usuario no digite nombres que inicien con vocal '-- y la siguiente caracter sea un espacio 'Igual a: vocal IF Asc(MID(cNombre,1,1)) = 65 OR _ Asc(MID(cNombre,1,1)) = 69 OR _ Asc(MID(cNombre,1,1)) = 73 OR _ Asc(MID(cNombre,1,1)) = 79 OR _ Asc(MID(cNombre,1,1)) = 85 THEN 'Igual a un espacio IF Asc(MID(cNombre,2,1)) = 32 THEN Verificar_Nombre = TRUE MSGBOX cMensaje,vbOKOnly+vbCritical+vbDefaultButton1,"Mensaje del Sistema" cDato.focus() EXIT FUNCTION END IF END IF END IF Verificar_Nombre = FALSE END FUNCTION FUNCTION Verificar_Longitud(cDato,cMensaje,nLongitud) ' Autor: Araceli Sánchez García ' Fecha: Agosto/2011 ' Próposito: Verificar si el numero de caracteres digitados en un campo ' es menor o igual al especificado en: nLongitud, si este es el caso ' se envía un mensaje de error: cMensaje. IF Len(TRIM(cDato.value)) <= nLongitud THEN Verificar_Longitud = TRUE MSGBOX cMensaje,vbOKOnly+vbCritical+vbDefaultButton1,"Mensaje del Sistema" cDato.focus() EXIT FUNCTION ELSE Verificar_Longitud = FALSE END IF END FUNCTION FUNCTION Rango_Fechas(cFecha,FFechInic,FFechFina) ' Autor: Adrián Cerritos Temahuay ' Fecha: Enero de 2001 ' Próposito: Validar que una fecha se encuentre dentro de un periodo de fechas determinado IF cDate(cFecha.value) >= FFechInic AND cDate(cFecha.value) <= FFechFina THEN Rango_Fechas= TRUE EXIT FUNCTION ELSE MSGBOX "La fecha debe estar dentro del siguiente periodo: del " & cstr(fFechInic) & " al " & cstr(fFechFina),_ vbOKOnly+vbCritical+vbDefaultButton1,"Mensaje del Sistema" cFecha.focus() cFecha.style.Backgroundcolor="#BAD2BA" cFecha.style.color="#000" Rango_Fechas = FALSE EXIT FUNCTION END IF Rango_Fechas= TRUE END FUNCTION FUNCTION Hora_Valida(cHora) ' Autor: Araceli Sánchez García ' Fecha: Enero de 2007 ' Próposito: Validar que la hora digitada sea válida en el formato HH:MM ' HH = 00 y 23 hrs. MM = 0 y 59 Min. cExpresion = cHora.Value IF cExpresion="" THEN Hora_Valida = TRUE EXIT FUNCTION END IF ' Verificamos que la fecha haya sido digitada en el Formato Correcto IF Len(cExpresion) < 5 OR NOT ISNumeric(Mid(cExpresion,1,2)) OR NOT ISNumeric(Mid(cExpresion,4,2)) OR Mid(cExpresion,3,1) <> ":" THEN MSGBOX "Digite la hora con el formato HH:MM",_ vbOKOnly+vbCritical+vbDefaultButton1,"Mensaje del Sistema" cHora.focus() Hora_Valida = FALSE EXIT FUNCTION END IF ' Checamos que la fecha sea valida ' Descomponemos la Fecha en Variables nHora = CInt(Mid(cExpresion,1,2)) nMinuto = CInt(Mid(cExpresion,4,2)) ' Checamos el Rango de la hora IF (nHora < 0 OR nHora > 23) THEN MSGBOX "El hora debe estar entre 00 y 23",_ vbOKOnly+vbCritical+vbDefaultButton1,"Mensaje del Sistema" cHora.focus() Hora_Valida = FALSE EXIT FUNCTION END IF ' Checamos el rango de los minutos IF (nMinuto < 0 OR nMinuto > 59) THEN MSGBOX "Los minutos deben estar entre 00 y 59",_ vbOKOnly+vbCritical+vbDefaultButton1,"Mensaje del Sistema" cHora.focus() Hora_Valida = FALSE EXIT FUNCTION END IF Hora_Valida= TRUE END FUNCTION FUNCTION Server_date() ' Autor: Adrián Cerritos Temahuay ' Fecha: Enero de 2007 ' Próposito: Obtener la fecha del servidor hoy=#05/02/2012# ArrayFecha = split(cdate(hoy),"/") ' Obtengo dia, mes y año.' Dia=ArrayFecha(1) Mes=ArrayFecha(0) Ano=ArrayFecha(2) Server_date=datevalue(dia & "/" & mes & "/" &ano) END FUNCTION FUNCTION FormateaNumero(nValor) ' Autor: Adrián Cerritos Temahuay ' Fecha: Diciembre de 2001 ' Próposito: Devolver el valor en el fomato de número, si se trata de un valor numerico ' en caso contrario se devuelve una cadena vacía IF NOT ISNULL(nValor.value) THEN IF ISNumeric(nValor.value) THEN nValor.value = FormatNumber(nValor.value,0) ELSE nValor.value = "" END IF ELSE nValor.value = "" END IF END FUNCTION Function PwdAleatorio ( Longitud, Repetir ) ' Autor: Jaime Ayala Ramírez' ' Fecha: 18 de abril de 2002' ' Propósito: Generar un número aleatorio con una longitud determinada' Dim vPass(), I, J ' nuestro vector y dos contadores Dim vNumeros() ' vector para guardar lo que llevamos Dim n, bRep Dim vCaracteres ' vector donde están los posibles caract. vCaracteres = Array("A","B", "C", "D", "E", "F", _ "G", "H", "J", "K", "L", "M", "N", "P", "Q", "R", _ "S", "T", "U", "V", "W", "X", "Y", "Z", "2", "3", "4", _ "5", "6", "7", "8", "9" ) 'Establezco la longitud del vector Redim vPass(Longitud-1) 'Y del vector auxiliar que guarda los caracteres ya escogidos Redim vNumeros(Longitud-1) I = 0 'Inicializo los nºs aleatorios Randomize 'Hasta que encuentre todos los caracteres do until I = Longitud 'Hallo un número aleatorio entre 0 y el máximo indice ' del vector de caracteres. n = int(rnd*Ubound(vCaracteres)) 'Si no puedo repetir... if not Repetir then bRep = False 'Busco el numero entre los ya elegidos for J = 0 to UBound(vNumeros) if n = vNumeros(J) then 'Si esta, indico que ya estaba bRep = True end if next 'Si ya estaba, tengo que repetir este caracter 'así que resto 1 a I y volvemos sobre la misma 'posición. if bRep then I = I - 1 else vNumeros(I) = n vPass(I) = vCaracteres(n) end if else 'Me da igual que esté o no repetido vNumeros(I) = n vPass(I) = vCaracteres(n) end if 'Siguiente carácter! I = I + 1 loop 'Devuelvo la cadena. Join une los elementos de un vector 'utilizando como separador el segundo parámetro: en este 'caso, nada -> "". PwdAleatorio = Join(vPass, "") End Function FUNCTION Dia_Valido(cFecha,cMensaje) ' Autor: Ana Karina Garcia Rojas' ' Fecha: 18 de abril de 2002' ' Propósito: Verificar que la fecha que ingresan no sea ni sabado ni domingo ' y que no sea mayor al dia de hoy' Dia_Valido=False Ban=False Periodo_Final=Server_date cExpresion =cDate(cFecha.value) 'Si el dia de la semana es Sabado o Domingo entonces se inicia la vandera' IF (WeekDay(cExpresion)=7) OR (WeekDay(cExpresion)=1) THEN Ban=True END IF IF cExpresion <= Periodo_Final AND Ban=False THEN Dia_Valido=True EXIT FUNCTION ELSE IF Ban=True THEN MSGBOX "La "& cMensaje &" " & cExpresion & " corresponde a un día no hábil",_ vbOKOnly+vbCritical+vbDefaultButton1,"Mensaje del Sistema" cFecha.Focus() Else MSGBOX "La "& cMensaje &" " & cExpresion & " debe ser anterior o igual al día de hoy",_ vbOKOnly+vbCritical+vbDefaultButton1,"Mensaje del Sistema" cFecha.Focus() END IF END IF END FUNCTION FUNCTION Irand(i,j) ' Autor: Jaime Ayala Ramírez' ' Fecha: 18 de abril de 2002' ' Propósito: Generar los número de contraseña de los nuevos servidores' valor="" while(Len(valor) < 9) numero=CInt((j-i+1)*rnd()+i) IF (numero < 58 OR numero > 65) AND (numero <>73 AND numero <>79 AND numero <>49 AND numero <>48 AND numero <>91) THEN valor=valor + chr(numero) END IF WEND Irand=CStr(valor) END FUNCTION FUNCTION ImprimePagina() ' Autor: Adrian Cerritos Temahuay ' Fecha: 16 de Diciembre de 2001 ' Próposito: Facilitar la impresión a los usuarios window.print() cMsg="Para volver al modo de consultas, haga clic en el botón [ATRAS] de Internet Explorer" MSGBOX cMsg,VbOKonly+vbDefaultButton1,"Mensaje del Sistema" END FUNCTION FUNCTION EnfocaCampo(cValor) cValor.Focus() END FUNCTION FUNCTION Enviar_Pagina(cForma,cAccion) ' Autor: Adrián Cerritos Temahuay ' Fecha: 22 de Noviembre de 2001 ' Próposito: Enviar los datos del formulario al servidor IF cAccion = "Delete" THEN cMsg = "¿Esta seguro de borrar permanentemente este registro?" IF MSGBOX(cMsg,vbYesNo+vbQuestion+vbDefaultButton2,"Mensaje del Sistema") = vbNo THEN EXIT FUNCTION END IF END IF IF cAccion = "DeleteServ" THEN cMsg = "¿Esta seguro de borrar al servidor público?" IF MSGBOX(cMsg,vbYesNo+vbQuestion+vbDefaultButton2,"Mensaje del Sistema") = vbNo THEN EXIT FUNCTION END IF END IF IF cAccion = "Salir" THEN cMsg = "¿Esta seguro de cancelar el proceso de registro de su trámite?" IF MSGBOX(cMsg,vbYesNo+vbQuestion+vbDefaultButton2,"Mensaje del Sistema") = vbNo THEN EXIT FUNCTION Else window.close() END IF END IF IF cAccion = "SalirEncu" THEN cMsg = "¿Esta seguro de cancelar el proceso de encuesta y cerrar esta ventana?" IF MSGBOX(cMsg,vbYesNo+vbQuestion+vbDefaultButton2,"Mensaje del Sistema") = vbNo THEN EXIT FUNCTION Else window.close() END IF END IF IF cAccion = "Cerrar" THEN window.close() END IF IF cAccion = "Aceptar" THEN cMsg = "¿Esta seguro de aceptar el trámite?" IF MSGBOX(cMsg,vbYesNo+vbQuestion+vbDefaultButton2,"Mensaje del Sistema") = vbNo THEN EXIT FUNCTION END IF END IF cForma.Accion.value = cAccion cForma.Submit() END FUNCTION FUNCTION Fecha_Posterior(cFecha) ' Autor: Paulino Hernández Valdés ' Fecha: 26 de septiembre de 2005 ' Próposito: Validar que un campo tipo fecha no sea mayor a la fecha del sistema 'Se valida que la fecha no sea mayor al dia de hoy IF cDate(cFecha.value) > Server_Date THEN MSGBOX "La fecha no puede ser posterior al día de hoy",_ vbOKOnly+vbCritical+vbDefaultButton1,"Mensaje del Sistema" cFecha.focus() Fecha_Posterior = True END IF END FUNCTION FUNCTION Fecha_Valida(cFecha) ' Autor: Adrián Cerritos Temahuay ' Fecha: 28 de febrero de 2000 ' Próposito: Validar que la fecha digitada sea valida para el formato: dd/mm/aaaa cExpresion = cFecha.Value IF cExpresion="" THEN Fecha_Valida = TRUE EXIT FUNCTION END IF ' Verificamos que la fecha haya sido digitada en el Formato Correcto IF Len(cExpresion) < 10 OR NOT ISNumeric(Mid(cExpresion,1,2)) OR NOT ISNumeric(Mid(cExpresion,4,2)) OR NOT ISNumeric(Mid(cExpresion,7,4)) OR Mid(cExpresion,3,1) <> "/" OR Mid(cExpresion,6,1) <> "/" THEN MSGBOX "Digite la Fecha con el formato DD/MM/AAAA",_ vbOKOnly+vbCritical+vbDefaultButton1,"Mensaje del Sistema" cFecha.focus() Fecha_Valida = FALSE EXIT FUNCTION END IF ' Checamos que la fecha sea valida ' Descomponemos la Fecha en Variables nDia = CInt(Mid(cExpresion,1,2)) nMes = CInt(Mid(cExpresion,4,2)) nAno = CInt(Mid(cExpresion,7,4)) ' Checamos el Rango del Dia IF (nDia < 1 OR nDia > 31) THEN MSGBOX "El dia debe estar entre 01 y 31",_ vbOKOnly+vbCritical+vbDefaultButton1,"Mensaje del Sistema" cFecha.focus() Fecha_Valida = FALSE EXIT FUNCTION END IF ' Checamos el rango del mes IF (nMes < 1 OR nMes > 12) THEN MSGBOX "El mes debe estar entre 01 y 12",_ vbOKOnly+vbCritical+vbDefaultButton1,"Mensaje del Sistema" cFecha.focus() Fecha_Valida = FALSE EXIT FUNCTION END IF IF (nMes = 4 OR nMes = 6 OR nMes = 9 OR nMes = 11) AND nDia = 31 THEN MSGBOX "El mes " & MonthName(nMes) & " solo tiene 30 dias",_ vbOKOnly+vbCritical+vbDefaultButton1,"Mensaje del Sistema" cFecha.focus() Fecha_Valida = FALSE EXIT FUNCTION END IF IF nMes = 2 THEN bBisiesto = (nAno MOD 4 = 0 AND (nAno MOD 100 <> 0 OR nAno MOD 400=0)) IF nDia > 29 OR (nDia = 29 AND NOT bBisiesto) THEN MSGBOX "Febrero del " & Cstr(nAno) & " no tiene " & Cstr(nDia) & " Días",_ vbOKOnly+vbCritical+vbDefaultButton1,"Mensaje del Sistema" cFecha.focus() Fecha_Valida = FALSE EXIT FUNCTION END IF END IF Fecha_Valida= TRUE END FUNCTION FUNCTION Esta_Vacio(cCampo,cMsg) ' Autor: Adrián Cerritos Temahuay ' Fecha: 29 de febrero de 2000 ' Próposito: Determinar si un campo esta vacio, devuelve True si esta vacio, ' dejando el cursor en el campo verificado Esta_Vacio=False IF cCampo.value="" THEN MSGBOX cMsg,vbOKOnly+vbCritical+vbDefaultButton1,"Mensaje del Sistema" cCampo.style.Backgroundcolor="#BAD2BA" cCampo.style.color="#000" cCampo.focus Esta_Vacio=True Else cCampo.style.Backgroundcolor="#EAF2E2" Esta_Vacio=False END IF END FUNCTION FUNCTION NVL(Valor,Sustituto) ' Autor: Adrián Cerritos Temahuay ' Fecha: 15 de marzo de 2000 ' Próposito: Verificar si el valor evaluado es nulo o ' esta vacio, para sustituirlo por otro valor, y ' si este no es el caso se devuelve el mismo valor. Valor=cLng(Valor) IF ISNULL(Valor) OR Valor ="" THEN NVL = Sustituto ELSE NVL = Valor END IF END FUNCTION FUNCTION SinPesos(cExpresion) ' Autor: Adrián Cerritos Temahuay ' Fecha: 24 de Marzo de 2000 ' Próposito: Quitar el signo de $ y , a una expresion numerica cBuscar = "$" cExpresion = Replace(cExpresion,cBuscar,"") cBuscar = "-" cExpresion = Replace(cExpresion,cBuscar,"") cBuscar = "," SinPesos = Replace(cExpresion,cBuscar,"") END FUNCTION FUNCTION Numero_Valido(cCampo,cMsg,nRangoInic,nRangoFina) ' Autor: Oscar Cuevas González ' Fecha: 24 de Marzo de 2000 ' Próposito: Valida que solo sean números 'Entradas: ' cCampo: Nombre del campo ' cMsg: El mensaje a desplegar 'Salida: ' Enfoca al campo si se introdujo un dato no valido ' Si el dato es nulo o es correcto sale del preocedimiento. IF cCampo.Value="" THEN Numero_Valido = TRUE EXIT FUNCTION END IF IF Not IsNumeric(SinPesos(cCampo.value)) THEN MSGBOX cMsg,vbOKOnly+vbCritical+vbDefaultButton1,"Mensaje del Sistema" cCampo.style.Backgroundcolor="#BAD2BA" cCampo.style.color="#000" cCampo.focus Numero_Valido=FALSE EXIT FUNCTION END IF ' Validamos el Rango de los Numeros IF CSng(SinPesos(cCampo.Value)) < nRangoInic THEN MSGBOX cMsg,vbOKOnly+vbCritical+vbDefaultButton1,"Mensaje del Sistema" cCampo.style.Backgroundcolor="#BAD2BA" cCampo.style.color="#000" cCampo.focus Numero_Valido=FALSE EXIT FUNCTION END IF IF CSng(SinPesos(cCampo.Value)) > nRangoFina THEN MSGBOX cMsg,vbOKOnly+vbCritical+vbDefaultButton1,"Mensaje del Sistema" cCampo.style.Backgroundcolor="#BAD2BA" cCampo.style.color="#000" cCampo.focus Numero_Valido=FALSE EXIT FUNCTION END IF cCampo.style.Backgroundcolor="#EAF2E2" Numero_Valido = TRUE END FUNCTION SUB Seleccionado (cValor,cValorDB) ' Autor: Adrián Cerritos Temahuay ' Fecha: 15 de marzo de 2000 ' Próposito: Marcar como seleccionado el elemento elegido por el ' usuario en un control de tipo list-box IF cValor=cValorDB THEN response.write "SELECTED" END IF END SUB