Sql - error al determinar registro

En mi base de datos intento rellenar el campo población cuando elijo una opción en un combo del código postal, pero me da un error, el código es:
    Dim strSQL As String
    Dim RScadenasql As Recordset
    Dim DB As Database
    Dim CodPostal As String
    CodPostal = Me.Codigo_Postal.Value
    Set DB = CurrentDb
    strSQL = "SELECT CodigoProvincia, NombrePoblacion, CodigoPostal " _
    + " FROM Poblaciones " _
    + " WHERE CodigoPostal = " + CodPostal + ";"
    Set RScadenasql = DB.OpenRecordset(strSQL)
    Me.Poblacion.Text = RScadenasql!NombrePoblacion
me da error en la linea: Set RScadenasql = DB.OpenRecordset(strSQL) diciendome que "no coinciden los tipos de datos".

2 Respuestas

Respuesta
1
El error, según parece, ya que no tengo la estructura de la tabla, estás declarando CodPostal como una cadena de texto (STRING) cuando, repito que no he visto la estructura de la tabla, tienes el campo de tipo numérico; si es esto lo que te pasa lo que tienes que hacer es declarar CodPostal As Integer (Numérico)
Hola de nuevo,
Siento decir que en la tabla el campo Codigo_Postal es tipo String de 5 espacios, como es un código postal. Te mandaría la descripción pero no se como sacarlo de Access los campos de una tabla, por lo que CodPostal es también String.
He probado varias veces, y de distintas formas, he me da el mismo error.
Prueba esto por si te sirviera, pon como valor predeterminado del control
=DBúsq("NombrePoblacion","Poblaciones,","[CodigoPostal]=[NombreCombo])
Tienes que poner un procedimiento de evento en el combo que actualice el control cada vez que cambies el dato. Esto se hace:
Me.combo.Requery
Respuesta
1
Me parece que es porque tu recodrset no esta bien definido, pero en el código que me pones no le estoy cachando ningún error, puede ser que la ultima parte de tu definición del strsql no tiene terminador, pero en vb no debería tener ese problema,
separa la asiganacion del rs aveces esos espacios ademas que son más fáciles de leer, permiten identificar al compilador más fácilmente,
aunque repito no debería ser ese el error.
En realidad en la base de datos lo tengo separado pero no se por que en el mensaje aparece junto, pero tampoco es la solución. El problema son los tipos de datos pero es que
RScadenasql
DB.OpenRecordset(strSQL)
Los dos son RecordSet por lo que son los mismos tipos de datos.
Pero ambos recordsets tienen el mismo tipo de campos o tienen campos diferentes, porque ahí es donde te puede mandar el error, es un error parecido a type mistmach pero este lo daba por los tipos y aquí por ser rs deben tener los mismos campos para poder igualarse.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas