SoloCodigo

Programación General => Visual Basic 6.0 e inferiores => Bases de Datos => Mensaje iniciado por: rronald205 en Lunes 6 de Septiembre de 2004, 16:07

Título: Campo Autonumerico Sql
Publicado por: rronald205 en Lunes 6 de Septiembre de 2004, 16:07
Saludos, tengo el siguiente problema como hago para saber cual es el valor del campo autonumerico de un registro nuevo antes de guardarlo
Título: Re: Campo Autonumerico Sql
Publicado por: Snaft_J1 en Lunes 6 de Septiembre de 2004, 17:31
:D  pues la verdad, personal mente no creo que puedas jejeje...
dirctamente no..., por que es un numero que se genera en consecuencia al anterior.
ahh, a no ser que leas el api del DMO de sql.

lo normal es que leas el ultimo existente y en base ha el sepas cual sigue no?
 <_<
Título: Re: Campo Autonumerico Sql
Publicado por: Sagma en Lunes 6 de Septiembre de 2004, 17:52
Hola Snaft_j1 :

Sabes en mi aplicaciòn que realice, tengo un autonumerico, pero no puedo desplegarlo o saber el ultimo numero digitado.

Todo se inserta bien, en la tabla esta ok, pero en la aplicaciòn ??, no muestra o desplega el numero.

Vas ha disculpar mi ignorancia, pero son mis primeros pasos que doy en lo que se refiere a aplicaciònes Visual.

Gracias por las molestias


Sagma  :)
Título: Re: Campo Autonumerico Sql
Publicado por: Snaft_J1 en Lunes 6 de Septiembre de 2004, 18:05
wenas sagma.
ya probaste con.

Código: Text
  1.  
  2. oDsTabla.Tables[0].Rows.Count
  3.  

esto siempre y cuando hayas refrescado un dataset o no set cualquiera de sus familiares.

o un datagrid todo apartir de ayi .Tables[0].Rows.Count seria lo mismo.
y te da el numero de filas existentes que por consecuencia sera el mismo que el de tu ultimo campo auto-numerico verdad?
bueno no es la unica manera pero si la mas simple :D
Título: Re: Campo Autonumerico Sql
Publicado por: senzao18 en Lunes 6 de Septiembre de 2004, 20:54
Snaft_J1 te equivocas en esa parte de que te da el ultimo numero del autonumerico.

ahi lo que haces es solo contar los registros existentes nada que ver con el autonumerico.

por eujemplo si tienes 10 reeistros con campo autonumero ID

seria

1-2-3-4-5-6-7-8-9-10

hasta ahorita si hacemos lo que tu dices si funciona pero es por el contenido de la tabla

ahora supon que borremos el 2-3-5 quedaria

1-4-5-6-7-8-9-10

Dime,, tu codigo sigue funcionando???

Lo mejor creo yo es sacar el ID mayor mediante consulta SQL y a ese le sumas uno ese seria el ID del nuevo rgistro autonumerico en ese momento de la consulta, ya quesi habolamos de una DB que es manipulada por varios usuarios probablemente en lo que le des la alta alguien ya abra insertado un registro.

Todo es cuestion de saber manipular ese tipo de detalles.
Título: Re: Campo Autonumerico Sql
Publicado por: rronald205 en Lunes 6 de Septiembre de 2004, 21:34
A lo mejor no me explique lo suficientemente bien: tengo una base de datos en sql 7.0 y en ella una tabla donde tengo un campo autonumerico, ok. estoy programando en vb6 y tengo una variable de tipo adodc.recordset conectada a esa base datos.
en el momento que voy a guardar un registro ejemplo:

adodc1!Nombre = Nombre.text
adodc1!Apellido = Apellido.text
adodc1!Direccion = Direccion.text
adodc1.update

antes del update yo quiero saber cual es el autonumerico que le asigna a este registro.
Título: Re: Campo Autonumerico Sql
Publicado por: rronald205 en Lunes 6 de Septiembre de 2004, 21:37
Por favor ayudenme ......... necesito saber esto :unsure:
Título: Re: Campo Autonumerico Sql
Publicado por: Snaft_J1 en Lunes 6 de Septiembre de 2004, 22:08
senzao18
sabes que es lo que hace SQL-SERVER internamente?
pues si lo sabes,  :P  es cierto.
pero solo si se tienen en cuenta ese tipo de detalles :D
pero weno tambien se puede hacer con un QUERY
pero sabes tu tambien te equivocas y sabes por que ?
por que SQL-SERVER y ORACLE guardan los indices en otros lugares en este momento no recuerdo bien pero si te fijas lo que dices es cierto pero a la vez falso,
en cuanto ha eso de obtener el ultimo registro, debido a que si el que es el ultimo registro en realidad era el penultimo antes de un DELETE el proximo registro seria la continuacion del que se elimino y no del que existe, lo que dices y lo que digo es lo mismo pero desde puntos diferentes o formas, ademas sol son aplicables ha Manejadores de BD y no a motores.

es decir:
tengo los siguientes registros:
1-2-3-4

aplico un DELETE del ultimo me quedaria asi:

1-2-3

y si aplico in INSERT  :devil: me quedaria asi:
1-2-3-5 :D
lo ves lo mejor es que uses las apis DMO y ellas te daran el registro real ademas el que lo envia es SQL-SERVER y no tienes que tomarlo tu?, solo se lo preguntas y el te responde.

ademas si estas en vb 6.0, tambien es valido lo dicho.

 :blink:  por cierto rronald205 que no existe un Subforo de vb 6.0?

PD: espero haber sido claro, y de ayuda... :D
Título: Re: Campo Autonumerico Sql
Publicado por: rronald205 en Lunes 6 de Septiembre de 2004, 22:36
snaft_j1 de verdad no se si abra otro sub-foro, si llegas a saber por favor me informas. ahora como puedo hacer para obtener el autonumerico a traves del API. podrias darme algunos codigos que me sirvan de guia
Título: Re: Campo Autonumerico Sql
Publicado por: Snaft_J1 en Martes 7 de Septiembre de 2004, 06:32
Este es el link para el subforo devido (http://foros.solocodigo.com/index.php?showforum=39), claro si lo estas trabajando en vb 6.0.

sobre el API.. ummm.
 :(  no no tengo codigos,  :D pero en las ayudas de sql-server esta. por que ayi fue donde aprendi ha manejar el DMO y otros para SQL-SERVER, claro esta que yo uso SQL-SERVER 2000 y tu estas en la version 7.0 la he visto y tuene grandes cambios.
en mi SQL esta la informacion correspondiente en las ayudas.

verifica ahi. busca por el contenido el subtema "Building SQL Server Applications",(Generar aplicaciones para SQL Server):ph34r:  alli obtendras los ejemplos basicos de su funcionalidad API., lo demas queda a tu logica de programacion  :).

lee la documentacion de tu motor de BD's eso es lo que te recomiendo jejeje.

es mas completo que lo que yo te puedo dar, ademas es lo mejor, no acostumbro postear fuentes  :whistling: , cuando pido ayuda solo solicito Documentacion que me pueda servir para aprender mas...

Enjoy it..
Título: Re: Campo Autonumerico Sql
Publicado por: Khuzu dum en Martes 19 de Julio de 2005, 13:57
Hola forer@s, tengo el mismo problema que el compañer@ rronald205 pero con algunas variantes:

1.- Mi base de datos esta en Access 2003.

2.- Quiero saber el autonumerico pero no antes de que sea insertado el registro en la base de datos, por lo que supongo que sera más fácil.

Creo que seria hacer una consulta y mostrar el valor del campo en el registro concreto, pero no se hacerlo sin un datagrid, y eso es precisamente lo que necesito, realizar un código que me devuelva el autonumérico para poder ponerlo en una variable.

Gracias de antemano por la ayuda, en caso de que me ayudeis, y en caso contrario gracias por haberos molestado en leer mi mensaje.
Título: Re: Campo Autonumerico Sql
Publicado por: Güorker en Martes 19 de Julio de 2005, 15:15
Hola,

En caso de que necesites conocerlo despues de la insert, podrias ejecutar una sentencia como esta despues de la insert:

SELECT MAX(campo_autonumerico) FROM tabla


DE todas maneras, en SQL server existe un truco para obtener ese codigo a partir de la sentencia de insercion:

INSERT INTO ..... ; @@IDENTITY

Despues de la sentencia de Insert pones un ";" y despues "@@IDENTITY". Esto devuelve la identidad del ultimo registro insertado. Lo vuelvo a decir esto es de SQL Server y no se si funcionara en acces.

Saludos y suerte.
Título: Re: Campo Autonumerico Sql
Publicado por: Khuzu dum en Lunes 25 de Julio de 2005, 08:39
Gracias a tod@s por responder, al final lo he solucionado de la forma más tonta, hago una consulta como comentaba el compañero Güorker
, pero el problema era que no lo podia meter en un string, no se por que; y al final lo que hice fue meterlo en un textbox, y de éste guardarlo en una variable, dejando la propiedad visible a false.
Título: Re: Campo Autonumerico Sql
Publicado por: senzao18 en Lunes 25 de Julio de 2005, 19:04
Como dicen in méxico inguesu todo lo que duro en resolverse una duda :S:S:S:S:S :hola:  :smartass:  :smartass:  :comp:  :comp: