Problemas al almacenar datos desde visual

Hola, podrías apoyarme estoy generando un modulo de ventas en el cual el numero de factura va incrementando de acuerdo a la ultima venta realizada.
El programa funciona pero llega un momento en el que se bloquea y no permite realizar más ventas, por ejemplo la ultima venta fue la 1200 y debe generar la 1201, pero no la incrementa ysigue generando la venta 1200, y por cuestiones de la llave no acepta datos duplicados.
checando en la base de datos al momento de guardar la venta 1200 en vez que la mande como ultimo registro, la guarda como primer registro, razón por la cual al aplicar el refresh para el sistema el ultimo registro es el 1199 y por eso genera nuevamente la venta 1200 en vez de la venta 1201,,
que crees que sea, agradeceré mucho tus comentarios
Respuesta
1
Te voy a dar un consejo, lo mejor es crear una tabla llamada NumeroFactura la cual solo guardara el ultimo numero de la factura que se utilizo y cuando quieres crear una nueva factura el programa tomara ese numero y le sumara 1.
Te daré un ejemplo:
_____________________________________________________________
Dim conexion As ADODB.Connection
Dim RecordsetADO As ADODB.Recordset
Dim NumFactura as Long
_____________________________________________________________________________--
Public Sub Conectar()
Set conexion = New ADODB.Connection
With conexion
.Provider = "Microsoft.Jet.OLEDB.4.0"
.ConnectionString = "Data Source = RUTA Y NOMBRE DE LA BASE DE DATOS"
.Open
End With
End Sub
Public Sub Consultar(strSQL AS String)
Set RecordsetADO = New ADODB.Recordset
With RecordsetADO
.CursorLocation = adUseClient
.Open strSQL, conexion, adOpenStatic, adLockOptimistic,dCmdText
End With
End Sub
Public Sub VerNumeroFactura()
On Error Resume Next
Conectar
Consultar ("SELECT * FROM NumeroFactura")
NumFactura = CLng(RecordsetADO.Fields("Numero").value) + 1 ' En fields se indica el numbre del campo
Numero.Text = NumFactura
End Sub
Private Sub Form_Load()
VerNumeroFactura ' Se llama al procedimiento para que muestre el numero cuando se carga el Form
End Sub
_________________________________________________________________________________________________________
Ahora creamos otro procedimiento que se encarga de editar el Numero guardado
en la tabla después de que se guardo la factura y la incremente para la
próxima factura.
Public Sub EditarNumero()
Conectar
Consultar ("SELECT * FROM NumeroFactura")
RecordsetADO.Fields("Numero").value = CLng(Numero.Text)
objRecDG.Update
End If
_________________________________________________________________________________________________________
Private Sub Command1_Click()
Conectar
' Se supone que vamos a guardar la factura con este evento de algun Boton
' Entonces despues de guardar nuestra nueva factura ponemos
' Se pone despues de todo el proceso de Guardar Factura.
EditarNumero
VerNumero
End Sub
______________________________________________________________________
Espero y sigas mi consejo, lo otro es que con lo que tu estas haciendo quizá al momento de realizar la consulta del numero de factura no la estés ordenando de Mayor a Menor
Por Ejemplo la consulta sobre tu tabla directa de Facturas podría ir así:
Consultar ("SELECT * FROM Facturas " & _
                 "ORDER BY Numero DESC")
NumFactura = CLng(RecordsetADO.Fields("Numero").value) + 1
Numero.Text = resultado
_______________________________________________________________________
Espero y te sirva mi ayuda, cualquier duda me dices.
Bye.
En mi respuesta anterior donde diga objRecDG cambialo por RecordsetADO lo que pasa es que me equivoque como estoy haciendo un programa estoy ocupando una variable de ese nombre que es bastante común en todo mi programa.
Muchísimas gracias por tus comentarios. Lo voy a intentar realizar, de la forma como me indicas.
Gracias por leer mi pregunta y regalarme unos minutos de tu tiempo
Que tengas un excelente día

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas