style="display:inline-block;width:728px;height:90px"
data-ad-client="ca-pub-5164839828746352"
data-ad-slot="7563230308">

Necesito autogenerar codigo

Hola necesito una ayuda, una BD. pero quiero que al insertar un nuevo registro, se genero el codigo de la siguiente manera: P0001.P0002.P0003....P000?????.,cuando llegue a 10 que salga P0010.P0011.P0012... cuando llegue a 100 que aparezca P0100.P0101.P0102.-- y asi sucesivamente. quien me puede ayudar, estoy ttrabajando coon consultas en un BD detro del MySQL, y Java con entorno de programación Netbeans.... necesito su ayuda si alguien puede ayudarme le estare muy agradecido.

Comentarios

Opciones de visualización de comentarios

Seleccione la forma que prefiera para mostrar los comentarios y haga clic en «Guardar las opciones» para activar los cambios.

String.format("P%04d", 100);

String.format("P%04d", 100);
Imagen de ezamudio

jajaj

algo así iba a contestar yo pero luego pensé que tal vez el problema que tenían era con la aritmética...

Quien sabe! A veces resulta

Quien sabe! A veces resulta realmente difícil entender la pregunta. Esto es lo que yo entendí: como poner ceros a la izquierda.

en realidad es como poner

en realidad es como poner ceros a la izquierda, pero a medida que avanza el numero éstos se disminuyan
gracias

Imagen de rodrigo salado anaya

siguen siendo.

Siguen siendo ceros a la derecha.

0001
0002
...
0009
0010
....
0099
0100
0101
...

Imagen de rodrigo salado anaya

Ejemplo con Groovy

Mira te dejo unos ejemplos escritos con Groovy, ya se que en java no tienes lo que te pongo pero espero te den una idea de como resolver tu problema, aun que probablemente el ejemplo fill3 es el que más te sirva. Saludos.

def nums = [
    1,
    10,
    123,
    2345,
]

def fill1 = { numStr, zeros ->
    def zrs = zeros - numStr.size()
    zrs > 0 ?
        ('0' * zrs) + numStr :
        numStr;
}

def fill2 = { numStr, template ->
    def end = template.size() - numStr.size() - 1
    template[
        0..end
    ] << numStr
}

def fill3 = {numStr, zeros ->
    while(numStr.size() != zeros) {
        numStr = '0' + numStr
    }
    numStr
}

println nums.collect { num ->
    fill1(num.toString(), 8)
}

println nums.collect { num ->
    fill2(num.toString(), '00000000')
}

println nums.collect { num ->
    fill3(num.toString(), 8)
}

//Salida
 
[00000001, 00000010, 00000123, 00002345]
[00000001, 00000010, 00000123, 00002345]
[00000001, 00000010, 00000123, 00002345]

@lorena Ya probaste lo que

@lorena Ya probaste lo que conteste inicialmente? Es exactamente lo que dices en el segundo comentario.

class P {
    public static void main( String ... args ) {
        for ( int i = 0 ; i < 1_010 ; i+= 10 ) {
            System.out.printf("P%04d%n", i );
        }
    }
}
// salida
$ java P
P0000
P0010
P0020
P0030
P0040
P0050
P0060
P0070
P0080
P0090
P0100
P0110
P0120
P0130
P0140
P0150
P0160
P0170
P0180
P0190
P0200
P0210
P0220
P0230
P0240
P0250
P0260
P0270
P0280
P0290
P0300
P0310
P0320
P0330
P0340
P0350
P0360
P0370
P0380
P0390
P0400
P0410
P0420
P0430
P0440
P0450
P0460
P0470
P0480
P0490
P0500
P0510
P0520
P0530
P0540
P0550
P0560
P0570
P0580
P0590
P0600
P0610
P0620
P0630
P0640
P0650
P0660
P0670
P0680
P0690
P0700
P0710
P0720
P0730
P0740
P0750
P0760
P0770
P0780
P0790
P0800
P0810
P0820
P0830
P0840
P0850
P0860
P0870
P0880
P0890
P0900
P0910
P0920
P0930
P0940
P0950
P0960
P0970
P0980
P0990
P1000

Si, muchas gracias ya lo

Si, muchas gracias ya lo hice, pude poner el codigo que necesito en el Jtext, ahora el problema es ¿ cómo guardarlo en la BD como ID en una determinada tabla?

Imagen de Eduardo Vargas

Puedes guardarlo como llave primaria

Puedes guardar esos datos en la tabla en un campo que sea la llave primaria y así evitas que se puedan repetir, si es que eso es lo que necesitas

Imagen de ezamudio

ASH

String.format("%05d", numero)

y ya. No puede ser que se compliquen tanto escribiendo rutinas para convertir el número a cadena y rellenarlo con ceros a la izquierda cuando ya existe String.format.

Y si no les gusta el performance de String.format usen un DecimalFormat, también sirve para enteros.

ok. gracias a todos por su

ok. gracias a todos por su ayuda

style="display:inline-block;width:728px;height:90px"
data-ad-client="ca-pub-5164839828746352"
data-ad-slot="7563230308">