Convertir datos string a numerico en access 2007

Tengo un formulario donde registro instrumentos de medición con un combo donde tengo almacenadas las familias de unidades de medición por ejemplo MASA, PRESIÓN, LONGITUD... Y cada instrumento de medición tiene un campo con código alfanumérico por ejemplo la familia LONGITUD tiene el consecutivo L00001-L00002-L00003... Lo que quiero es cuando abra el formulario de registro de instrumentos de medición me traiga por defecto ese campo código consecutivo más uno (1); ósea que para la familia LONGITUD traiga el L00004

1 Respuesta

Respuesta
1
La solución óptima a lo que propones pasaría por modificar la estructura de tus tablas, de manera que dividieras el código que comentas en dos: uno tipo string y otro tipo numérico. Después unir los valores de ambos campos es algo muy sencillo. De esta manera:
- Tendrías un campo numérico para operar con él cuanto quisieras de una manera muy cómoda, tanto para consultas como para código
- Te evitarías hipotéticos problemas al tener un campo tan "importante" como un código mezclando tipos.
Si el campo estuviera declarado como string, pero su valor fuera un número, Access automáticamente lo reconoce como número y te deja operar con él (y si no, con código, hacer eso es sólo una línea). Pero desde el momento que le añades una letra (esa L en tu caso), ya bloqueas toda posibilidad de operación numérica.
Evidentemente sí se podría hacer lo que pides con código, pero, además de tener que programar en VBA deberías añadir códigos por todas partes para poder operar con el valor de ese campo. Eso es complicado y aumenta enormemente la posibilidad de que se produzcan errores.
Dicho lo anterior espero tus comentarios para ver qué hacemos en función de lo que decidas.
Gracias experto
Conozco el lenguaje VB pero nunca lo he probado en aceess se que tiene que ver con la creación de módulos pero no se como se llaman al formulario... Si sabes algo me seria de gran utilidad.
Gracias
Tu pregunta, sin más datos, es un poco abierta para poderte dar detalles muy concretos. Así que te lo voy a explicar a través de un ejemplo:
Supón que tienes un formulario con dos campos:
- Campo Cod, que recoge el código (ese L00001)
- Campo familia, que recoge el nombre de la familia
Para añadir un nuevo registro vamos a insertar un botón de comando. A ese botón, al colocarlo en el formulario, le cancelamos el asistente. Hacemos click con el botón de la derecha, marcamos la opción "generar evento" y, en la nueva pantalla que te sale, le dices que quieres generar código.
Se te abrirá el editor de VB con dos líneas: una de apertura que pone Private Sub comandox_Click() y otra de cierre que pone End Sub. Entre estas dos líneas tienes que añadir el siguiente código (esas líneas que te salen por defecto no las debes tocar, pero yo te las añado, aunque no sean exactamente iguales, para que te puedas ubicar)
Te he marcado en negrita el nombre del campo Cod que te comentaba más arriba. Si, por ejemplo, tu campo se llamara Codig tendrías que cambiar lo que está en negrita por Codig.
EL código es:
---
Private Sub Comando4_Click()
    Dim vCod As String
    Dim vLetraCod As String
    Dim vNum As String
    Dim vLongitud As Long
    Dim vNumCeros As String
    vCod = Me.Cod.Value
        'Saca la letra del código
    vLetraCod = Left(vCod, 1)
        'Coge los 5 caracteres a contar desde la derecha
    vNum = Right(vCod, 5)
        'Convierte esos caracteres en entero
    vNum = CInt(vNum)
        'Le suma una unidad
    vNum = vNum + 1
        'Comprueba la longitud del número resultante
    vLongitud = Len(vNum)
            'Segun la longitud determina el número de ceros precedentes
        Select Case vLongitud
            Case 1
                vNumCeros = "0000"
            Case 2
                vNumCeros = "000"
            Case 3
                vNumCeros = "00"
            Case 4
                vNumCeros = "0"
            Case Else
                vNumCeros = ""
        End Select
            'Crea la nueva numeración
    vNum = vLetraCod & vNumCeros & vNum
        'Añade un nuevo registro
    DoCmd.RunCommand acCmdRecordsGoToNew
        'Asigna el nuevo valor al campo Cod
    Me.Cod.Value = vNum
End Sub
---
Ahora ya tienes el código que te crea una numeración correlativa. En función de las necesidades que tengas puedes intentar adaptarlo a tu BD.
Ante cualquier duda que tengas me comentas.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas