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

Ultimo ID generado insertando con Command

Estas en el tema de Ultimo ID generado insertando con Command en el foro de ASP Clásico en Foros del Web. Hola a todos, Tengo un problemononon, quisiera obtener el ultimo ID(autoincrement) de una tabla en la que inserto mediante un Command. En lo que encontre ...
  #1 (permalink)  
Antiguo 29/04/2009, 13:21
 
Fecha de Ingreso: abril-2009
Mensajes: 196
Antigüedad: 16 años
Puntos: 0
Exclamación Ultimo ID generado insertando con Command

Hola a todos,

Tengo un problemononon, quisiera obtener el ultimo ID(autoincrement) de una tabla en la que inserto mediante un Command. En lo que encontre veia que proponian usar "IDENTITY", pero al intentarlo con un command, este no me devuelve nada. Como puedo solucionar esto?? Gracias!!

PD: este es el codigo:

Function EjecutarConsulta(ByVal vectorParametros, ByVal query)

Dim rsIngUser, cm, Conn, parametro, tamano

Set cm=Server.CreateObject("ADODB.Command")
cm.CommandType=&H0001
Set Conn = Server.CreateObject("ADODB.Connection")
Conn.Open dictConfig.s_CatalogConnectionString
set cm.ActiveConnection=Conn
cm.CommandText=query
cm.Prepared=true

For i=0 to UBound(vectorParametros,1)-1

tamano=FormatNumber(vectorParametros(i,2))
Set parametro=cm.CreateParameter(vectorParametros(i,1) ,200,&H0001,tamano,vectorParametros(i,0))
cm.Parameters.Append parametro

Next


Set rsIngUser = Server.CreateObject("ADODB.Recordset")
Set rsIngUser=cm.execute()


Set EjecutarConsulta=rsIngUser

End Function

Última edición por jotamarios; 29/04/2009 a las 15:12
  #2 (permalink)  
Antiguo 29/04/2009, 13:37
 
Fecha de Ingreso: abril-2009
Mensajes: 196
Antigüedad: 16 años
Puntos: 0
Respuesta: Ultimo ID generado con Command

Para agregar...Si yo llamo a mi funcion que ejecuta el command para preparar la consulta y luego hago otra consulta con identity, existe la posibilidad de que me devuelva un ID erroneo porque otro usuario haya ingresado algo nuevo en las tablas?
  #3 (permalink)  
Antiguo 29/04/2009, 16:39
Avatar de u_goldman
Moderador
 
Fecha de Ingreso: enero-2002
Mensajes: 8.031
Antigüedad: 23 años, 4 meses
Puntos: 98
Respuesta: Ultimo ID generado insertando con Command

El query deberia ser algo como esto:

Código:
qry = "INERT INTO bla bla bla; SELECT @@IDENTITY AS algun_nombre"
Después llama al método NextRecordSet cuando le hagas el execute a tu comando:

Código:
Dim rs = Server.CreateObject("ADODB.Recordset")
Set rs = cmd.ExecuteNextRecordSet()

if not rs.EOF then
   Response.Write(rs(0))
.
.
.
Saludos
__________________
"El hombre que ha empezado a vivir seriamente por dentro, empieza a vivir más sencillamente por fuera."
-- Ernest Hemingway
  #4 (permalink)  
Antiguo 29/04/2009, 17:03
 
Fecha de Ingreso: abril-2009
Mensajes: 196
Antigüedad: 16 años
Puntos: 0
Respuesta: Ultimo ID generado insertando con Command

uaahhh ojala funcione, muuuuchas gracias! mañana lo pruebo y les cuento, un monton de gracias!
  #5 (permalink)  
Antiguo 30/04/2009, 06:47
 
Fecha de Ingreso: abril-2009
Mensajes: 196
Antigüedad: 16 años
Puntos: 0
Respuesta: Ultimo ID generado insertando con Command

Hola U_GOLDMAN, acabo de utilizar tu sugerencia pero no me funciono, sale este error:

Microsoft VBScript runtime error '800a01b6'

Object doesn't support this property or method: 'cm.ExecuteNextRecordSet'

Que puede estar ocurriendo? Gracias!
  #6 (permalink)  
Antiguo 30/04/2009, 06:58
Avatar de Muzztein  
Fecha de Ingreso: agosto-2002
Ubicación: Hangar 18
Mensajes: 1.703
Antigüedad: 22 años, 8 meses
Puntos: 16
Respuesta: Ultimo ID generado insertando con Command

http://msdn.microsoft.com/en-us/libr...39(VS.85).aspx
  #7 (permalink)  
Antiguo 30/04/2009, 07:12
 
Fecha de Ingreso: abril-2009
Mensajes: 196
Antigüedad: 16 años
Puntos: 0
Respuesta: Ultimo ID generado insertando con Command

Hola, muchas gracias por su ayuda. Con el articulo que posteo Muzzteing, microsoft especifica que ese metodo se debe aplicar a un recordset, y recalca que puede ser el mismo, asi que lo use de esa manera, pero me sigue generando el error:

Microsoft VBScript runtime error '800a01b6'

Object doesn't support this property or method: 'rsIngUser.ExecuteNextRecordSet'

Esta es la forma en que lo uso:

Query="INSERT INTO registro (ipsolicitud, exito, fechayhora, transaccion, descripcion ) VALUES
(?,?,?,?,?);SELECT @@IDENTITY AS Identidad"

Set rsIngUser = Server.CreateObject("ADODB.Recordset")
Set rsIngUser=cm.execute()

Set rsIngUser=rsIngUser.ExecuteNextRecordSet()

If Not rsIngUser.EOF Then
Response.Write("Valor del recordset:"&rsIngUser(0))
End If


Y ahora? quien podra ayudarme?!
  #8 (permalink)  
Antiguo 30/04/2009, 07:35
 
Fecha de Ingreso: abril-2009
Mensajes: 196
Antigüedad: 16 años
Puntos: 0
Respuesta: Ultimo ID generado insertando con Command

Hola, ya lo resolvi, usando NextRecordSet en lugar de ExecuteNextRecordSet funciono, muchas gracias a todos :D.....Ademas debo aclarar que estaba usando mal lo que posteo el compañero Muzzteing, que si era correcto, pero lo segui usando como ExecuteNextRecord porque lei solo lo de los recordset :D Gracias!
  #9 (permalink)  
Antiguo 30/04/2009, 07:49
Avatar de u_goldman
Moderador
 
Fecha de Ingreso: enero-2002
Mensajes: 8.031
Antigüedad: 23 años, 4 meses
Puntos: 98
Respuesta: Ultimo ID generado insertando con Command

si...es execute.nextrecordset me falto el punto.

Que bueno que lo resolviste.

Saludos
__________________
"El hombre que ha empezado a vivir seriamente por dentro, empieza a vivir más sencillamente por fuera."
-- Ernest Hemingway
  #10 (permalink)  
Antiguo 02/05/2009, 12:03
Avatar de Myakire
Colaborador
 
Fecha de Ingreso: enero-2002
Ubicación: Centro de la república
Mensajes: 8.849
Antigüedad: 23 años, 3 meses
Puntos: 146
Respuesta: Ultimo ID generado insertando con Command

Algún día probaré ese método .....

Hasta ahora siempre lo hago así:

Código:
vSQL = "Set Nocount on; " &_ 
	     "INSERT INTO ClubV_Usuarios (.....) VALUES (....);" &_
             "select IdentityInsert=@@identity; " &_
             "set nocount off"
Set objRS = Conn.Execute(vSQL)
vIdUsuario = objRS("IdentityInsert")
  #11 (permalink)  
Antiguo 02/05/2009, 14:53
Avatar de Muzztein  
Fecha de Ingreso: agosto-2002
Ubicación: Hangar 18
Mensajes: 1.703
Antigüedad: 22 años, 8 meses
Puntos: 16
Respuesta: Ultimo ID generado insertando con Command

lo que es yo, no uso auto numericos.
  #12 (permalink)  
Antiguo 02/05/2009, 16:11
 
Fecha de Ingreso: abril-2009
Mensajes: 196
Antigüedad: 16 años
Puntos: 0
Respuesta: Ultimo ID generado insertando con Command

Si no usas autonumericos te das a la tarea de sacar el ultimo insertado y sumarle uno??? y si dos entran al tiempo? y si mil entran al tiempo? los pones en cola a esperar a q termine el anterior? :|
  #13 (permalink)  
Antiguo 02/05/2009, 17:01
Avatar de Muzztein  
Fecha de Ingreso: agosto-2002
Ubicación: Hangar 18
Mensajes: 1.703
Antigüedad: 22 años, 8 meses
Puntos: 16
Respuesta: Ultimo ID generado insertando con Command

No.
cuando creo una clase nueva (en cualquier lenguaje), siempre le programo un metodo que se llama createPK()
la cual genera una llave unica para ese registro.
asi la BD no tiene el control de que codigo asignar, sino yo, el creador del programa.
Asi tambien, la llave primaria del registro SIGNIFICA algo y me permite encontrar INFORMACION en ella, cosa que en un numero autoincrementado no se encuentra.


  #14 (permalink)  
Antiguo 02/05/2009, 20:52
Avatar de Myakire
Colaborador
 
Fecha de Ingreso: enero-2002
Ubicación: Centro de la república
Mensajes: 8.849
Antigüedad: 23 años, 3 meses
Puntos: 146
Respuesta: Ultimo ID generado insertando con Command

Pues si, eso sirve para cuando quieres o necesitas que la llave primaria signifique algo -codificación de puestos, productos, etc- pero si no es el caso ..... en fin, cada quien, con que funcione

Supuestamente las llaves con valores dentro de ellas no cumplen alguna regla de normalización (¿la 2a de los datos atómicos?) ..... ...... a ver, a lo mejor estoy diciendo una u_golmandada, dejame checo eso primero ....
  #15 (permalink)  
Antiguo 03/05/2009, 11:38
Avatar de u_goldman
Moderador
 
Fecha de Ingreso: enero-2002
Mensajes: 8.031
Antigüedad: 23 años, 4 meses
Puntos: 98
Respuesta: Ultimo ID generado insertando con Command

Cita:
Supuestamente las llaves con valores dentro de ellas no cumplen alguna regla de normalización (¿la 2a de los datos atómicos?) ..... ...... a ver, a lo mejor estoy diciendo una u_golmandada, dejame checo eso primero ....
Las famosas llaves naturales no cumplen unas cuantas reglas (deben ser estables, compactas, no deben cambiar) además que siempre dependen de otro micro-sistema con lo cual el riesgo de fallo es más alto, además hay quien dice que realmente no hay razón o no debería haberla para que las llaves primarias tengan algún valor, pues deberían funcionar como meros punteros a los datos que enlazan.

Pero la verdad, la verdad no hay cosa más buena y sana que cada quien haga lo que le dé su gana

Saludos
__________________
"El hombre que ha empezado a vivir seriamente por dentro, empieza a vivir más sencillamente por fuera."
-- Ernest Hemingway
  #16 (permalink)  
Antiguo 03/05/2009, 13:39
Avatar de Myakire
Colaborador
 
Fecha de Ingreso: enero-2002
Ubicación: Centro de la república
Mensajes: 8.849
Antigüedad: 23 años, 3 meses
Puntos: 146
Respuesta: Ultimo ID generado insertando con Command

Cita:
Iniciado por u_goldman Ver Mensaje

Pero la verdad, la verdad no hay cosa más buena y sana que cada quien haga lo que le dé su gana
Salud por eso!!
  #17 (permalink)  
Antiguo 03/05/2009, 20:00
Avatar de Muzztein  
Fecha de Ingreso: agosto-2002
Ubicación: Hangar 18
Mensajes: 1.703
Antigüedad: 22 años, 8 meses
Puntos: 16
Respuesta: Ultimo ID generado insertando con Command

bueno, aprovechando que se ha dado un poco de discusion :)

las tendendias en los "nuevos lenguajes" como .net y j2ee, intentan erradicar el concepto aquel de "programe como se le de la gana", para dar paso a la implementacion de rigidos Patrones de programacion con enfasis en la encapsulacion , el correcto manejo de errores y el uso de estandares que permiten a la larga hacer aplicaciones mas mantenibles y sustentables en el tiempo.

en consideracion a lo que estamos hablando en este foro, la utilizacion de la base de datos como el molde que da forma a nuestros datos es añeja y en altos niveles de desarrollo ya no se usa.
en corto, estan DEPRECATED

al intentar estos patrones en nuestro querido y viejo ASP, se logran mejoras increibles en la mantencion de las aplicaciones. Y los errores se mantienen por el minimo.
  #18 (permalink)  
Antiguo 04/05/2009, 10:10
Avatar de Myakire
Colaborador
 
Fecha de Ingreso: enero-2002
Ubicación: Centro de la república
Mensajes: 8.849
Antigüedad: 23 años, 3 meses
Puntos: 146
Respuesta: Ultimo ID generado insertando con Command

Pero si tu mismo al utilizar códigos dentro de tus códigos estas "programando como se te dio la gana"

java y .net simplemente son lenguajes orientados a objetos y pueden si quieres, sacarle ventaja a dicho paradigma; quizá te estas refiriendo a UML, que no tiene mucho que ver con el lenguaje en el que lo implementes.
  #19 (permalink)  
Antiguo 04/05/2009, 10:53
Avatar de Muzztein  
Fecha de Ingreso: agosto-2002
Ubicación: Hangar 18
Mensajes: 1.703
Antigüedad: 22 años, 8 meses
Puntos: 16
Respuesta: Ultimo ID generado insertando con Command

mmmnop. al programar en los SDK por ejemplo de j2ee, no puedes programar como quieras, el mismo compilador te obliga a regirte por las normas J2EE.
.NEt al ser una copia, hace lo mismo en su SDK.


Aps.. y se me habia olvidado una cosa referente a las llaves primarias.
en ORACLE no existen los autonumericos como tipo de datos.
los autonumericos son invento de microsoft.
y ORACLE >>>>> SQL SERVER




En definitiva lo que estoy tratando de decir es que: el programar como se quiera y no como se deba , es la gran problematica de la mantencion de sistemas.
  #20 (permalink)  
Antiguo 04/05/2009, 11:52
Avatar de u_goldman
Moderador
 
Fecha de Ingreso: enero-2002
Mensajes: 8.031
Antigüedad: 23 años, 4 meses
Puntos: 98
Respuesta: Ultimo ID generado insertando con Command

Cita:
Iniciado por Muzztein Ver Mensaje
En definitiva lo que estoy tratando de decir es que: el programar como se quiera y no como se deba , es la gran problematica de la mantencion de sistemas.
Si, tienes mucha razón, pero no me refería literalmente a "como se te de la gana" lo que yo decía es que a veces me parece una pérdida de tiempo esos debates como el caso de la llave natural que expusimos. Dentro del contexto "adecuado", me parece que no hay cosa mas buena y sana que cada quien haga lo que se le de su gana

Ahora, en el caso de las plataformas que mencionaste, es cierto que debes seguir ciertas reglas, pero igual puedes seguir haciendo cosas inválidas vistos desde la perspectiva de estándares, realmente el seguimiento de éstos, así como de las mejores prácticas, es una cuestión de convicción.

Por lo de Oracle, es cierto lo que mencionas, aunque yo he visto algunos desarrollos con Oracle que incluso emulan los autonuméricos por medio de triggers...

Mis 0.03
__________________
"El hombre que ha empezado a vivir seriamente por dentro, empieza a vivir más sencillamente por fuera."
-- Ernest Hemingway
  #21 (permalink)  
Antiguo 04/05/2009, 12:22
Avatar de Muzztein  
Fecha de Ingreso: agosto-2002
Ubicación: Hangar 18
Mensajes: 1.703
Antigüedad: 22 años, 8 meses
Puntos: 16
Respuesta: Ultimo ID generado insertando con Command

en el afan de llevarse la ultima palabra


