Foros del Web » Programación para mayores de 30 ;) » Programación General »

Valor unico en Vb6 y Acces

Estas en el tema de Valor unico en Vb6 y Acces en el foro de Programación General en Foros del Web. Hola amigos un saludo ante todo. Lo que quiero saber como hago para obtener un valor unico en vb6. Eso es para asignarle ese valor ...
  #1 (permalink)  
Antiguo 06/01/2004, 11:47
 
Fecha de Ingreso: diciembre-2002
Mensajes: 144
Antigüedad: 21 años, 4 meses
Puntos: 1
Valor unico en Vb6 y Acces

Hola amigos un saludo ante todo.

Lo que quiero saber como hago para obtener un valor unico en vb6.

Eso es para asignarle ese valor a cada transacción que realize el sistema.

Debe ser unico. que no exista posobilidad de repetirse.

Lo pensaba hacer colocando un atributo en la base de datos acces que se autoincremente y sea unico.

Pero no se sacar el proximo valor de la auto-indexación .
  #2 (permalink)  
Antiguo 06/01/2004, 14:33
Avatar de pabli  
Fecha de Ingreso: octubre-2003
Mensajes: 381
Antigüedad: 20 años, 6 meses
Puntos: 0
Es muy sencillo,

en la BBDD le pones al campo AUTONUMERICO y cuando vayas a insertar un registro no pongas nada en ese campo, lo hará solo ACCESS

otra posibilidad, si no tienes un autonumérico, es haciendo una select para recuperar el último:

SELECT MAX(campo) FROM tabla

Solo te devolverá un valor, le sumas uno y ya está. Esta aproximación tiene un pequeño riesgo, y es que si alguien inserta ese mismo valor mientras montas el INSERT final tendrás un error por parte de la BBDD de duplicados (todo esto en el caso que ese campo sea clave). El riesgo lo calibrarás dependiendo de los posibles clientes que puedan insertar, a mayor número mayor riesgo.

Saludos
Pablo
  #3 (permalink)  
Antiguo 07/01/2004, 11:15
 
Fecha de Ingreso: diciembre-2002
Mensajes: 144
Antigüedad: 21 años, 4 meses
Puntos: 1
Bueno amigo de esa manera lo tenia pensado hacer, pero no lo considero muy profesional dado como tu dice existe ese riego.

Ademas de ese tambiem esixte este pequeño problema. Y es cuando tu ingresa un registrio en la bbdd al el se le asigna un valor unico atraves del autoincremento pero si se borra ese registro el +1 no seria la proxima autoindexacion.

No existe una mejor opción. Si no en una primera version trabajara asi el sistema para optimazar despues.
  #4 (permalink)  
Antiguo 07/01/2004, 13:47
 
Fecha de Ingreso: diciembre-2002
Mensajes: 144
Antigüedad: 21 años, 4 meses
Puntos: 1
Voy hacer especifico.

Estoy trabajando en un sistema VB6 y Acces.

En acces tengo una variable con las soguientes caracteristicas (long, unico, principal, auto-incremente)

Cuando yo ingreso un registro no toco esa variable para que acces la asigne sola.

Pero cuando yo voy a ingresar un registro necesito saber cual es el proximo valor (auto-Incremento).

No es SELECT MAX(campo) FROM Tabla + 1

PORQUE. un ejemplo que yo ingrese 3 registro (1,2,3) luego borre 2,3 . Ejecuto el SQL anterior y el me devulve 2, y en realidad el proximo auto-incremento es 4.

Dado que esto va imprimir una factura que va a un archivo no me sirve este metodo del SQL porque una factura impresa se puede dar el caso que se le asigne a una nueva.

Basicamente lo que necesito saber cual es el proximo valor del auto-incremento.

Gracias
  #5 (permalink)  
Antiguo 08/01/2004, 04:19
Avatar de pabli  
Fecha de Ingreso: octubre-2003
Mensajes: 381
Antigüedad: 20 años, 6 meses
Puntos: 0
Linit,

no me has entendido,

o utilizas el autoincremento o el "SELECT MAX" + 1, pero no ambos.
Veo que te decides por el autoincremento, nunca habrá duplicados,
si tienes 1,2,3 y borras 2,3 el siguiente que insertes será el 4.
Si no es esto lo que necesitas, escribe...

Saludos
  #6 (permalink)  
Antiguo 08/01/2004, 15:46
 
Fecha de Ingreso: diciembre-2002
Mensajes: 144
Antigüedad: 21 años, 4 meses
Puntos: 1
Bueno pabli de esa manera me sirve pero en realidad lo que necesito saber es el proximo valor del auto-incremento. Osea necesito saber el valor antes de ingresar el registro.

He visto esto en phpadmin cuando tu abres una tabla el te dice el proximo valor del auto-incremento
  #7 (permalink)  
Antiguo 10/01/2004, 12:46
Avatar de pabli  
Fecha de Ingreso: octubre-2003
Mensajes: 381
Antigüedad: 20 años, 6 meses
Puntos: 0
Linit,

en principio yo solo sabría hacerlo en ORACLE, pues no hay campos autonuméricos como en ACCESS y SQL Server, sino secuencias, donde primero coges el número libre, la secuencia no lo vuelve a dar y a continuación haces lo que quieras con ese número.
La solución en código no es mala en absoluto(SELECT max), pues ese riesgo se corre en muchas otras situaciones, el error se captura, pues de antemano sabrás el nº de error y que el usuario lo vuelva a intentar. Yo no veo muchas más soluciones...


Saludos
Pablo
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:57.