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

Problemas con datos autonumericos

Estas en el tema de Problemas con datos autonumericos en el foro de ASP Clásico en Foros del Web. Buenas tardes, Tengo una tabla en Access con un valor autonumerico, el problema es que cuando hago el insert into tabla values(default,....) me da el ...
  #1 (permalink)  
Antiguo 01/08/2007, 14:53
 
Fecha de Ingreso: enero-2006
Mensajes: 21
Antigüedad: 18 años, 4 meses
Puntos: 0
Problemas con datos autonumericos

Buenas tardes,

Tengo una tabla en Access con un valor autonumerico, el problema es que cuando hago el insert into tabla values(default,....) me da el error:

Microsoft OLE DB Provider for ODBC Drivers (0x80040E10)
[Microsoft][Controlador ODBC Microsoft Access] Pocos parámetros. Se esperaba 1.

Cual es la palabra clave que deberia de usar en vez de default? o hay otra forma de hacerlo que no sea tener que traerme el ultimo registro y sumarle 1. Espero me puedan ayudar.

Saludos
Ana Azuaje
  #2 (permalink)  
Antiguo 01/08/2007, 15:23
Avatar de AlZuwaga
Colaborador
 
Fecha de Ingreso: febrero-2001
Ubicación: 34.517 S, 58.500 O
Mensajes: 14.550
Antigüedad: 23 años, 3 meses
Puntos: 535
Re: Problemas con datos autonumericos

Hola, simplemente no pongas en la sentencia SQL de insert el campo autonumérico.. no hace falta, para eso es autonumérico o autoincremental :)
  #3 (permalink)  
Antiguo 02/08/2007, 09:56
 
Fecha de Ingreso: enero-2006
Mensajes: 21
Antigüedad: 18 años, 4 meses
Puntos: 0
Re: Problemas con datos autonumericos

Hola, gracias por la respuesta.

Lo que pasa es que no tengo mucha experiencia con Access, como la tengo con mysql. Ahora tengo una duda, en mysql para yo recuperar el valor del indice que acabo de insertar solo debo colocar "mysql_insert_id()", cual es la instruccion para acces?

He estado leyendo y veo el Select @@IDENTITY pero no logro tener resultados, alguna sugerencia?

Saludos
Ana Azuaje
  #4 (permalink)  
Antiguo 02/08/2007, 14:00
Avatar de u_goldman
Moderador
 
Fecha de Ingreso: enero-2002
Mensajes: 8.031
Antigüedad: 22 años, 5 meses
Puntos: 98
Re: Problemas con datos autonumericos

Cita:
Iniciado por maygreth Ver Mensaje
Hola, gracias por la respuesta.

Lo que pasa es que no tengo mucha experiencia con Access, como la tengo con mysql. Ahora tengo una duda, en mysql para yo recuperar el valor del indice que acabo de insertar solo debo colocar "mysql_insert_id()", cual es la instruccion para acces?

He estado leyendo y veo el Select @@IDENTITY pero no logro tener resultados, alguna sugerencia?

Saludos
Ana Azuaje
Es correcto lo que dices, si no te está arrojando ningún resultado tendríamos que revisar un poco el código, puedes poner el código funcional?

Saludos
__________________
"El hombre que ha empezado a vivir seriamente por dentro, empieza a vivir más sencillamente por fuera."
-- Ernest Hemingway
  #5 (permalink)  
Antiguo 02/08/2007, 14:31
 
Fecha de Ingreso: enero-2006
Mensajes: 21
Antigüedad: 18 años, 4 meses
Puntos: 0
Re: Problemas con datos autonumericos

Hola, aqui esta el código...

## este es el código para insertar un nuevo registro##
conexion()
set rst_in = server.createobject("ADODB.Recordset")
sql = "insert into ordenes (cod_cliente,total,estatus,fecha) values('"&session("id")&"',0,0,'"&fecha&"')"
rst_in.open sql, session("conexion")
on error resume next
if err then
response.Write("error")
end if

## seguidamente este es el código para obtener el numero de registro##

conexion()
set rst_indice = server.createobject("ADODB.Recordset")
sql_indice = "SELECT @@IDENTITY as NewID from ordenes"
rst_indice.open sql_indice, session("conexion")
indice = rst_indice("NewID")
response.Write("indice" &indice)

## solo me imprime un 0 cuando el numero real es otro##
cabe destacar que he probado diferentes sentencias sql, ejemplo

sql_indice = "SELECT @@IDENTITY as NewID"
sql_indice = "SELECT @@IDENTITY as NewID from ordenes"
sql_indice = "SELECT @@IDENTITY from ordenes"
sql_indice = "SELECT @@IDENTITY "

y no he obtenido resultados, agradeceria muchisimo que me puedan ayudar.
Saludos
Ana Azuaje
  #6 (permalink)  
Antiguo 02/08/2007, 14:40
Avatar de u_goldman
Moderador
 
Fecha de Ingreso: enero-2002
Mensajes: 8.031
Antigüedad: 22 años, 5 meses
Puntos: 98
Re: Problemas con datos autonumericos

Tienes que recuperarlo inmediatamente después de insertar:

Código:
sql = "insert into ordenes (cod_cliente,total,estatus,fecha) values('"&session("id")&"',0,0,'"&fecha&"');SELECT @@IDENTITY AS NewID;"
También puede ser que haya otro problema con "NEWID", en SQL sería una palabra reservada, quizás en access no.

Saludos.
__________________
"El hombre que ha empezado a vivir seriamente por dentro, empieza a vivir más sencillamente por fuera."
-- Ernest Hemingway
  #7 (permalink)  
Antiguo 03/08/2007, 06:56
 
Fecha de Ingreso: enero-2006
Mensajes: 21
Antigüedad: 18 años, 4 meses
Puntos: 0
Re: Problemas con datos autonumericos

Hola de nuevo y disculpa la molestia,

Siguiendo tu recomendación he colocado el siguiente codigo:

conexion()
set rst_in = server.createobject("ADODB.Recordset")
sql = "insert into ordenes (cod_cliente,total,estatus,fecha) values('"&session("id")&"',0,0,'"&fecha&"');SELECT @@IDENTITY as clave;"
rst_in.open sql, session("conexion")

Pero me arroja el siguiente error:

Microsoft OLE DB Provider for ODBC Drivers (0x80040E14)
[Microsoft][Controlador ODBC Microsoft Access] Se encontraron caracteres después del final de la instrucción SQL.
/RAGARCA/script/script/carrito.asp, línea 85

Cual pudiera ser la falla? Espero me puedan ayudar, estoy a punto de la desesperación. Ah otra cosa, existe otra forma de conectarme a base de datos dbf sin necesidad de instalar el driver de vfp
Saludos
Ana Azuaje
  #8 (permalink)  
Antiguo 03/08/2007, 10:30
Avatar de AlZuwaga
Colaborador
 
Fecha de Ingreso: febrero-2001
Ubicación: 34.517 S, 58.500 O
Mensajes: 14.550
Antigüedad: 23 años, 3 meses
Puntos: 535
Re: Problemas con datos autonumericos

probá así:

Código:
conexion()
sql_insert = "insert into ordenes (cod_cliente,total,estatus,fecha) values('"&session("id")&"',0,0,'"&fecha&"')"
session("conexion").execute(sql_insert)
set rst_in = server.createobject("ADODB.Recordset")
SQL = "SELECT @@IDENTITY as clave"
rst_in.open sql, session("conexion")
  #9 (permalink)  
Antiguo 03/08/2007, 11:48
 
Fecha de Ingreso: enero-2006
Mensajes: 21
Antigüedad: 18 años, 4 meses
Puntos: 0
De acuerdo Re: Problemas con datos autonumericos

Al Zuwaga, eres mi héroe!


Funcionó al fin! Estoy muy agradecida por tu ayuda. Mil gracias!


Ahora tengo una pregunta, debo conectarme a una base de datos dbf con asp. Pero no consigo el driver para conectarme, con el de dbase me da error. Que me recomiendas? Alguien me escribió que con el provider vfp o algo así funcionaba bien, pero mi servidor no lo tiene instalado, y como cada vez que debo instalar algo me cobra, he decidido averiguar a ver si existe otra posibilidad de conectarme.

Si sabes de algo avisame, gracias nuevamente.

Saludos Ana.
  #10 (permalink)  
Antiguo 03/08/2007, 11:51
Avatar de a n g e l u s  
Fecha de Ingreso: enero-2006
Ubicación: Chile
Mensajes: 237
Antigüedad: 18 años, 5 meses
Puntos: 1
Re: Problemas con datos autonumericos

Tambien puedes usar el viejo y nunca bien ponderado truco de sql max()

Function sqlmaximo( campo, tabla )
on error resume next
sql = "select max("&campo&") as maximo from "&tabla
set rsmax = db.execute(sql)
if err <> 0 then
Response.Write("<CENTER>ERROR AL BUSCAR EL ULTIMO REGISTRO<BR>:"&err.description&"-"&sql&"<hr></CENTER>")
else
if not rsmax.eof then
sqlmaximo = rsmax("maximo")
end if
rsmax.close
end if
End Function

espero que te sirva DE ALTERNATIVA.
__________________
Atte,
A n g e l u s
Concepción - Chile
más vale respuestas bien pensadas, que 7000 post
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 15:38.