Tengo un problema con DCount en la hora me dice que le falta operador o sintaxis error

Me puede ayudar ya hice algunos cambios pero ninguno me funciona.

La sintaxis es la siguiente:

 If DCount("[hora]", "Agenda", "[hora] = #" & Me.hora & "#") >= 1 Then

Le quite los # y tampoco funciona.

El error que me sale es el 3075

Los campos son fecha corta.

Respuesta
1

Es muy raro, ya que la instrucción la tienes bien puesta. Mira, si tengo la tabla Pedidos con el campo Hora

Como no sé en que evento tienes puesta la instrucción, en un formulario pongo un cuadro de texto, con formato también de fecha corta y escribo una

Cuando pulso el botón

Y la instrucción es exactamente igual a la tuya

Private Sub Comando330_Click()
If DCount("*", "pedidos", "hora=#" & Me.Hora & "#") > 1 Then
MsgBox "Has acertado, en esa SÍ hay registros", vbOKOnly + vbExclamation, "Lo tienes bien, Julia"
End If
End Sub

¿Has probado a poner tanto en el campo de la tabla como en el cuadro de texto, en máscara de entrada

00:00;

1 respuesta más de otro experto

Respuesta

Los datos que se piden siempre se deben validar para evitar errores de ejecución. Para que no se complique con mascaras de entrada (nunca las utilizo) ni fijar el formato hora en el cuadro de texto, utilice la función Replace() de tal forma que si ingresa en el cuadro de texto 9,20 o 9.20 lo convierta en 9:20. Si ingresa 9:20 lo deje igual.

PRIMER PASO

Adicione este código al evento Antes de Actualizar en el cuadro de texto que pide la hora: para validar que ingrese un formato de hora válido. Por ejemplo, si ingresa A:30 o A.30 o A, 30 le informe de la inconsistencia.

Private Sub ctlhoras_BeforeUpdate(Cancel As Integer)
 If Not IsDate(Me.ctlhoras) Then
   MsgBox "Digiete la hora como hh:mm, h.mm o h,mm", vbInformation, "Error..."
   Cancel = True
  End If
End Sub

SEGUNDO PASO

Agregue este código al evento Después de actualizar en el cuadro de texto que pide la hora: (Asumo que la tabla se llama tlblcontrol y existe el campo Hora tipo Fecha/Hora con formato Hora Corta y que el formulario tiene los cuadros de texto ctlhoras y ctlhay). En el cuadro de texto ctlhoras se ingresa la hora a contar.

Dim buscar_coma As Integer
Dim buscar_punto As Integer
buscar_coma = InStrRev(Me.ctlhoras, ",")
buscar_punto = InStrRev(Me.ctlhoras, ".")
If buscar_coma > 0 Then ' hay decimal y es una coma (,) remplazo por dos puntos (:)
 Me.ctlhoras = Replace(Me.ctlhoras, ",", ":", 1)
ElseIf buscar_punto > 0 Then
  Me.ctlhoras = Replace(Me.ctlhoras, ".", ":", 1)  'hay punto (.) reemplazo por dos puntos (:)
End If

If DCount("*", "tblcontrol", "hora=#" & Me.Hora & "#") > 1 Then
  Me.ctlhay = "Si hay horas"
Else
   Me.ctlhay = "No hay horas"
End If

Está probado y funciona. Si quiere el ejemplo escríbame [email protected] y se lo remito.

Buenos días, muchas gracias por su información, pero lo que me pasa es que tengo la fecha en un cuadro lista y lo comparo con una consulta o contra la misma tabla y me dice que no son del mismo tipo.

Por favor ayúdenme, se los agradezco mucho.

El problema esta en el formato hora, debe utilizar Format(numhora,"hh:mm"), entonces reemplace la línea:

numhora=Me.Cuadrohora   por :

numhora=Format(Me.Cuadrohora,"hh:mm")

Y me cuenta.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas