Access - Error busqueda registro dlookup

 
Vista:

Error busqueda registro dlookup

Publicado por Kukuso (1 intervención) el 17/05/2017 11:12:31
Muy buenas:

Tengo un problema con un formulario de búsqueda para encontrar el número de cliente mediante la función DLookup().

Tengo un cuadro de texto independiente llamado txt_cod_cliente y otro donde le mando el registro reg_ctx_cod_cliente.

Ambos son números enteros.

Este es el codigo que he escrito.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
Private Sub cmd_buscar_Click()
    If txt_cod_cliente <> "" Then
 
        Me.reg_ctx_cod_cliente = DLookup("[ID_CLIENTE]", "[Clientes]", "[ID_CLIENTE] = " & Me.txt_cod_cliente.Value)
      '
    Else
        MsgBox "No hay nada escrito para buscar." & _
        vbNewLine & "Rellene alguno de los campos." & vbNewLine, vbOKOnly, "ATENCIÓN"
    End If
 
    If Me.RecordsetClone.RecordCount = 0 Then
        MsgBox "No se ha encontrado ningún registro.", vbOKOnly, "Aviso"
    Dim i As Control
    For Each i In Controls
        If i.Name Like "txt*" Then i = Empty
    Next
    End If
End Sub


Llevo un buen rato miranto y debe haber algo que se me escapa.
El error que siempre me aparece es '-214735267 (80020009)'

Muchas gracias, un saludo.
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

Error busqueda registro dlookup

Publicado por Anonimo (3315 intervenciones) el 17/05/2017 16:22:45
Con DLookup se pretende localizar un dato en principio desconocido en base a otro relacionado con el y al cual se conoce.

Pero en lo expuesto no parece entenderlo asi, pues se trata de localizar un dato:
DLookup("[ID_CLIENTE]",...... , ........)

En una tabla:
DLookup( ..... , "[Clientes]", .......)

Con una extraña condición:
DLookup(" ......, ..... , "[ID_CLIENTE] = " & Me.txt_cod_cliente.Value)

Generalmente se intenta localizar el dato desconocido en otro campo del mismo registro, nunca en el mismo campo

Tendría mas lógica (si el dato que se conoce es el nombre del cliente) que se utilizase en la localización el campo 'nombre del cliente' no el campo ID (que es el desconocido y al que se pretende localizar

Además la mas simple de las lógicas nos diría que para obtener un resultado valido, en Me.txt_cod_cliente tendría que estar el valor de ID_Cliente a localizar ¿localizar lo que ya se conoce?.

Una de las posibles opciones (utilizando el campo adecuado que para el ejemplo he titulado 'Nombre_Cliente')

1
Me.reg_ctx_cod_cliente = DLookup("[ID_CLIENTE]", "[Clientes]", "[NOMBRE_CLIENTE] = " & Me.txt_cod_cliente)

Como en lo posteado se compara con una cadena de texto vacía, hemos de suponer que el referente es texto:
1
txt_cod_cliente <> "" Then

Por lo que la expresion debería parecerse a esto:
1
Me.reg_ctx_cod_cliente = DLookup("[ID_CLIENTE]", "[Clientes]", "[NOMBRE_CLIENTE] = '" & Me.txt_cod_cliente & "'")
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar