Foros del Web » Programación para mayores de 30 ;) » Programación General » Visual Basic clásico »

Numerar facturas

Estas en el tema de Numerar facturas en el foro de Visual Basic clásico en Foros del Web. Tengo un tabla access con IdFactura,IdProveedor,NumeroFactura. En la tabla hay proveedores diferentes y cada uno tiene su numeración, es decir puede haber varios con el ...
  #1 (permalink)  
Antiguo 16/07/2008, 03:29
 
Fecha de Ingreso: abril-2008
Mensajes: 19
Antigüedad: 16 años
Puntos: 0
Numerar facturas

Tengo un tabla access con IdFactura,IdProveedor,NumeroFactura. En la tabla hay proveedores diferentes y cada uno tiene su numeración, es decir puede haber varios con el mismo numero de factura, lo que quiero es que se le asigne automáticamente el número que le corresponda a cada uno de ellos, teniendo en cuenta el anterior que tenían o si no tenían que empiece en 1.

Como puedo conseguir esto?
  #2 (permalink)  
Antiguo 16/07/2008, 04:33
Colaborador
 
Fecha de Ingreso: enero-2008
Ubicación: Unas veces aquí, otras veces allí
Mensajes: 1.482
Antigüedad: 16 años, 3 meses
Puntos: 37
Respuesta: Numerar facturas

Una solución podría ser crear una consulta limitada al proveedor y ordenada por número de factura. Si la consulta arroja registros, le sumas una unidad al último registro y si no arroja ninguno, le pones 1.

Algo así:

SELECT NumeroFactura FROM LaTabla WHERE IdProveedor = " & VariableProveedor & " ORDER BY NumeroFactura"

  #3 (permalink)  
Antiguo 17/07/2008, 02:15
 
Fecha de Ingreso: abril-2008
Mensajes: 19
Antigüedad: 16 años
Puntos: 0
Respuesta: Numerar facturas

Gracias por tu respuesta, tengo una duda.
Tengo el siguiente código:

Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
Dim conexion As OleDbConnection = New OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0; data source=C:\FACTURACION\FACTURACION.MDB")
Dim dafacturar As OleDbDataAdapter = New OleDbDataAdapter("SELECT IDFACTURA,FECHA,NUMERO,DTO,IMPDESCUENTO,BASEIMPONI BLE,FACTURAR FROM FACTURACION WHERE FACTURAR=FALSE", conexion)
Dim dsproveedores As DataSet = New DataSet
Dim cmdBuilder As New OleDbCommandBuilder(dafacturar)
With dafacturar
.InsertCommand = cmdBuilder.GetInsertCommand
.DeleteCommand = cmdBuilder.GetDeleteCommand
.UpdateCommand = cmdBuilder.GetUpdateCommand
End With
Dim dt As DataTable = DirectCast(Me.DataGridView1.DataSource, DataTable)
dafacturar.Update(dt)
conexion.Close()

End Sub

En el que a través de un datagrid visualizo la información que se va a pasar a la tabla.

Mi duda es, desde este punto como le indico la numeración en función del proveedor?
  #4 (permalink)  
Antiguo 17/07/2008, 04:18
Colaborador
 
Fecha de Ingreso: enero-2008
Ubicación: Unas veces aquí, otras veces allí
Mensajes: 1.482
Antigüedad: 16 años, 3 meses
Puntos: 37
Respuesta: Numerar facturas

Cita:
Iniciado por jaf16 Ver Mensaje
Gracias por tu respuesta, tengo una duda.
Tengo el siguiente código:

Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
Dim conexion As OleDbConnection = New OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0; data source=C:\FACTURACION\FACTURACION.MDB")
Dim dafacturar As OleDbDataAdapter = New OleDbDataAdapter("SELECT IDFACTURA,FECHA,NUMERO,DTO,IMPDESCUENTO,BASEIMPONI BLE,FACTURAR FROM FACTURACION WHERE FACTURAR=FALSE", conexion)
Dim dsproveedores As DataSet = New DataSet
Dim cmdBuilder As New OleDbCommandBuilder(dafacturar)
With dafacturar
.InsertCommand = cmdBuilder.GetInsertCommand
.DeleteCommand = cmdBuilder.GetDeleteCommand
.UpdateCommand = cmdBuilder.GetUpdateCommand
End With
Dim dt As DataTable = DirectCast(Me.DataGridView1.DataSource, DataTable)
dafacturar.Update(dt)
conexion.Close()

End Sub

En el que a través de un datagrid visualizo la información que se va a pasar a la tabla.

Mi duda es, desde este punto como le indico la numeración en función del proveedor?
Pero.. ¿Dónde está el proveedor, en la misma tabla, en otra..?
Si es en la misma, ¿cómo se llama el campo? y si es en otra, ¿qué campos tiene?

  #5 (permalink)  
Antiguo 17/07/2008, 05:28
 
Fecha de Ingreso: abril-2008
Mensajes: 19
Antigüedad: 16 años
Puntos: 0
Respuesta: Numerar facturas

Está en la misma tabla de Facturacion,
  #6 (permalink)  
Antiguo 17/07/2008, 08:01
Colaborador
 
Fecha de Ingreso: enero-2008
Ubicación: Unas veces aquí, otras veces allí
Mensajes: 1.482
Antigüedad: 16 años, 3 meses
Puntos: 37
Respuesta: Numerar facturas

Cita:
Iniciado por jaf16 Ver Mensaje
Está en la misma tabla de Facturacion,
Bueno, como tampoco das demasiada información, vamos a suponer que el campo que indica al proveedor se llama idProveedor. En tal caso podrías usar una función que devuelva el último número de factura incrementado en una unidad, algo así:

Código:
Public Function BuscarFactura(ByVal Prov As Long) As Long

        Using oCn As OleDbConnection = New OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0; data source=C:\FATURACION\FACTURACION.MDB")
            Dim sql As String = "SELECT MAX(Numero) As ultimo FROM Facturacion WHERE idProveedor = " & Prov
            Try
                Dim oDa As OleDbDataAdapter = New OleDbDataAdapter(sql, oCn)
                Dim oDs As New DataSet
                oDa.Fill(oDs, "Tabla")
                Dim oDt As New DataTable
                oDt = oDs.Tables("Tabla")
                Return oDt.Rows(0).Item(0) + 1
            Catch ex As Exception
                MsgBox(ex.Message)
            End Try
        End Using
    End Function
Para llamarla sólo le tienes que pasar como parámetro el id del proveedor (en este caso estamos suponiendo que el campo idProveedor es de tipo Long, si no es así modifica el parámetro de antrada a la función y la consulta).

Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 11:39.