Uso Correcto de Comilas en Dlookup VBA Access

Alguien podría explicarme el uso correcto de las comillas en Dlookup, no me cuadra por completo, tengo el siguiente código que no me funciona:

Dim Id_Proveedor As Integer
Id_Proveedor = DLookup("Id", "tbl_AlmacenProveedores", "RazonSocial =" & "'Me.txt_Proveedor.Value &'")

Tengo un formulario que escoge el nombre del proveedor y necesito sacar el id (llave) de esta tabla y almacenarla en Id_Proveedor, el error que indica es uso no válido de null.

1 respuesta

Respuesta
1

A primera vista te falta una comilla simple después del = de RazonSocial y algo más.

Me.Id_Proveedor = DLookup("Id", "[tbl_AlmacenProveedores]", "RazonSocial ='" & Me.txt_Proveedor &"'")

Si Id_Proveedor es un Control en Formulario, mejor apoyarlo con Me.

Saludos >> Jacinto

Muchas gracias jacinto, lo que quiero es almacenar en la variable Id_Proveedor para luego enviarla a otra tabla con una sentencia SQL, actualmente sigue con el mismo error.

Me dice "Se ha producido el error '94' en tiempo de ejecución:  uso no válido de Null", uso el depurador y me.txt_Proveedor tiene un valor de 2!!!.

Estoy usando un cuadro combinado para escoger al proveedor en txt_Proveedor, osea que vota los valores de la llave (id) de ese cuadro??.  Si fuera así ya no necesitaría usar el Dlookup.

Si justo estás usando un Combo, llevas razón saca el Id como una columna más del Combo.

Por otro lado si el Me. Txt_IdProvveedor es numérico la Función de arriba no es válida y debe ser: >> Haz la prueba pero te dará error igual porque aunque la Función sea correcta supongo que el campo RazonSocial es un Texto

Me.Id_Proveedor = DLookup("Id", "[tbl_AlmacenProveedores]", "RazonSocial = "  & Me.txt_Proveedor)

Mis saludos >> Jacinto

Si el campo RazonSocial es texto, hice la prueba y no funciona.

Por otro lado ya que txt_Proveedor me devuelve el id de la tabla de proveedores, que es justo lo que necesito para exportar los datos a otra tabla, hice esto:

DoCmd.RunSQL "INSERT INTO tbl_AlmacenIngresoFecha (IdProveedor, FechaIngreso, NIngreso, FechaDocumento, NDocumento, Para, Destino, Comprador, Modalidad, Observaciones, Usuario) VALUES ('& Me.txt_Proveedor.Value &', txt_Fecha, txt_NIngreso, txt_FFactura, txt_NFactura, txt_Para, txt_Destino, txt_Comprador, txt_Modalidad, txt_Observaciones, Forms![frm_UsuarioActivo]![txt_UsuarioActivo].value)"

No hay error pero no manda nada, hice la prueba reemplazando el campo por un número y manda :(, alguna otra idea??

Muchas gracias, lo que hice es sacar el valor de formulario así

DoCmd.RunSQL "INSERT INTO tbl_AlmacenIngresoFecha (IdProveedor, FechaIngreso, NIngreso, FechaDocumento, NDocumento, Para, Destino, Comprador, Modalidad, Observaciones, Usuario) VALUES (Forms![frm_AlmacenIngresoReg]![txt_Proveedor].value, txt_Fecha, txt_NIngreso, txt_FFactura, txt_NFactura, txt_Para, txt_Destino, txt_Comprador, txt_Modalidad, txt_Observaciones, Forms![frm_UsuarioActivo]![txt_UsuarioActivo].value)"

Para que tengas otra Opción te cito el código a utilizar:

Dim StrSQL As String
Dim Rst As DAO.Recordset
StrSQL = “SELECT * FROM tbl_AlmacenIngresoFecha;”
Set Rst = CurrentDB.OpenRecordset(StrSQL,dbOpenDynaset)
With Rst
.AddNew
¡IdProveedor = Forms……..
¡FechaIngreso = Me.Txt_Fecha
…….
….
.Update
Rst.Close
Set Rst = Nothing
StrSQL = “”

Mis saludos >> Jacinto

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas