Access - No coinciden los tipos

 
Vista:
sin imagen de perfil
Val: 153
Bronce
Ha mantenido su posición en Access (en relación al último mes)
Gráfica de Access

No coinciden los tipos

Publicado por Jaime (72 intervenciones) el 11/08/2017 19:42:42
Tengo un formulario con un campo que me muestra el id del operario, nombre, puesto y teléfono, y tengo un botón de Modificar en el cual compara todos los datos para ver si se modificó algo y si es así actualice el campo en la tabla, todo esto quiero que lo haga comparando el id del operario el cual es un campo de auto numeración, al momento de correr el código me dice que no coinciden los tipos en la expresión de criterios, la verdad no se que onda, a penas estoy iniciandome en esto. Sospecho que es por los valores que contiene el campo Cid que es el que muestra el id del operario.

Les dejo el código a como lo tengo:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
Private Sub Modificar_Click()
 
'Declaro variables
Dim Buscarnombre As String
Dim Buscarpuesto As String
Dim Buscartelefono As String
 
'Asigno los datos
 
Buscarnombre = Nz(DLookup("Operario", "Personal", "Id='" & Me.Cid.Value & "'"), "") 'Al mostrar el error me ubica en esta línea
Buscarpuesto = Nz(DLookup("Puesto", "Personal", "Id='" & Me.Cid.Value & "'"), "")
Buscartelefono = Nz(DLookup("Numerotelefonico", "Personal", "Id='" & Me.Cid.Value & "'"), "")
 
'Comparo y actualizo
If Not Me.Nombre.Value = Buscaroperario Then
DoCmd.RunSQL "Update Personal SET Operario='" & Me.Nombre & "' Where Id=" & Me.Cid & ""
Else
If Not Me.puesto.Value = Buscarpuesto Then
DoCmd.RunSQL "Update Personal SET Puesto='" & Me.puesto & "' Where Id=" & Me.Cid & ""
Else
If Not Me.telefono.Value = Buscartelefono Then
DoCmd.RunSQL "Update Personal SET Numerotelefonico='" & Me.telefono & "' Where Id=" & Me.Cid & ""
Else
MsgBox "No hay datos por modificar", vbInformation + vbOKOnly, "Si modificación"
End If
End If
End If
 
End Sub

Espero y puedan ayudarme, y no se si me supe explicar.
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
Imágen de perfil de Antonio
Val: 485
Plata
Ha aumentado 1 puesto en Access (en relación al último mes)
Gráfica de Access

Como definir una variable

Publicado por Antonio (171 intervenciones) el 11/08/2017 19:53:42
Hola.

"Id='" & Me.Cid.Value & "'" 'si tu campo id en la tabla esta como texto lleva comillas simples y dobles

"Id=" & Me.Cid.Value & "" 'si tu campo id en la tabla esta como numero lleva comillas dobles

Me dices. Si lo resolviste
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
sin imagen de perfil
Val: 153
Bronce
Ha mantenido su posición en Access (en relación al último mes)
Gráfica de Access

Como definir una variable

Publicado por Jaime (72 intervenciones) el 11/08/2017 20:16:16
Muchas gracias si me funcionó, aunque dentro de mi ignorancia lo había puesto de la siguiente manera:

1
"Id=" & Me.Cid.Value

Osea que le eliminé la parte del final, y aunque tambien me funcionaba creo que es mejor aprender la forma correcta en la que debería ir jeje

Muchas gracias
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
Imágen de perfil de Antonio
Val: 485
Plata
Ha aumentado 1 puesto en Access (en relación al último mes)
Gráfica de Access

Como definir una variable

Publicado por Antonio (171 intervenciones) el 11/08/2017 20:44:56
Cualquien forma es valida, pero para mi es mejor "Id='" & Me.Cid.Value & "'" me deja mas claro que estoy haciendo. Saludos.
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

Como definir una variable

Publicado por Anonimo (3329 intervenciones) el 11/08/2017 21:56:10
Solo a titulo de curiosidad ¿Por qué tanta complicación si con una sola línea lo resuelves?....


Si analizamos vemos que si localiza un dato cualquiera, pongamos que este:
Buscarnombre = Nz(DLookup("Operario", "Personal", "Id='" & Me.Cid.Value & "'"), "")

en la variable 'Buscarnombre' aparecerá un dato (pongamos que 'PEDRO') o una cadena de texto vacia.

Comparamos el dato de la variable con el cuadro de texto en el formulario y pueden ocurrir dos cosas:
.- es el mismo (no se modifica)
.- es diferente ( sea por espacio vacío o por que el referente es 'JOSE')

Si es el mismo se ignora, si es diferente se actualiza.... ¿Qué podría pasar si siempre se actualizase? ....

Si antes era Pedro y ahora Jose o sigue siendo Pedro, el resultado es el mismo, los datos se actualizan en la tabla (aunque en uno de los casos mas bien 'se refresquen')

Llegados a este punto propongo una única línea:
1
DoCmd.RunSQL  "Update Personal SET Operario='" & Me.Nombre  & "', Puesto='" & Me.puesto & "',  Numerotelefonico='" & Me.telefono & "' Where Id=" & Me.Cid
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
sin imagen de perfil
Val: 153
Bronce
Ha mantenido su posición en Access (en relación al último mes)
Gráfica de Access

Como definir una variable

Publicado por Jaime (72 intervenciones) el 12/08/2017 17:03:13
Bueno lo hice así por ignorancia, pero veo que si sería mucho mejor así como dices Anonimo, gracias por el conocimiento.
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