Problemas con la sentencia If en Access 2003

El problema que tengo este que estoy mandando traer el valor de unos campos de una tabla a otra mediante un formulario, esto es así el formulario se llama cotización y su tabla igual y la segunda tabla se llama clientes, la cuestión es que a través de un campo de texto al escribir la clave manualmente en el formulario me manda traer los datos de la tabla clientes y los muestra pega en la tabla y formulario cotización. El problema que tengo es que no se como declarar la sentencia IF para que cuando le escriba una clave que no se encuentra en la tabla o la escriba incorrectamente me mande un mensaje de "CLAVE INCORRECTA" y no me deje pasar a la siguiente linea, o si no se puede que no memande mensaje pero que simplemente no me deje cambiar de campo. Describo las lienas que estoy utilizando.
Private Sub claveempresa_AfterUpdate()
If IsNull(Me.claveempresa) Or Me.claveempresa = "" Then Exit Sub
Me.nombreempresa = Nz(DLookup("nombreempresa", "[clientes]", "[claveempresa]='" & Me.claveempresa & "'"), "")
Me.teléfono = Nz(DLookup("teléfono", "[clientes]", "[claveempresa]='" & Me.claveempresa & "'"), "")
Me.telefonofax = Nz(DLookup("telefonofax", "[clientes]", "[claveempresa]='" & Me.claveempresa & "'"), "")
Me.Dirección = Nz(DLookup("dirección", "[clientes]", "[claveempresa]='" & Me.claveempresa & "'"), "")
Me.Colonia = Nz(DLookup("colonia", "[clientes]", "[claveempresa]='" & Me.claveempresa & "'"), "")
Me.Población = Nz(DLookup("población", "[clientes]", "[claveempresa]='" & Me.claveempresa & "'"), "")
Me.CP = Nz(DLookup("cp", "[clientes]", "[claveempresa]='" & Me.claveempresa & "'"), "")
Me.email = Nz(DLookup("email", "[clientes]", "[claveempresa]='" & Me.claveempresa & "'"), "")
End Sub

Respuesta

Yo insertaría un control de cuadro combinado, en el origen le agregaría las columnas con los datos que quisiera, ejemplo:
Supongamos que inserto un control de cuadro combinado llamado cboDatosCliente:

Private Sub claveempresa_AfterUpdate()
Dim rst as DAO.Recordset
If Len(Me.claveempresa)=0 Then Exit Sub
If DCount("*","Clientes","ClaveEmpresa=" & Me.claveempresa)=0 Then
MsgBox "No se encontró la clave de la empresa",vbinformation+vbokonly,"Atención"
Exit Sub
else
Me.cboDatosCliente = Me.claveempresa
endif
Me.nombreempresa = Me.cboCliente.Column(1)
Me.teléfono = Me.cboCliente.Column(2)
Me.telefonofax = Me.cboCliente.Column(3)
Me.Dirección = Me.cboCliente.Column(4)
Me.Colonia = Me.cboCliente.Column(5)
Me.Población = Me.cboCliente.Column(6)
Me.CP = Me.cboCliente.Column(7)
Me.email = Me.cboCliente.Column(8)
End Sub
Pdata: Las columnas de los cuadros combinados empiezan en la columna 0

HOLA GRACIAS POR TU AYUDA YA PUSE EL CÓDIGO CON SUS RESPECTIVOS CAMBIOS LOS CUALES SON: LE PUSE EL NOMBRE AL CUADRO COMBINADO COMO cboCliente y puese las lineas que me indicas ASÍ.

Private Sub cboCliente_AfterUpdate()
Dim rst As DAO.Recordset
If Len(Me.claveempresa) = 0 Then Exit Sub
If DCount("*", "Clientes", "ClaveEmpresa=" & Me.claveempresa) = 0 Then
MsgBox "No se encontró la clave de la empresa", vbInformation + vbOKOnly, "Atención"
Exit Sub
Else
Me.cboCliente = Me.claveempresa
End If
Me.nombreempresa = Me.cboCliente.Column(1)
Me.teléfono = Me.cboCliente.Column(2)
Me.telefonofax = Me.cboCliente.Column(3)
Me.Dirección = Me.cboCliente.Column(4)
Me.Colonia = Me.cboCliente.Column(5)
Me.Población = Me.cboCliente.Column(6)
Me.CP = Me.cboCliente.Column(7)
Me.email = Me.cboCliente.Column(8)
End Sub

Pero me manda se a pruducido un error '3075' en tiempo de ejecución Error de Sintaxis falta operador en la expresión de la consulta 'claveempresa=' si le doy en depurar me manda a la linea If DCount("*", "Clientes", "ClaveEmpresa=" & Me.claveempresa) = 0 Then que crees que sea??


También lo intente con el código anterior y parece funcionar con cuadro combinado pero sigue sin sentencia y me sale lo siguiente:

El campo es demasiado pequeño para aceptar la cantidad de datos que intenta agregar intente insertar o pegar menos datos. YA CHEQUE LA ENTRADA DE CARACTERES EN LA TABLA QUE TENGAN SUFICIENTE ESPACIO Y NADA QUE CREES QUE PUEDA SER?

El campo claveempresa es de típo numerico o String ?

Si es de tipo Texto, entonces tienes que agregarle comillas simples o dobles, ejemplo:

If DCount("*", "Clientes", "ClaveEmpresa='" & Me.claveempresa & "'") = 0

El control del cuadro combinado debe de ser independiente.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas