Generación de un código de cliente mediante variables y caja de texto Access 07 y VBA

Soy novatisimo en access y me han solicitado un formulario el cual lo tengo casi un 80% completo, el problema que me surgió fue el siguiente.

El formulario tiene un campo llamado cod_solicitante el cual sus datos se generan a través de otro campo

llamado local_solicitante. Te envío el código que he realizado hasta el momento

Dim rst As Dim valor As String

<span class="scayt-misspell" data-scaytid="74" data-scayt_word="Dim">Dim</span> código As String
Dim incremento As String

código = "6"
incremento = "01"
Set rst = Me.RecordsetClone

valor = código & local_solicitante.Value & incremento
<span class="scayt-misspell" data-scaytid="78" data-scayt_word="rst">rst</span>.FindFirst "cod_solicitante = '" & valor & "' "
If rst.NoMatch Then
<span class="scayt-misspell" data-scaytid="91" data-scayt_word="MsgBox">MsgBox</span> "="
cod_solicitante.Value = código & local_solicitante.Value & incremento
Else
<span class="scayt-misspell" data-scaytid="92" data-scayt_word="MsgBox">MsgBox</span> "+1"
cod_solicitante.Value = código & local_solicitante.Value & (incremento + 1)
End If

Bueno el problema es que con eso me funciona excelente pero tengo un pequeño problema

EJ:

Si ingreso por primera vez ABCD en el campo local_solicitante, el campo cod_solicitante me

Dará como resultado 6ABCD01, si lo ingreso por segunda vez el sistema me arroja como

Resulta 6ABCD2, pero cuando lo ingreso nuevamente debería darme como resultado

6ABCD3 pero lo que me da de resultado es ABCD2 nuevamente

Se que lo que quizás le falta es algún ciclo pero la vdd no se utilizarlo si me pudieras ayudar te lo

1 Respuesta

Respuesta
1

Prueba con este otro código:

Dim rst As Recordset
Dim valor As String
Dim código As String
Dim indice As Integer
código = "6"
indice = 1
Set rst = Me.RecordsetClone
valor = código & local_solicitante.Value
rst.FindLast "cod_solicitante like '" & valor & "*'"
If rst.NoMatch Then
MsgBox "="
cod_solicitante.Value = código & local_solicitante.Value & Format(indice, "00")
Else
MsgBox "+1"
indice = Right(rst("cod_solicitante"), 2)
cod_solicitante.Value = código & local_solicitante.Value & Format(indice + 1, "00")
End If

OK eso cambio un poco las cosas

Pero por ejemplo estoy insertando el local b600, el codigo solicitante que me genera es el 6b60001, y lo ingreso hasta ahi esta perfecto

Pero cuando voy a ingresar un nuevo registro e ingreso el b600 nuevamente me deberia generar de inmediato el 6b60002 pero me genera nuevamente el 6b60001

que podra ser amigo

de antemano se agradece mucho tu ayuda

Pues a mi me funciona correctamente...

¿El código lo colocaste en el evento después de actualizar del campo local_solicitante?

si lo tengo ahí y mira me genera el primer registro que seria el 01 y también me esta generando el 02 en caso que sea el mismo, había copiado mal algo.

Pero después del 02 no me esta generaando el 03 ni 04 así suucesivamente

si quieres me mandas el que realizaste tu a mi mail y yo ver quizás lo que tengo mal

mi mail es [email protected]

puede que quizás tenga algún problema en el botón

la verdad no se amigo

Te subo aquí el ejemplo. Pero en mi ejemplo no hay ningún botón, el código se ejecuta cada vez que actualizas el campo local_solicitante. Si tu generas el cod_solicitante por medio de un botón, tendrás que poner el código en el evento Al hacer click del botón.

http://www.filebig.net/files/XDgVvxyvak

ok pero a lo que me refería con un botón

era al botón de agregar registro

quizás ahí podría llegar a tener algo que me este dando algún problema

si quieres te envío lo que tengo para que lo revises por que la verdad no se que mas hacer ,mañana tengo que entregarlo así que lo necesito urgente

Pues mandamelo a ver

enviame tu mail

o no se si podras descargarlo de aca https://www.dropbox.com/s/iprsvv8ff1v863o/Formulario.accdb

El problema lo tienes en cómo abres el formulario. Tienes que abrirlo en un registro nuevo, porque como tú lo tienes te lo abre en el primer registro, y por eso te da errores.

Si le cambias la propiedad Entrada de Datos a sí, o le pones en el evento Al cargar del formulario: docmd. GoToRecord,, acNewRec te debería ir.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas