Guardar valor del campo resultado de una consulta sql en una variable string

A través de un campo string de un formulario, quiero usar su valor (la palabra que hay almacenada dentro) para realizar una consulta sql de una tabla, y que me busque el registro que tiene dicho valor, y después extraer de dicho registro el valor de uno de sus campos y almacenarlo en otra variable, para después copiar el valor de esa variable en otro campo del formulario. Ejemplo:
FORMULARIO: Campo 'Codcli' y Campo 'Destino'
Valor Campo 'Codcli': AL4563
vloc = Left([CODCLI], 2) (con esto extraigo los dos primeros caracteres)
Ahora quiero hacer una consulta SQL a la tabla 'POBLACIONES' que tiene los campos 'CODPOB' y 'NOMBRE'.
La consulta seria algo como:
Select NOMBRE from POBLACIONES where CODPOB = Vloc
Eso me devolvería 1 único resultado (una cadena) y quiero guardar ese valor en la variable string 'vloc2' para luego pasar dicho valor a otro campo del formulario. Es decir:
Me.Destino = Vloc2
Espero haberme explicado correctamente. Necesito el código de la sentencia sql, y el código para guardar el resultado en la variable vloc2.
Trabajo con access 2007

1 Respuesta

Respuesta
3

La solucion es más sencilla si usas la función DLookup que una SQL. Te comento de las dos formas.

En el formulario, en Vista diseño, te colocas sobre el campo CodCli, sacas sus propiedades, vas a la pestaña Eventos, te colocas en la fila Despues de Actualizar, y le das al boton de los 3 puntos que aparece en el lado derecho. Elijes Generador de código.

En el editor de vba que te aperece, escribes este código:

Private Sub CodCli_AfterUpdate()

Dim vloc as String, vloc2 as String

vloc = Left(Me.CodCli, 2)

vloc2=Dlookup("NOMBRE","POBLACIONES","[CODPOB]=" & vloc)

Me.Destino=vloc2

End Sub

Con SQL sería asi:

Private Sub CodCli_AfterUpdate()
Dim vloc as String, vloc2 as String

Dim rst as Recordset

Dim miSQL as String

vloc = Left(Me.CodCli, 2)

miSQl="SELECT NOMBRE FROM POBLACIONES WHERE CODPOB = " & vloc

Set rst=CurrentDB.OpenRecordset(miSQL,dbOpenDynaset)

vloc2=rst("NOMBRE")

rst.close

Me.Destino=vloc2

End Sub

En ambos me sale el error 'error de sintaxis' en las siguientes lineas

-EN DLOOKUP


vloc2=Dlookup("NOMBRE","POBLACIONES","[CODPOB]=" & vloc)

-EN SQL

miSQl="SELECT NOMBRE FROM POBLACIONES WHERE CODPOB = " & vloc

no consigo depurarlo

Te escribí mal el código, pues estaba con que vloc era el valor numérico y no una cadena de texto. Cambialo por esto:

vloc2=Dlookup("NOMBRE","POBLACIONES","[CODPOB]='" & vloc & "'")

y

miSQl="SELECT NOMBRE FROM POBLACIONES WHERE CODPOB = '" & vloc & "'"

Es decir, añade una comilla simple antes de las comillas del igual, y después de vloc El & y comillas dobles-comilla simple- comillas dobles ( " ' " ) te lo pongo así separado para mayor claridad.

Perfecto! La función Dlookup no la conocía y era justo lo que necesitaba. Te agradezco también el código en sql, que es el que he acabado usando para comprender mejor el funcionamiento.

Un 10 para este experto por favor!

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas