Actualizar cuadro combinado cuando el código de barras no existe

Apreciados expertos tengo el siguiente formulario desvinculado para registrar compras.

Como muestra la llamada necesito que al pasar el lector de código de barras si éste no está en la tabla de productos se active el formulario de productos pasando el nuevo código de barras y se llene la demás información.

Es de anotar que el formulario es totalmente desvinculado y la base de datos está en PostgreSQL alojada en la nube. Lo había realizado con tablas vinculadas en Access utilizando el evento Al no estar en la lista, pero no lo he logrado con formularios desvinculados.

1 respuesta

Respuesta
1

Martha tiene razón cuando trabajamos sin tablas vinculadas y más aún si el backend está en la nube cambia totalmente la forma de interactuar con la base de datos. En este video explico la forma de hacer un CRUD con Access y PostgreSQL.

https://youtu.be/4mh7XJAK31g 

Puede utilizar el método recordset_desc() de la clase clsEPFADO. Le dejo el código para que únicamente cambie el nombre de su cuadro combinado y el formulario de productos.

Private Sub cbocodigobarra_NotInList(NewData As String, Response As Integer)
  On Error GoTo hay_error
  DoCmd.SetWarnings (False)
  Dim intReply As Integer
       intReply = MsgBox("El Código de barras '" & NewData & _
       "' no está en la lista, quiere adiconarlo ?", vbYesNo, "Registrando Compra")
       If intReply = vbYes Then
          'Abre el formulario frmClientes pasando los nuevos
          'datos en el paramétro OpenArgs
           DoCmd.OpenForm "frmproductos", , , , , acDialog, NewData
          If db.OpenConnection = False Then
             Response = acDataErrContinue
             Exit Sub
          End If
          'Creo el origen de datos para el cuadro combinado cboproducto
          Set Me.cboproducto.Recordset = db.recordset_desc("select idproducto,producto,codigobarras,unmedida from tblproductos  order by producto", 1)
          'Creo el origen de datos para el cuadro combinado cbocodigobarra
          Set Me.cbocodigobarra.Recordset = db.recordset_desc("select idproducto,codigobarras,unmedida from tblproductos order by codigobarras", 1)
          Response = acDataErrAdded
          Call cbocodigobarra_AfterUpdate
       Else
          MsgBox "Por favor seleccione un código de la lista", vbInformation, "Registrando Compra"
          'Tratamos el error y decimos a Access que continue
          Me.Undo
          Response = acDataErrContinue
       End If
hay_error_exit:
   Exit Sub
hay_error:
        MsgBox Err.Number
        Response = acDataErrAdded
        Resume hay_error_exit
End Sub

En mi caso utilizo una tabla temporal para registrar los ítems de la factura. Observe la gran ventaja de utilizar el método recordset_desc(). El método crea un recordset desconectado lo que libera el tráfico con el servidor. Esta forma de trabajar permite mayor agilidad y seguridad algo que no es eficiente con tablas de Access.

Espero lo pueda adaptar, si surge algún inconveniente no dude en hacérmelo saber.

Eduardo defectivamente sus conocimientos son sorprendentes, me funcionó perfectamente. Mil gracias

Enrique Feijóo, deje hacer votos negativos, más exactamente sobre estar respuesta el día 28 de mayo, preocúpese por aprender de los demás, si bien es cierto usted no tiene ni idea de Access avanzado, no sabe que es un módulo de clase menos conoce el manejo web de Access con PostgreSQL, ya le ofrecí que le puedo enseñar, pero por favor deje que los demás podamos opinar.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas