Campo alfanumérico consecutivo

Acudo en tu ayuda pues otras veces me has solucionado alguna duda. Mi consulta es la siguiente: Tengo una base de datos, donde entre otras, tengo las siguientes tablas:
- Catalogos: idcatalogo, ncatalogo, IdProveedor, IdGrupo, idcaja, descripción
- Cajas: idcaja, nombrecaja (texto), grupoproductos.
He creado un formulario a través del cual quiero que me genere automáticamente al elegir del combobox "combocaja" el nombre de la caja, el ncatalogo de la tabla catálogos, el cual sería el compuesto de "nombrecaja nºcatalogo en esa caja", esto es, si tengo la caja "A", el primer catalogo asignado a esa caja será el "A 1", el segundo el "A 2", en la caja "B" tendré el catálogo "B 1", "B 2",... Y así sucesivamente.
El formulario contiene: un combobox llamado combocaja: SELECT [cajas].[idCaja], [cajas].[nombrecaja] FROM cajas ORDER BY [nombrecaja], [idCaja];
Más o menos tengo idea de cómo hacerlo, pero no me funciona, he dado muchas vueltas pero no sé que estoy haciendo mal, pues soy muy novata en esto de las bases de datos. ¿Por favor me puedes ayudar? Tengo el siguiente procedimiento de evento después de actualizar el combocaja:
Private Sub Combocaja_AfterUpdate()
If ncatalogo = 0 Then
nuevocatalogo
End If
End Sub
Function nuevocatalogo()
Dim contador As String
contador = DCount("[IdCatalogo]", "catalogos", "[idcaja] = " & Me.Combocaja)
'MsgBox contador
contador = contador + 1
Me.ncatalogo = nombrecaja And contador
End Function

1 Respuesta

Respuesta
1
Así a bote pronto deberías de poner el código
Function nuevocatalogo()
On Error Resume Next
Dim contador As String
contador = DCount("[IdCatalogo]", "catalogos", "[idcaja] = " & Me.Combocaja)
contador = contador + 1
Me.ncatalogo = nombrecaja & contador
End Function
Ya que el código DCount da error en caso de ser nulo y en cuanto a la Orden AND a mi no me funciona para unir caracteres, por lo que deberías de usar & (mayus+6).
Por lo demás parece estar bien todo, pero si no te funciona, te pediría que me mandases la aplicación comprimida para encontrar el error.
[email protected]
Hola Manuel,
A pesar de los cambios realizados sigue sin funcionar, aparece el número de catalogo que corresponde esa caja determinada, pero no el número de caja y el número de catalogo.
Te he enviado la aplicación comprimida tal y como me indicabas en tu mensaje.
Por otro lado, ¿cómo puedo actualizar los datos que ya tengo grabados, sin tener que volver a teclearlos de nuevo, puesto que no funciona con los catálogos que ya tengo grabados?
Gracias por todo y un saludo.
Tres puntos:
1. En la función nuevocatalogo() el nombre nombrecaja debería poner Combocaja ya que se usan los nombres que pone en vista diseño Botón derecho sobre el cuadro>Otras>Nombre que en este caso es Combocaja.
Function nuevocatalogo()
On Error Resume Next
Dim contador As String
contador = DCount("[IdCatalogo]", "catalogos", "[idcaja] = " & Me.Combocaja)
contador = contador + 1
Me.ncatalogo = me.Combocaja & contador
End Function
2. En el evento después de actualizar pones el condicionante de que ncatalogo tiene que ser cero para ejecutar la función nuevocatalogo, date cuenta que no es lo mismo cero que en blanco por lo que para estés casos podrías poner el código:
Private Sub Combocaja_AfterUpdate()
If ncatalogo = 0 or isnull(me.ncatalogo)=-1 Then
nuevocatalogo
End If
End Sub
3. El código incorpora un número formado por el IdCaja y el consecutivo, por lo que incorpora un número, y en el ejemplo que me ponías me decías A1, A2...
Si quisieras incorporar el nombre de la caja primero deberías de pones el campo ncatalogo como texto e incorporar el código:
Me.ncatalogo = me.Combocaja.Column(0) & contador
Funciona a la perfección muchísimas gracias. He hecho un pequeño cambio en el punto número 3: En lugar de "Me.ncatalogo = me.Combocaja.Column(0) & contador" he puesto   "Me.ncatalogo = me.Combocaja.Column(1) & "-" & contador".
La columna 1 porque es la que contiene los datos que quiero que aparezcan en el nombre del catalogo y &"-" porque de esta manera se queda separado el nombre de la caja del número de catalogo
Nuevamente mil gracias por tu ayuda

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas