none
introducir validacion en un codigo

    Pregunta

  • Buena noches grupo!

    Tengo un proceso que utilizo para copiar determinados datos de un formulario en una tabla resumen. para identificar los datos, introduzco el mes y el año. El proceso ya no lo realizo yo, y he detectado que los compañeros que lo realizan, han cometido errores al introducir el mes y el año dando lugar a que los datos correspondientes al mes actual se introduzcan en meses pasados o futuros, por ejemplo los datos de julio de 2010 introducirse como junio 2010 ( con lo que aparecen datos duplicados ese mes los correctos y los de julio) o como septiembre 2010 (cuando el ultimo mes introducido era julio y los datos corresponden a agosto). Como podría hacer una validacion al introducir el mes y el año para evitar estos errores?

    Gracias

    m = InputBox("Introduce el mes")
      a = InputBox("Introduce el año")
    
    sql1 = "SELECT CCC, TipoLiq, Casilla, Sum(Importe) AS Imp FROM Analizado GROUP BY CCC, TipoLiq, Casilla HAVING (((Analizado.Casilla) Like '700'))"
    
        
      Set miTabla1 = CurrentDb.OpenRecordset(sql1, dbOpenDynaset)
      
      Set miTabla = CurrentDb.OpenRecordset("historico", dbOpenDynaset)
          
      miTabla1.MoveFirst
      While Not miTabla1.EOF
      
      With miTabla
        .AddNew
        !ccc = miTabla1("CCC")
        !t_liquidacion = miTabla1("TipoLiq")
        !Imp = miTabla1("Imp")
        !mes = m
        !año = a
        .Update
      End With
      miTabla1.MoveNext
      Wend
    
    sábado, 04 de diciembre de 2010 21:25

Respuestas

  • Para una respuesta más acotada seria interesante saber más cosas... pero nos lanzamos a la piscina.

    Verifica si ya tienes un valor introducido en la tabla para ese mes y año antes de lanzar la consulta. Esto és, justo despues de pedir mes y año al usuario:

    If DCount("*", "historico", "mes = " & m & " And año = " & a) > 0 Then
      MsgBox "Datos ya traspasados", vbCritical, "AVISO"
      Exit Sub
    End If

    Adicionalmente puedes predeterminar el valor que deseas para los InputBox. Imaginando que se quiere indicar el mes y año del mes pasado, seria algo asi:

    m = InputBox("Introduce el mes", , Month(DateAdd("m", -1, Date)))
    a =  InputBox("Introduce el mes", , Year(DateAdd("m", -1, Date)))

    Para el mes actual es más simple aun:

    m = InputBox("Introduce el mes", , Month(Date)
    a =  InputBox("Introduce el mes", , Year(Date)

    Un saludo

     

     


    Un minyó de Terrassa
    • Marcado como respuesta rafa_c viernes, 17 de diciembre de 2010 19:33
    miércoles, 15 de diciembre de 2010 18:06

Todas las respuestas

  • Para una respuesta más acotada seria interesante saber más cosas... pero nos lanzamos a la piscina.

    Verifica si ya tienes un valor introducido en la tabla para ese mes y año antes de lanzar la consulta. Esto és, justo despues de pedir mes y año al usuario:

    If DCount("*", "historico", "mes = " & m & " And año = " & a) > 0 Then
      MsgBox "Datos ya traspasados", vbCritical, "AVISO"
      Exit Sub
    End If

    Adicionalmente puedes predeterminar el valor que deseas para los InputBox. Imaginando que se quiere indicar el mes y año del mes pasado, seria algo asi:

    m = InputBox("Introduce el mes", , Month(DateAdd("m", -1, Date)))
    a =  InputBox("Introduce el mes", , Year(DateAdd("m", -1, Date)))

    Para el mes actual es más simple aun:

    m = InputBox("Introduce el mes", , Month(Date)
    a =  InputBox("Introduce el mes", , Year(Date)

    Un saludo

     

     


    Un minyó de Terrassa
    • Marcado como respuesta rafa_c viernes, 17 de diciembre de 2010 19:33
    miércoles, 15 de diciembre de 2010 18:06
  • Gracias Xavi!!

    Lo  he incluido en mi codigo y realiza las validaciones perfectamente.

    Saludos

    viernes, 17 de diciembre de 2010 19:35