Sub ImprimirFactura( Evento )
Dim oReporte As Object
Dim oConsulta As Object
Dim oCampoID As Object
Dim oForm As Object
'El formulario activo
oForm = Evento.Source.Model.Parent
'El campo con el Id
oCampoID = oForm.GetByName("ID_Factura")
'Debe ser mayor a cero
If oCampoID.BoundField.Int < 0 Then Exit Sub
'La consulta en la que se basa el reporte
oConsulta = ThisDatabaseDocument.DataSource.QueryDefinitions.getByName ("conFiltro")
'Modificamos la consulta de modo que tome el registro actual
oConsulta.Command = "SELECT ""ID_Factura"",""Numero"" FROM ""tabFacturas"" WHERE ""ID_Factura"" = " & oCampoID.BoundField.Int
'El informe a mostrar
oReporte = ThisDatabaseDocument.ReportDocuments.getByName ("InformeFactura" )
'Mostramos el reporte
oReporte.Open
End Sub
RMG escribió:Hola aventis,
El campo numero, lo puedes anular, pues en un principio era el que iba a usar como clave, pero por motivos del diseño de la BD donde se repiten cada año los numeros de factura ya no podia ser clave.
El ID_Factura debe ser tu id de la tabla que debe corresponder con el del formulario basado en esa tabla, no se por que tiene otro nombre, de todas formas en el diseño del formulario lo puedes cambiar. Lo más importante es que tome el valor de un campo que no se pueda repetir.
oConsulta, efectivamente es una sentencia SQL que hace que la consulta conFiltro vaya cambiando de valor o sea de ID
Lo de los tildes es indistinto, siempre que te actue bien la consulta.
Y el orden de los registros lo puedes cambiar tanto en la consulta donde se basa el informe como dentro del diseño del informe
Espero haberte aclarado tus dudas
Saludos
RMG escribió:Hola aventis,
El informe enlaza con la consulta conInformeFactura, en el diseño de esta veras que se forma por dos tablas y varias consultas, una de ellas es la conFiltro, que es realmente la que hace que solo cargue un registro.
Abre individualmente conFiltro y si solo lleva un registro, te deberá actuar bien, pues al hacer la relacion entre ellas como solo lleva ese registro no deben aparecer más. si conFiltro lleva más de un registro, revisa el por que, pues aqui tienes el error.
Saludos
RMG escribió:Hola, si imprimes facturas del 2010, no deberia dar problemas con el 2011, pues el informe de la factura se basa el el id actual que estas visualizando, no asi la lista de facturas, que solo presenta las del año seleccionado.
De todas formas si no tienes nada confidencial y quieres adjuntar la BD le puedo dar una mirada.
Saludos
Sub SeleccionMateriaPrima(Event As Object)
Dim SelValue As String
Dim SelIndex As Integer
Dim ListBox As Object
Dim Form As Object
Dim Pos As Integer
ListBox=Event.Source.Model
Form=ListBox.Parent
SelIndex=ListBox.SelectedItems(0)
If SelIndex<0 Then Exit Sub
SelValue=ListBox.ValueItemList(SelIndex)
Form.CancelRowUpdates() 'else the value will be changed
Pos=findFirst(Form,"ID_Producto",SelValue)
If Pos>0 Then Form.absolute(Pos)
End Sub
Pos=findFirst(Form,"ID_Producto",SelValue)
RMG escribió:Hola aventis
Si el campo ID_Producto corresponde con el tuyo el error puede ser que no tengas la funcion de llamada "findFirst" ten en cuenta tambien que esta funcion "findFirst" llama a otra llamada "getXXX" Estas funciones son standar por lo que valen para todos los cuadros de lista, copialas de mi BD y las pegas donde tienes la macro de seleccion tuya
Saludos
Volver a Proyectos completos de ejemplo
Usuarios navegando por este Foro: No hay usuarios registrados visitando el Foro y 1 invitado