1) los debates nunca son una perdida de tiempo, creo que la conversacion de estos temas ayudaria a la comunidad a aprender e interiorisarse mas en los temas. Sobre todo a los aprendices.

2) pero igual puedes seguir haciendo cosas inválidas vistos desde la perspectiva de estándares
nops. en los SDK que aplican la norma J2EE, NO puedes saltarte la norma.
es imposible que compilen los programas si no aplicas la norma.
lo cual me parece correctisimo.

3)en ORACLE existen los que se llaman secuencias, que pueden ser llamadas con un select from dual dentro de un SP para armar una llave primaria con un secuencia en ella.

4)me guste o no, la tendencia actual es ir quitando mas y mas el negocio a la base de datos y concentrarla en la aplicacion. utlizando a las BD's como un mero recipiente para persisitir los objetos.
(por ejemplo, de ahi que se esten dejando de usar los tipos de datos en las BD's)
  #22 (permalink)  
Antiguo 04/05/2009, 12:39
Avatar de u_goldman
Moderador
 
Fecha de Ingreso: enero-2002
Mensajes: 8.031
Antigüedad: 23 años, 4 meses
Puntos: 98
Respuesta: Ultimo ID generado insertando con Command

Qué afán de tener la última palabra

1. Yo creo que hacer debates de los debates ya debatidos millones de veces, si es una pérdida de tiempo, pero concuerdo contigo que enriquece a quienes no estén tan familiarizados con el tema.

2. No me refería a seguir las reglas de algún SDK estrictamente, sino a la parte que debemos implementar nosotros, y los estándares, hace unos posts atrás mencionaste el uso de patrones en el mismo renglón de OOP, lo cual me hizo pensar por ejemplo en patrones de diseño, que en muchas ocasiones a pesar de que existan, muchas veces no se aplican, o se aplican parcialmente con lo cual se rompen "las reglas", es a eso a lo que me refería con estándares y mejores prácticas.

3. No further comment

4. A mi solamente me tocó jugar con una base de datos orientada a objetos (por aquello de las "nuevas" tecnologías), y la verdad que no le entendí
__________________
"El hombre que ha empezado a vivir seriamente por dentro, empieza a vivir más sencillamente por fuera."
-- Ernest Hemingway
  #23 (permalink)  
Antiguo 07/05/2009, 14:53
 
Fecha de Ingreso: abril-2009
Mensajes: 196
Antigüedad: 16 años
Puntos: 0
Respuesta: Ultimo ID generado insertando con Command

Bueno, la polemica de hacer o no hacer lo que uno quiera debería no tener que discutirse, porque la verdad es que tenemos que regirnos a las mejores practicas del desarrollo de software, para que inventar la rueda?, esta demostrado que estas arquitecturas que proponen son muy buenas y enrriquesen las aplicaciones. Por ejemplo, OWASP propone muchas cosas standares, para el ejemplo de ASP clasico, tiene una libreria para manejar las expresiones regulares que nos permiten "asegurar" los datos de entrada que tanto daño le pueden hacer a la aplicación. Y no que cada quien construya la suya como se le antoje.
  #24 (permalink)  
Antiguo 07/05/2009, 15:06
Avatar de Myakire
Colaborador
 
Fecha de Ingreso: enero-2002
Ubicación: Centro de la república
Mensajes: 8.849
Antigüedad: 23 años, 3 meses
Puntos: 146
Respuesta: Ultimo ID generado insertando con Command

las mejores practicas del desarrollo .... suena bonito .... quiero ver quien si suena igual de bonito cuando te averigüas de verdad toda la documentación que las mejores prácticas ISO dice que se tienen que llenar

Pero a uno se le llena la boca con esa frase, mientras no te toque hacer todo lo que eso conlleva.

Y caemos en lo que inició esto .... de "las mejores prácticas", cada quien hace lo que quiere
  #25 (permalink)  
Antiguo 07/05/2009, 15:12
 
Fecha de Ingreso: abril-2009
Mensajes: 196
Antigüedad: 16 años
Puntos: 0
Respuesta: Ultimo ID generado insertando con Command

jajajaja si da jartera pa q...pero algo se intenta al menos :D
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 11:48.