Foros del Web » Programando para Internet » ASP Clásico »

Predecir Autonumérico

Estas en el tema de Predecir Autonumérico en el foro de ASP Clásico en Foros del Web. Hola a todos: ¿Existe alguna forma de predecir cual será el próximo valor de un campo autonumérico? La pregunta en si parece un poco absurda ...
  #1 (permalink)  
Antiguo 15/02/2002, 07:40
Avatar de macedo  
Fecha de Ingreso: enero-2002
Ubicación: Madrid
Mensajes: 124
Antigüedad: 22 años, 4 meses
Puntos: 0
Predecir Autonumérico

Hola a todos:

¿Existe alguna forma de predecir cual será el próximo valor de un campo autonumérico?

La pregunta en si parece un poco absurda ya que debería ser el valor del mismo campo en el registro anterior más uno. El problema es que si elimino, pongamos por caso, los 4 ultimos registros de la tabla, el número siguiente no es igual al anterior más uno sino que respeta el orden sin tener en cuenta la eliminación.

Hasta ahí bien, ya que no quiero que se reciclen los números que ya se usaron (de ahí el autonumérico).

Lo malo es que utilizo este número como parte de los datos de otro campo, y si no lo puedo predecir, he de utilizar el metodo del "anterior más uno" que funciona bien siempre que se haya eliminado el último registro.

¿Alguna idea?

Gracias por adelantado.
  #2 (permalink)  
Antiguo 15/02/2002, 10:14
 
Fecha de Ingreso: febrero-2002
Mensajes: 16
Antigüedad: 22 años, 4 meses
Puntos: 0
Re: Predecir Autonumérico

Podrías hacer una función que busque el el registro numérico mayor de la columna autonumerada y te lo retorne. Luego vas a conocer el siguiente.

Una preguntita. ¿Por qué la pregunta?

Estas tratando de insertar dos campos autonuméricos en una tabla access????

Sonomas
Salu2 desde Chile
René
  #3 (permalink)  
Antiguo 15/02/2002, 10:39
Avatar de macedo  
Fecha de Ingreso: enero-2002
Ubicación: Madrid
Mensajes: 124
Antigüedad: 22 años, 4 meses
Puntos: 0
Re: Predecir Autonumérico

No, no intento insertar dos autonuméricos.

El problema es que utilizo el valor de un campo autonumérico para asignarle el nombre a un archivo. Por ejemplo: El usuario José Lopéz lleva asociado un archivo con el nombre José_López_2345.doc donde 2345 es el valor del autonumérico. En un campo de texto del mismo registro, ha de aparecer ese nombre de archivo.

Hasta ahora lo he hecho como me comentabas, es decir, consultar el valor máximo del autonumérico y sumarle uno.

El problema es que si se elimina el último registro, la siguiente vez que inserto un registro este metodo me dá un número incorrecto porque el autonumérico no "recicla" ese numéro eliminado (tampoco quiero que lo haga).

En lineas generales funciona bien, tiene que dar la casualidad de que alguien elimine el último registro para que falle. Pero de vez en cuando falla y ese registro queda con un dato incorrecto en el campo del nombre. :(

No se si me he explicado bien.

A ver si se hos ocurre algo.

Un saludo ;)
  #4 (permalink)  
Antiguo 15/02/2002, 10:59
 
Fecha de Ingreso: febrero-2002
Mensajes: 16
Antigüedad: 22 años, 4 meses
Puntos: 0
Re: Predecir Autonumérico

Haber si entendí. El problema es que como no "recicla" ocurre que tienes algo como

ID
1
2
3 (delete)

si borro el 3 y luego inserto nuevamente la tabla queda:

ID
1
2
4

es ese el problema?


Sonomas
Salu2 desde Chile
René
  #5 (permalink)  
Antiguo 15/02/2002, 11:08
 
Fecha de Ingreso: febrero-2002
Mensajes: 16
Antigüedad: 22 años, 4 meses
Puntos: 0
Re: Predecir Autonumérico

Ahora entiendo.

Lo que puedes hacer es crear un tabla nueva donde guardes los valores del campo autonumérico que elimines. Ahora bien, no se en que programas, pero puedes generar un TRIGGER en el que indiques que cada vez que hagas un delete de la tabla original, antes de borrar (:old) lo envies a la tabla auxiliar. Junto con esto incluyes en el trigger un código que seleccione el menor de la tabla auxiliar y lo elimine, luego tienes una tabla auxiliar que siempre tendrá un solo registro y será el valor numérico mayor que has eliminado.
Por último lo comparas con el mayor valor de la tabla original y escoges cual te sirve (el mayor de los dos obviamente)

ojalá que sirva

Nota: los triggers son pedazos de código (usualmente en C o PL/SQL) para mantener la integridad i consistencia de una base de datos. Se como se hace en oracle, pero no se en otras plataformas.


Sonomas
Salu2 desde Chile
René
  #6 (permalink)  
Antiguo 15/02/2002, 11:15
 
Fecha de Ingreso: octubre-2000
Ubicación: Juarez, Chih.
Mensajes: 161
Antigüedad: 23 años, 8 meses
Puntos: 0
Re: Predecir Autonumérico

Saludos.

Creo que al final lo que quieres hacer es impedir que un archivo no sobreescriba algun otro ya grabado en el servidor y por eso haces uso del campo autonumerico.

Bien, si es eso; revisa el siguiente código...

<%

Usuario = Session("Nombre_Usuario") 'supongamos que en esta variable de sesion tienes el nombre de tu usuario

Usuario = Replace(Usuario," ","_")

set Conn = server.createobject("ADODB.Connection")
set Tabla = server.CreateObject("ADODB.Recordset")

Conn.open "DRIVER={Microsoft Access Driver (*.mdb)}; DBQ=" & server.mappath("tu_base_de_datos.mdb")

Tabla.Open "tabla_a_usar",Conn, 1, 2, 2 'tabla_a_usar es el nombre exacto de alguna tabla en tu base de datos (en esta línea se encuentra la "magia" de este código)

Tabla.AddNew

Tabla("Documento") = Usuario & Tabla("ID_autonumerico") & ".doc" 'suponiendo que tienes estos campos...

Tabla.Update

Session("id") = Tabla("ID_autonumerico") 'hasta aqui, inclusive puedes seguir usando usar el valor autonumerico para este registro

Tabla.Close
Set Tabla = nothing

Conn.close
set Conn = nothing

%>

Lo adopté un poco a tus necesidades para que se entienda más rápido. Con esto obtendrás siempre un nombre diferente para los archivos .doc a los que haces referencia.

Esta lógica la tuvé que aprender para usarla en un sitio donde se suben archivos al servidor y quería impedir que los archivos se sobreescribieran.



---------------------
Espero que esto ayude...
  #7 (permalink)  
Antiguo 15/02/2002, 11:54
Avatar de macedo  
Fecha de Ingreso: enero-2002
Ubicación: Madrid
Mensajes: 124
Antigüedad: 22 años, 4 meses
Puntos: 0
Re: Predecir Autonumérico

Gracias a todos, especialmente a vgaray.

El problema era justamente el que comentabas.

Tal y como indicabas, primero creo el registro en blanco, despúes consulto el valor máximo del autonumérico, genero el nombre del archivo y después hago un update del registro con los datos correctos. :P

Gracias de nuevo.
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 01:20.