Cuadro combinado no funciona en formulario

Quería pedirles de su ayuda con este cuadro combinado independiente que tengo en un formulario (facturas de venta) con un subformulario (linea facturas de venta) vinculados con el campo numero.

El cuadro combinado lo tengo en el formulario para buscar facturas, pero como hay facturas que todavía no tienen su folio, al seleccionar una de ellas el cuadro combinado no funciona (de hecho me busca un registro que no corresponde y no se lo que puede ser. Pondré un ejemplo al buscar una factura con su folio y otra sin su folio.

2 Respuestas

Respuesta
1

Creo que no entendí la pregunta, porque no dices si ese campo que aparece en el cuadro combinado pertenece a Correlativo y si éste campo está en la tabla. Si así, es y tengo el formulario Ventas, con el combinado Buscar, con dos columnas, aunque la dependiente es la de NumFactura( te dejo los encabezados para que veas los campos) y selecciono un valor que no tiene Numfactura

Me abre el registro que tiene ese correlativo

Por el contrario, si tiene Numfactura

Me abre el registro que tiene ese número

El código del evento Después de actualizar del combinado Buscar es

Private Sub Buscar_AfterUpdate()
If IsNull([Buscar]) Then
Me.RecordSource = "select * from ventas where correlativo=" & Me.Buscar.Column(1) & ""
Else
Me.RecordSource = "select * from ventas where numfactura='" & Me.Buscar & "'"
End If
End Sub

Pero, si todos los registros van a tener siempre el número correlativo, bastaría con poner la primera línea.

Eso mismo es lo que necesito.

Agregue el código que mencionas y no le coloque estas líneas por lo que tu mencionas

Else
Me.RecordSource = "select * from ventas where numfactura='" & Me.Buscar & "'"

Funciona super bien con los espacios vacíos del numero de factura, pero cuando le indico un registro con numero de factura, lo selecciona pero la factura no cambia, sigue siendo la anterior que había seleccionada

Esta seria la consulta que tengo en el cuadro combinado

En el Origen de la fila del combinado, el primer campo que aparece es Combustible cuando según la imagen de la consulta debería ser FVenta y la columna dependiente corresponde a ese campo, por tanto "no te encuentra" el numero de factura. Repasa el origen de la fila del combinado.

Tienes toda la razón, eso era, también tuve que agregar todo el código que me enviaste y funciona super bien. Pero al momento de buscar facturas con el cuadro combinado, después quiero avanzar o retroceder con los botones de registros no funcionan. Se puede hacer algo para que no pase eso 

Como ésta página se está volviendo una mierda, ya que ni avisan de que solicitan ampliación de pregunta te aconsejaría que si necesitaras dicha ampliación, simplemente comunícamelo a [email protected].

Mira, si tengo la tabla Ventas

Puedes ver que la última corresponde a F21.002 y el anterior no tiene Numero de factura. En el formulario, en el combinado selecciono ese Número de factura y

Si ahora pulsara el botón de la flechita a la izquierda( te pongo sólo el del registro anterior, ya que el siguiente sería igual con a+1

El código del botón es

Private Sub Comando53_Click()
Buscar = ""
Dim a As Byte
a = IdVenta
Me.RecordSource = "select * from Ventas"
DoCmd.GoToRecord , , acGoTo, a - 1
End Sub

Pero convendría saber como tienes construida la tabla Ventas.

Respuesta
1

Si me indica como está diseñada la consulta del cuadro combinado le puedo colaborar. A propósito en relación con una respuesta que presenté recientemente sobre un botón de buscar, este ejemplo encaja para su formulario. Puede solicitarlo a [email protected], favor en el asunto hacer referencia a la consulta. Es algo como esto:

Parte de este código sirve para su cuadro combinado.

Ahora, independiente que las facturas tengan folio debe existir un campo autonumérico, es decir, por ejemplo IDFactura o algo similar, como supongo es un formulario dependiente en la consulta origen del cuadro combinado debe ir IDFactura, de esta forma programa el evento Después de actualizar del cuadro combinado con algo como:

    Dim rs As Object
    Set rs = Me.Recordset.Clone
    rs.FindFirst "[idfactura] = " & Str(Nz(Me![Cuadro_combinado], 0))
    If Not rs.EOF Then Me.Bookmark = rs.Bookmark

En donde Cuadro_combinado es el nombre de su cuadro combinado, de esta forma se olvida si existe la FVenta o el Correlativo.

La consulta del cuadro combinado es esta

Y tambien tengo una macro incrustada que seria esta

Con respecto al  correlativo que tengo se llama (Numero) y el numero de folio es FVENTA, de hecho están indicado en las etiquetas del formulario.

Agregue el código que me envió, pero hace el mismo error

Cambie la macro por código y en el evento Después de actualizar anote este código

    Dim rs As Object
    Set rs = Me.Recordset.Clone
    rs.FindFirst "[Numero] = " & Str(Nz(Me![Cuadro_combinado57].Column(1), 0))
    If Not rs.EOF Then Me.Bookmark = rs.Bookmark

Esto si la columna dependiente es la 1.

Si ve que no puede envíeme la base de datos a [email protected], favor en el asunto anotar la consulta.

Si utiliza RecordSource no podrá desplazarse por los registros.

Lo estan confundiendo basta con que en el cuadro combinado haga referencia al correlativo que si está en todas las filas. No puede utilizar RecordSource porque NO podrá desplazarse con los selectores de registro. Si mira la macro utiliza la clausula Where, esto es lo que se debe modificar pero por código.

Le voy a ilustrar con este ejemplo a ver si le sirve:

Tengo este formulario con un cuadro combinado con nombre cboBuscar. Ahora voy a buscar el correlativo 2100200, observe que no tiene número de factura.

Y obtengo:

En consecuencia me muestra el correlativo y como no hay Factura me deja el campo FVENTA vacío. Para esto utilizo el siguiente origen de datos:

Y utilizo la columna Numero (porque está en todas las columnas), en este caso la 2.

Ahora programo el evento Después de actualizar del cuadro combinado cboBuscar.

Private Sub cboBuscar_AfterUpdate()
    Dim rs As Object
    Set rs = Me.Recordset.Clone
    rs.FindFirst "[Numero] = " & Str(Nz(Me![cboBuscar], 0))
    If Not rs.EOF Then Me.Bookmark = rs.Bookmark
End Sub

Y esto es todo, a su correo le estoy enviando el ejemplo con otros ejemplos de búsquedas. Vuelvo y le repito como es un formulario dependiente NO se debe hacer con RercodSource .... que ignorancia.

Muchas gracias don Eduardo, seguí sus pasos y funciona a la perfección. Y los botones del registro quedan operativos sin ningún problema. Un abrazo de Chile

Me alegro y ánimo

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas