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

Guardar autonumerico desde asp a base de datos

Estas en el tema de Guardar autonumerico desde asp a base de datos en el foro de ASP Clásico en Foros del Web. hola, muy wenas. Tengo un problema con el .asp q he creado, q creo q viene de no guardar el autonumerico. 1º os pongo el ...
  #1 (permalink)  
Antiguo 29/03/2006, 03:04
 
Fecha de Ingreso: agosto-2005
Mensajes: 221
Antigüedad: 19 años, 8 meses
Puntos: 4
Guardar autonumerico desde asp a base de datos

hola, muy wenas.

Tengo un problema con el .asp q he creado, q creo q viene de no guardar el autonumerico.

1º os pongo el código:

Cita:
<!doctype html public "-//w3c//dtd html 3.2//en">

<html>

<head>
<title>(Type a title for your page here)</title>
<%@ LANGUAGE=JScript %>

<meta name="GENERATOR" content="Arachnophilia 4.0">
<meta name="FORMATTER" content="Arachnophilia 4.0">


</head>

<body bgcolor="#ffffff" text="#000000" link="#0000ff" vlink="#800080" alink="#ff0000">
<%
conexion=new ActiveXObject("ADODB.Connection")
conexion.Open ("DRIVER={Microsoft Access Driver (*.mdb)}; DBQ="+Server.MapPath("PDCP.mdb")+";")
registro1=new ActiveXObject("ADODB.RecordSet")
x="select * from 902_DATOS_GENERALES where Empresa='"+Request.Form("empresa")+"'"

registro1.Open (x, conexion, 3, 0x0002)

if(registro1.EOF)
{
registro1.Addnew ()
registro1("Empresa") = parseInt(Request.form ("empresa"))

registro1.Update()

Response.Write("Datos incorrectos")
}

else

Response.Write("Nombre de la empresa no válida")
%>

</body>

</html>
Tengo un IdEmpresa autonumerico. No introduzco el valor en la anterior página xq se supone q tendria q ponerlo él mismo.

Aqui esta el error:
Cita:
Microsoft OLE DB Provider for ODBC Drivers error '80004005'

[Microsoft][Controlador ODBC Microsoft Access]Error en fila

/AltaEmpresa2.asp, línea 43
La linea 43 es el Update, cuando quiero ya guardar los datos.
¿Alguien me puede ayudar por favor?
Muchas gracias.
  #2 (permalink)  
Antiguo 29/03/2006, 08:40
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
Usa un Server.CreateObject("adodb.recordset") en lugar del new ActiveXObject("ADODB.RecordSet") que estas utilizando

Saludos
  #3 (permalink)  
Antiguo 29/03/2006, 08:45
 
Fecha de Ingreso: agosto-2005
Mensajes: 221
Antigüedad: 19 años, 8 meses
Puntos: 4
Me sigue dando el mismo error...
Si el valor q no introduzco es autonumerico en Acess, ¿hace falta introducir algo en el asp? Xq sino no entiendo xq me da error en fila.
  #4 (permalink)  
Antiguo 29/03/2006, 08:57
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
No. no hace falta hacer nada en el ASP, y no hace falta meter un campo autonumérico o identity ni en access ni en sql server.

El error es por otro lado.

Seguramente el problema es el objeto ActiveXObject que usas. Veo que lo usas para la conexión y lo usabas para el recordset. Cambialos ambos por Server.CreateObject.

set adoConn = Server.CreateObject("adodb.connection")
set adoRs = Server.CreateObject("adodb.recordset")

Saludos
  #5 (permalink)  
Antiguo 29/03/2006, 09: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
mmmm, viendo con más detalle tu código, detecto varias cosas que no había visto antes. A ver, vamos a ser más prácticos, cambia lo siguiente:

Cita:
if(registro1.EOF)
{
vSQL = "INSERT INTO 902_DATOS_GENERALES (Empresa) VALUES ("&parseInt(Request.form("empresa"))&")"
conexion.Execute (vSQL)
Response.Write("Datos incorrectos")
}
Hay que validar claro, que no truene al momento del cast en el parámetro del formulario.

Saludos
  #6 (permalink)  
Antiguo 29/03/2006, 09:11
 
Fecha de Ingreso: agosto-2005
Mensajes: 221
Antigüedad: 19 años, 8 meses
Puntos: 4
Perdona, pero no se muy bien donde colocar eso q me has puesto.
Despues de la sentencia sql deberia ir el añadir los demas datos verdad?
De todas formas voy a probar. Muchas gracias. SAludos

Última edición por 333333; 29/03/2006 a las 09:16
  #7 (permalink)  
Antiguo 29/03/2006, 09:13
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
¿Hiciste lo del INSERT?
  #8 (permalink)  
Antiguo 29/03/2006, 09:20
 
Fecha de Ingreso: agosto-2005
Mensajes: 221
Antigüedad: 19 años, 8 meses
Puntos: 4
Bien he dejado asi el código. Y claramente esta mal. Deberia hacer 2 if?

Dejo el nuevo código:

Cita:
<%@ LANGUAGE=JScript %>

<meta name="GENERATOR" content="Arachnophilia 4.0">
<meta name="FORMATTER" content="Arachnophilia 4.0">


</head>

<body bgcolor="#ffffff" text="#000000" link="#0000ff" vlink="#800080" alink="#ff0000">
<%
conexion=Server.CreateObject("adodb.connection")
registro1=Server.CreateObject("adodb.recordset")
conexion.Open ("DRIVER={Microsoft Access Driver (*.mdb)}; DBQ="+Server.MapPath("PDCP.mdb")+";")
registro1.Open (x, conexion, 3, 0x0002)


if(registro1.EOF)
{
x = "INSERT INTO 902_DATOS_GENERALES (Empresa) VALUES ("&parseInt(Request.form("empresa"))&")"
conexion.Execute (x)
registro1.Addnew ()

registro1("Direccion") = Request.form ("direccion")

registro1.Update()

Response.Write("Datos incorrectos")
}

%>
'x' no está definido
  #9 (permalink)  
Antiguo 29/03/2006, 09:44
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
Bueno, yo le quitaría el uso de jscript para el ASP, jejeje, pero es cuestion de gustos. a ver, prueba así:

Cita:
<%@ LANGUAGE=JScript %>
<body bgcolor="#ffffff" text="#000000" link="#0000ff" vlink="#800080" alink="#ff0000">
<%
conexion=Server.CreateObject("adodb.connection")
registro1=Server.CreateObject("adodb.recordset")
conexion.Open ("DRIVER={Microsoft Access Driver (*.mdb)}; DBQ="+Server.MapPath("PDCP.mdb")+";")
x="select * from 902_DATOS_GENERALES where Empresa='"+Request.Form("empresa")+"'"
registro1.Open (x, conexion, 3)

if(registro1.EOF)
{
x = "INSERT INTO 902_DATOS_GENERALES (Empresa, Direccion) VALUES ("&parseInt(Request.form("Empresa"))&", '"&Request.form("direccion")&"')"
conexion.Execute (x)

Response.Write("Datos incorrectos")
}

%>
Este código busca en la tabla 902_DATOS_GENERALES que exista el valor del parámetro "Empresa" en el campo con el mismo nombre, si no existe, lo inserta junto con una dirección.

Saludos
  #10 (permalink)  
Antiguo 29/03/2006, 09:53
 
Fecha de Ingreso: agosto-2005
Mensajes: 221
Antigüedad: 19 años, 8 meses
Puntos: 4
buff, esto es un sinvivir. He puesto lo q me has dicho y ahora me da este error:

Cita:
Microsoft OLE DB Provider for ODBC Drivers error '80040e14'

[Microsoft][Controlador ODBC Microsoft Access] Instrucción SQL no válida; se esperaba 'DELETE', 'INSERT', 'PROCEDURE', 'SELECT' o 'UPDATE'.

/AltaEmpresa2.asp, línea 26
Y la línea 26 es :
Cita:
conexion.Execute (x)
Siento marear tanto. Es q ya no sé q poner. Gracias x la ayuda.
  #11 (permalink)  
Antiguo 29/03/2006, 09:55
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
tranquilo, pon esto y postea el resultado

x = "INSERT INTO 902_DATOS_GENERALES (Empresa, Direccion) VALUES ("&parseInt(Request.form("Empresa"))&", '"&Request.form("direccion")&"')"
response.write x
response.end

conexion.Execute (x)
  #12 (permalink)  
Antiguo 29/03/2006, 10:05
 
Fecha de Ingreso: agosto-2005
Mensajes: 221
Antigüedad: 19 años, 8 meses
Puntos: 4
Me dice esto:

Cita:
Error de compilación de Microsoft JScript error '800a03ec'

Se esperaba ';'

/AltaEmpresa2.asp, línea 26

response.write x
Y si pongo response.write (x) me dice qresponse no esta definido.
  #13 (permalink)  
Antiguo 29/03/2006, 10:15
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
Bueno, es por que tienes jscript como lenguaje asp y tengo la costumbre de usar vbscript

supongo es así:

Response.Write (x);
Response.End;


¿o será Response.End()?
  #14 (permalink)  
Antiguo 29/03/2006, 10:40
 
Fecha de Ingreso: agosto-2005
Mensajes: 221
Antigüedad: 19 años, 8 meses
Puntos: 4
Nada me dice q el response no esta definido.
  #15 (permalink)  
Antiguo 29/03/2006, 10:47
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
va!

bueno, algo ha de estar mal escrito y así no vamos a terminar nunca. Eso que te puse era para ver que se esta formando en la consulta. Veo que esta bien, pero, si efectivamente la has copiado tal cual, quizá los ampersand causan problemas. Haz por favor, lo siguiente:


x = "INSERT INTO 902_DATOS_GENERALES (Empresa, Direccion) VALUES "
x = x + "(" + parseInt(Request.Form("Empresa")) + ", '"
x= x + Request.Form("direccion") + "')"
conexion.Execute (x)
  #16 (permalink)  
Antiguo 29/03/2006, 10:56
 
Fecha de Ingreso: agosto-2005
Mensajes: 221
Antigüedad: 19 años, 8 meses
Puntos: 4
Creo q lo mejor va a ser terminar con esto, y ya lo intentaré arreglar con otros códigos de otros libros o manuales.

Sq sigue dando un error, para no variar:

Cita:
Microsoft OLE DB Provider for ODBC Drivers error '80040e10'

[Microsoft][Controlador ODBC Microsoft Access] Pocos parámetros. Se esperaba 1.

/AltaEmpresa2.asp, línea 28
El error es en conexion.Execute (x)

Muchas gracias x ayudarme. Saludos
  #17 (permalink)  
Antiguo 29/03/2006, 11:00
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
Bueno, igual si quieres solucionarlo, ese error es por que esta mal formada la consulta, seguramente alguno de los campos Empresa o Direccion no existen.

Saludos
  #18 (permalink)  
Antiguo 30/03/2006, 01:35
 
Fecha de Ingreso: agosto-2005
Mensajes: 221
Antigüedad: 19 años, 8 meses
Puntos: 4
Ahora de repente me sale con el código inicial. No sé xq en un principio no me lo guardaba. Ahora solo tengo q cambiar lo q hay en el select de el nombre de la empresa, q me sale raro en la base de datos.

Muchas gracias x la ayuda. Saludos.
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 16:06.