FTP | CCD | Buscar | Trucos | Trabajo | Foros |
|
Registrarse | FAQ | Miembros | Calendario | Guía de estilo | Temas de Hoy |
|
Herramientas | Buscar en Tema | Desplegado |
|
#1
|
||||
|
||||
no de control. ayuda
hola
necesito de sus experiencias, para que me ayuden a salir de un inconveniente que se me presento en el desarrollo de una aplicacion. estoy realizando una aplicacion de control de reparacion de equipos electronicos. pero he tenido problemas para hacer un numero de control automatico que siga una secuencia sin romper el orden. necesito hacer ya sea una funcion que al momento de presionar el boton entrada se ejecute una funcion que autoincremente el no de control sin descontrolarze y lleve una secuencia organizada. P.D. utilizo BD mysql y componentes Zeos y la aplicacion trabaja en RED gracias..
__________________
Ivan Lora http://www.arrobasoft.da.ru Valientes son aquellas personas que triunfan donde otros fracasan. Bienaventurado los que nada esperan porque jamas seran defraudados. Última edición por @-Soft fecha: 17-07-2003 a las 07:13:55. |
#2
|
||||
|
||||
Puedes utilizar una tabla auxiliar en donde guardes el último número utilizado.
Y otra solución la tienes en esta respuesta de Andrés. http://www.clubdelphi.com/foros/show...&threadid=2281 Un saludo. |
#3
|
||||
|
||||
Si entiendo bien puedes usar campos autoinc:
Código:
create table tu_tabla( num_control int not null auto_increment, ... ) |
#4
|
||||
|
||||
hola
he tratado de utilizar una tabla auxiliar pero he tenido inconvenientes, ya que no me funciona debidamente. lo hago de la siguiente manera, en el evento BeforeInsert creo una variable entera, hago un refresh a la tabla, me posiciono en el primer registro y luego en el ultimo, asigno el valor del ultimo campo a la variable que se creo, luego igualo un Label en la forma que se despliega el no de entrada. en el boton aceptar hago la insersion de los datos tanto en la tabla auxiliar como en la tabla principal, pero me da un error Overflow. si es posible, creen un pequeño ejemplo de como lo hacen en sus aplicaciones para poder comprenderlo un poco mejor. gracias...
__________________
Ivan Lora http://www.arrobasoft.da.ru Valientes son aquellas personas que triunfan donde otros fracasan. Bienaventurado los que nada esperan porque jamas seran defraudados. |
#5
|
||||
|
||||
Si usas el evento before insert
lo que puedes hacer es usar un componente query y hacer la consulta: Select max(nodecontrol)+1 from ordenes despues de ejecutar esta orden le asignas el valor a tu tabla: tablanodecontrol.asinterger := query.fields[0].asinteger; de esta manera cada que agreges un regiestro se consultara cual nodecontrol es el siguiente.
__________________
Saludos desde la tierra del tequila y las mujeres hermosas |
#6
|
||||
|
||||
Disculpen la pregunta pero es que no entiendo.
¿Qué hay de malo en usar campos auto_increment y dejar que el motor de bases (en este caso mysql) se encargue de todo? // Saludos |
#7
|
||||
|
||||
Hola Román:
El problema supongo que se deba, a que quiere numerar facturas o tickets o albaranes y los autoincrementados no sirven para esto, ya que pueden faltar números, pues la mayoría de los motores una vez inicias la adición de un registro dispara el autoincrementado, claro que si antes de grabar la cancelas, como el número ya salto luego tienes una seríe de facturas tal que: 1 2 5 7 etc.... Por lo tanto el autoincrementado está bien para conocer el orden natural de la grabación de los datos y no para la numeración de albaranes, etc. Máxime cuando dicha numeración suele tener tipo texto tal como: 03-0000090 03-0000091 Indicando por ejemplo que el 03 es el año, que yo guardo en una tabla auxiliar y el usuario lo cambia cada vez que inicia un nuevo ejercicio, con lo cual puede tener la factura: 02-00001 03-00001 Es decir normalmente cada año se inicia el contador y como se cambia el ejercicio no hay claves repetidas. Bueno un Saludo. |
#8
|
||||
|
||||
Perdón por la necedad pero sigo sin captar.
Hasta donde yo entiendo el autoincremento se hace hasta que se hace el "post" a la base. Así sucede al menos en paradox (si se hace un append y se cancela el autoincrement no aumenta) y lo mismo en mysql; el autoincrement se asigna hasta el momento que se ejecuta el INSERT. El problema vendría si se desea cancelar después de que el registro se haya guardado en la tabla pero esto mismo sucederá con las otras técnicas. En cuanto al formato de los números no veo el problema; una vez que se dispone de un autoincremental se puede dar formato a otro campo tomando el autoincremental como base, por ejemplo, en mysql podríamos hacer: INSERT INTO tabla values(0, campo1, campo2,...) Recuperar el autoincrement asignado con SELECT last_insert_id() y usarlo para el número de control: UPDATE tabla SET no_control = concat(fecha, '-', ID) o bien, ahorrándonos un paso: UPDATE tabla SET no_control = concat(fecha, '-', last_insert_id()) Y todo esto sin los problemas de tener que bloquear las tablas para no desincronizar el autoincremental // Saludos |
#9
|
||||
|
||||
Si tienes a mano Access, crea una tabla, con un campo "Autonumérico", y otro texto por ejemplo.
Desde el propio Access, escribe una simple a en el campo texto pulsa escape. Bien has cancelado la grabación, inicia otra alta, verás como ya se ha saltado un número. Un Saludo. |
#10
|
||||
|
||||
De acuerdo con lo de Access. Pero @-soft trabaja con algo más serio , mysql y a no ser que las componente zeos hagan un INSERT antes de completar la edición (cosa que sería un terrible error) el comportamiento es como describo.
En fin, quizá me hace falta manejar más facturas y cosas por el estilo // Saludos |
|
|
|