Fallo en código para contador en access

Tengo un código para realizar un generador de dos contadores uno sólo cuenta hasta 6 y el otro cuenta sumando 1 . Ésto se usa para, generar números aéreos . Para un proyecto de base de datos . La verdad es que sólo me falta éste código para poder terminar la base de datos y ya se me han terminado las ideas . Muestro el código y lo que tengo realizado . Mi problema es que cuando pasa de 13 registros comienza el contador de 0 a 6 a contar mal .

El código que tengo puesto a un botón es

Private Sub Comando11_Click()
DoCmd.SetWarnings False
Dim i As Byte
For i = 1 To Stocks
DoCmd.RunSQL "Insert into Contador2(numero,control,compañia)Values(" & Left([Numero], 7) & "+" & i & "-1," & Numder & "+" & i & "-1,'" & Me.Compañia & "')"
Next
For i = 1 To 7
DoCmd.RunSQL "Update Contador2 set control=" & i & "-1 where control=" & i & "+6"
Next
For i = 1 To 3
DoCmd.RunSQL "Update Contador2 set control=" & i & "-1 where control=" & i & "+13"
Next

End Sub

Private Sub Numero_AfterUpdate()
Numder = Right([Numero], 1)
Stocks.SetFocus
End Sub

1 respuesta

Respuesta
2

Dijiste que era para 15 registros, y como el "paso" eran 6 te puse ese código. Ahora dices que son más

Lógicamente tienes que cambiar lo de Aux por el nombre de la tabla.

¡Gracias! Gracias Icue como siempre me salvas la vida . Entiendo ahora el mecanismo . Y ¿Me podrías aconsejar un manual de Visual que esté bien ?

Y Muchísimas Gracias Icue . Por cierto si te vienes a Tenerife tienes más de una comida paga . 

De todas formas, lo mejor sería que crearas una tabla Aux, con los mismo campos que la tabla que vas a usar, y poner el código como en la imagen

Lo que hace es pasar los registros a la tabla Aux, ordenarlos, hacer las operaciones pertinentes y después pasarlos ya "terminados" a la tabla Billetes. Después borra la tabla Aux para usarla la siguiente vez y dejar en blanco los cuadros de texto del formulario para que puedas poner otro numero.

¡Gracias! De Todas formas Icue , me figuro que para hacer hasta 200 registros quedaría el código así?

Private Sub Comando11_Click()
DoCmd.SetWarnings False
Dim i As Byte
For i = 1 To Stocks
DoCmd.RunSQL "Insert into aux(numero,control,compañia,numcontrol)Values(" & Left([Numero], 7) & "+" & i & "-1," & Numder & "+" & i & "-1,'" & Me.Compañia & "')"
Next
For i = 1 To 7
DoCmd.RunSQL "Update aux set control=" & i & "-1 where control=" & i & "+6"
Next
For i = 1 To 7
DoCmd.RunSQL "Update aux set control=" & i & "-1 where control=" & i & "+13"
Next
For i = 1 To 7
DoCmd.RunSQL "Update aux set control=" & i & "-1 where control=" & i & "+20"
Next
For i = 1 To 7
DoCmd.RunSQL "Update aux set control=" & i & "-1 where control=" & i & "+27"
Next
For i = 1 To 7
DoCmd.RunSQL "Update aux set control=" & i & "-1 where control=" & i & "+34"
Next
For i = 1 To 7
DoCmd.RunSQL "Update aux set control=" & i & "-1 where control=" & i & "+41"
Next
For i = 1 To 7
DoCmd.RunSQL "Update aux set control=" & i & "-1 where control=" & i & "+48"
Next
For i = 1 To 7
DoCmd.RunSQL "Update aux set control=" & i & "-1 where control=" & i & "+55"
Next
For i = 1 To 7
DoCmd.RunSQL "Update aux set control=" & i & "-1 where control=" & i & "+62"
Next
For i = 1 To 7
DoCmd.RunSQL "Update aux set control=" & i & "-1 where control=" & i & "+69"
Next
For i = 1 To 7
DoCmd.RunSQL "Update aux set control=" & i & "-1 where control=" & i & "+76"
Next
For i = 1 To 7
DoCmd.RunSQL "Update aux set control=" & i & "-1 where control=" & i & "+83"
Next
For i = 1 To 7
DoCmd.RunSQL "Update aux set control=" & i & "-1 where control=" & i & "+90"
Next
For i = 1 To 7
DoCmd.RunSQL "Update aux set control=" & i & "-1 where control=" & i & "+97"
Next
For i = 1 To 7
DoCmd.RunSQL "Update aux set control=" & i & "-1 where control=" & i & "+104"
Next
For i = 1 To 7
DoCmd.RunSQL "Update aux set control=" & i & "-1 where control=" & i & "+111"
Next
For i = 1 To 7
DoCmd.RunSQL "Update aux set control=" & i & "-1 where control=" & i & "+118"
Next
For i = 1 To 7
DoCmd.RunSQL "Update aux set control=" & i & "-1 where control=" & i & "+125"
Next
For i = 1 To 7
DoCmd.RunSQL "Update aux set control=" & i & "-1 where control=" & i & "+132"
Next
For i = 1 To 7
DoCmd.RunSQL "Update aux set control=" & i & "-1 where control=" & i & "+139"
Next
For i = 1 To 7
DoCmd.RunSQL "Update aux set control=" & i & "-1 where control=" & i & "+146"
Next
For i = 1 To 7
DoCmd.RunSQL "Update aux set control=" & i & "-1 where control=" & i & "+153"
Next
For i = 1 To 7
DoCmd.RunSQL "Update aux set control=" & i & "-1 where control=" & i & "+160"
Next
For i = 1 To 7
DoCmd.RunSQL "Update aux set control=" & i & "-1 where control=" & i & "+167"
Next
For i = 1 To 7
DoCmd.RunSQL "Update aux set control=" & i & "-1 where control=" & i & "+174"
Next
For i = 1 To 7
DoCmd.RunSQL "Update aux set control=" & i & "-1 where control=" & i & "+181"
Next
For i = 1 To 7
DoCmd.RunSQL "Update aux set control=" & i & "-1 where control=" & i & "+188"
Next
For i = 1 To 7
DoCmd.RunSQL "Update aux set control=" & i & "-1 where control=" & i & "+195"
Next
For i = 1 To 7
DoCmd.RunSQL "Update aux set control=" & i & "-1 where control=" & i & "+202"
Next
DoCmd.RunSQL "Insert into Contador2(numero,control,compañia,numcontrol) Select numero,control,compañía,numcontrol from aux"
DoCmd.RunSQL "delete * From aux"
For Each Control In Form.Controls
If Control.ControlType = AcTexbox Then
Control.Value = ""
End If
Next
End Sub

He llamado a Numbilletes "Stocks", porque es su auténtica denominación

me da error en el "Control" que pone cursiva 

Dice que es una variable: no se puede asignar a una expresión. Eso pone

Ya me comentas algo , gracias 

Eso es un disparate. Ese código valía porque al principio dijiste 15. Mira, con la tabla Aux hago un formulario que lo pongo como subformulario en el formulario independiente Formulario 1

Cuando pulso el botón Crear registros, los inserta en la tabla Aux y le digo que el subformulario "reconsulte su origen". El código del botón es

Una vez que ha pasado los registros al subformulario, los cuadros de texto se quedan en blanco para el siguiente número

Si ahora pulso el botón Calcular, va recorriendo los registros, actualizando el valor del cuadro de texto Control poniendo los valores correctos y los pasa a la tabla Billetes y deja en blanco Aux para posteriores usos y el resultado es

El código del botón Calcular es

Y con eso es suficiente.

De todas formas te recuerdo que te ofrecí mi correo por si tenías cualquier problema.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas