Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Conexión con bases de datos (https://www.clubdelphi.com/foros/forumdisplay.php?f=2)
-   -   Clave compuesta automática (https://www.clubdelphi.com/foros/showthread.php?t=31713)

judit25 16-05-2006 00:21:51

Clave compuesta automática
 
Buenas noches

Mi pregunta en esta ocasión es la siguiente:

En el programa que estoy realizando quiero manejar la clave de los productos de la siguiente manera:

2 letras fijas, luego una letra del abecedario desde A-Z y por ultimo un numero q va a ser de 1-100, cuando llegue al 100 que pase a la siguiente letra, y cuando termine con la Z que empiece con AA y asi sucesivamente

la clave quedaria así

DJA1, DJA2...DJA100, DJB1...DJZ100, DJAA1, etc

hay alguna manera de realizar este tipo de clave automatica, para que el usuario no tenga que digitar la misma y tener un control de cual fue el ultimo numero en digitarse?

Saludos

Gracias anticipadas

DarkDrakon 16-05-2006 01:11:50

Una Consulta...
 
Solo quisiera saber que tipo de variable seria para la clave :p .

Porque anteriormente realice un generador de claves ... y lo utilizo como una funcion.

judit25 16-05-2006 01:13:06

Cita:

Empezado por DarkDrakon
Solo quisiera saber que tipo de variable seria para la clave :p .

Porque anteriormente realice un generador de claves ... y lo utilizo como una funcion.

no entendi bien lo que me preguntas?

chileno 16-05-2006 22:50:03

hola
aunque yo no utilizo letras en mi codificacion...mas menos es lo que tengo

tbCategoria el campo clave toma el sgte dominio: 1 - 99
tbUnidad_Venta se conforma de esta forma:
XXXXXXX -> campo varchar(7)

X:variable logistica
XX:proviene de la categoria
XXXX:correlativo

en el evento beforePost de la tbUnidad_Venta le asigno la clave, solo es una idea, lo otro es que tenga una tabla auxiliar qu contenga las letras del abacedario como tu quieres y un campo asociado con elcorrelativo, cuando llega al fin del correlativo salta al otro regristro que contiene el otro juego de letras.
chau espero que sea un aporte para ti:D

DarkDrakon 16-05-2006 23:47:01

Lo Unico que quisiera saber .... es que tipo de variable es la que estas utlizando :confused: . Solo eso.

judit25 16-05-2006 23:55:26

Cita:

Empezado por DarkDrakon
Lo Unico que quisiera saber .... es que tipo de variable es la que estas utlizando :confused: . Solo eso.

una variable string, es un solo campo en la tabla donde voy a guardar ese dato

judit25 16-05-2006 23:57:42

Cita:

Empezado por chileno
hola
aunque yo no utilizo letras en mi codificacion...mas menos es lo que tengo

tbCategoria el campo clave toma el sgte dominio: 1 - 99
tbUnidad_Venta se conforma de esta forma:
XXXXXXX -> campo varchar(7)

X:variable logistica
XX:proviene de la categoria
XXXX:correlativo

en el evento beforePost de la tbUnidad_Venta le asigno la clave, solo es una idea, lo otro es que tenga una tabla auxiliar qu contenga las letras del abacedario como tu quieres y un campo asociado con elcorrelativo, cuando llega al fin del correlativo salta al otro regristro que contiene el otro juego de letras.
chau espero que sea un aporte para ti:D

perdon, pero no entendi bien lo de correlativo? me podiras explicar mejor.

Gracias

Disculpa las molestias

fjcg02 17-05-2006 14:04:38

Puede parecer un poco dificil pero es válido.

Desglosas la clave en tres variables: fijo ( 'DJ')+ Letra+ nº ( funcion copy )
Si el nº es menor que 100, le sumas uno, la letra se mantiene strtoint(nº)>100
Si el nº es igual que 100, lo pones "001". Calculas la letra strtoint(nº )=100
Miras la última letra, la pasas a codigo ascii ( funcion ord ), le sumas uno y la conviertes a caracter ( funcion chr). chr(ord(letra)+1)
Por supuesto, tienes que hacer los pertinentes cast entre variables ( funciones strtoint y format ) para poder manejar variables de tipo numéricas y string en las funciones indicadas.
El problema que tienes es cuando llegues a la 'Z', pero o no se da el caso o tardará tanto en darse que te verás en cuatro días arreglando el 'fregao'.

Pues eso. Espero que te sirva.

Un saludo

judit25 17-05-2006 15:00:25

Gracias

deja probar a ver que tal me va

Saludos

fjcg02 17-05-2006 15:56:17

No me he quedado con tu pregunta completa, porque ya resuelves el tema de llegar a la 'Z'.
Para solucionarlo no creo que tengas problemas de hacer un bucle de iteración que vaya mirando letra por letra cuando la última pasa de la 'Z' a la 'A'.

Suerte
PD: He corregido las funciones int por strtoint y inttostr. Creo que son así, pero espero que te sirva. No tengo el compilador en este pc .... y ya sabes, la edad y la memoria no perdonan, me la juegan de vez en cuando ;-)

judit25 17-05-2006 16:11:08

ok gracias por tu ayuda

judit25 17-05-2006 19:02:43

gracias por tu ayuda, la primera parte ya me funciona bien, no he probado todavia cuando llegue a la Z.

Gracias

Lepe 17-05-2006 19:03:30

Solo un detalle, para los números correlativos, completa por la izquierda con ceros, para que al pedir un listado ordenado por código no se forme el lio padre.

Recuerda que el orden vendría así:
DA100
DA99

Resulta mucho mejor así:
DA0099
DA0100

Saludos

judit25 17-05-2006 19:05:11

gracias por la observacion


La franja horaria es GMT +2. Ahora son las 21:53:46.

Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi