Validar stock en tablas vinculadas

Tengo unas tablas vinculadas, y he creado este código para validar el stock:

Dim vBob, vTBob As Variant
Dim rst As Recordset
Dim vFecha, vTfecha As Variant
Dim vEnvio, vTEnvio As Variant
Dim vstoc As Boolean
vBob = Me.num_bob.Value
vEnvio = Me.num_env.Value
If IsNull(vBob) Then Exit Sub
vFecha = Forms!SALIDAS.fenv.Value
Set dbs = CurrentDb
Set rst = dbs.OpenRecordset("C:\Users\EMILIO\Desktop\PRUEBA\BBDD.mdb")
Set rstv = dbs.OpenRecordset("pedidosdet")
If rst.RecordCount = 0 Then
MsgBox "Esa bobina no está en el almacén", vbInformation, "AVISO"
GoTo Salida
End If
rst.MoveFirst
Do Until rst.EOF
vTBob = rst.Fields("num_bob").Value
vTfecha = rst.Fields("fenv").Value
If vTBob = vBob Then
If IsNull(vTfecha) Then
With rst
.Edit
.Fields("fenv").Value = vFecha
.Fields("stock").Value = False
.Fields("num_env").Value = vEnvio
.Update
End With
Exit Do
Else
MsgBox "No hay stock disponible", vbInformation, "SIN STOCK"
Me.num_bob.Value = Null
Exit Do
End If
End If
rst.MoveNext
Loop
Salida:
rst.Close
Set rst = Nothing

Pero me da error en estas líneas:

Set rst = dbs.OpenRecordset("C:\Users\EMILIO\Desktop\PRUEBA\BBDD.mdb")
Set rstv = dbs.OpenRecordset("pedidosdet")

Tengo una tabla pedidosdet:

num_bob, fenv, stock

Otra tabla salidasdet:

num_bob, fenv, num_env

Al meter el num_bob en salidasdet ejecuto el código anterior.

1 respuesta

Respuesta
1

Para corregir el error:

Primero tienes que declarar dos variables para las dos bases de datos (tu tienes una: dbs). Para esto, añade al principio del código estas dos líneas:

Dim dbs1 as Database ' Para la BD sobre la que abrirás rst

Dim dbs2 as Database ' Para la BD sobre la que abrirás rstv

Segundo:

cambia esta lineas:

Set dbs = CurrentDb
Set rst = dbs.OpenRecordset("C:\Users\EMILIO\Desktop\PRUEBA\BBDD.mdb")
Set rstv = dbs.OpenRecordset("pedidosdet")

por estas otras:

set dbs1=OpenDatabase("C:\Users\EMILIO\Desktop\PRUEBA\BBDD.mdb")

Seet rst=dbs1.OpenRecordset("nombre de la tabla")

Set dbs2=CurrentDb

Set rstv = dbs2.OpenRecordset("pedidosdet")

Muchas gracias por la contestación, pero me da error en la línea:

Set dbs2=CurrentDb

El error que da es el siguiente:

Se ha producido el error '3734' en tiempo de ejecución:

El usuario 'Admin' de la máquina 'EMILIO-PC' ha situado la base de datos en un estado que impide que sea abierta o bloqueada.

Una cosa: ¿Las tablas están en la misma BD (archivo BBDD.mdb)? Si es así, te llega con:

Dim dbs as Database

set dbs=CurrentDb

Set rst=dbs1.OpenRecordset("salidasdet")

Set rstv = dbs2.OpenRecordset("pedidosdet")

Disculpa, cuando leí la pregunta pensé que las tablas estaban en dos archivos distintos.

No, no están en la misma base de datos las tablas, en la aplicación donde trabajo tiene tablas vinculadas a esa base de datos.

He solucionado ese problema en:

Set dbs2=CurrentDb

debería de poner:

Set dbs2=OpenDatabase("C:\Users\EMILIO\Desktop\PRUEBA\BBDD.mdb")

Pero ahora al compilar me da otro error, y no entiendo porque, lo hace todo bien, pero sí vuelvo a meter un num_bob que ya no esté en stock, me da el siguiente error:

Se ha producido el error '3314' en tiempo de ejecución:

El campo 'salidasdet.num_bob' no puede contener un valor Null porque la propiedad Required de este campo es True. Escriba un valor en este campo.

Me.num_bob.Value = Null

Prueba con Me.num_bov.Value="", o si no a quitarle el requerido a ese campo en la tabla

Al final he decidido quitar esa línea de comando, de todas formas, no puedes dejarlo en blanco ese campo.

Muchas gracias por tu ayuda, me has salvado la vida y algo más jajaj, te dejo en favoritos, espero que no te molesto, sí algún día te pregunto algo.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas