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

Agregar registro a una tabla sql server

Estas en el tema de Agregar registro a una tabla sql server en el foro de ASP Clásico en Foros del Web. Buenas tardes Llevo toda la tarde intentando guardar un registro en una tabla de SQL Server, he probado tanto con ADO como con sentencias SQL ...
  #1 (permalink)  
Antiguo 01/02/2009, 12:24
Avatar de rafaconpu  
Fecha de Ingreso: febrero-2006
Mensajes: 331
Antigüedad: 18 años, 3 meses
Puntos: 3
Agregar registro a una tabla sql server

Buenas tardes

Llevo toda la tarde intentando guardar un registro en una tabla de SQL Server, he probado tanto con ADO como con sentencias SQL y no hay manera.

La conexión la tengo establecida de esta forma: (lo hace bien puesto que cuando realizo un select de alguna tabla me da los resultados correctos)

Session("CadenaConexionSQL") = "DRIVER={SQL Server}; SERVER=MISERVIDOR; uid=USUARIO;pwd=;DATABASE=BASEDEDATOS"

Set Conexion = Server.CreateObject("ADODB.Connection")
Conexion.Open Cstr(Session("CadenaConexionSQL"))
Conexion.BeginTrans()


Creo ahora la siguiente línea para intentar agregar el registro, pero compruebo en la base de datos y no se agrega. ¿Que puede estar mal?

set RS= Server.CreateObject("ADODB.RECORDSET")
RS.Open "MITABLA",Conexion, adOpenStatic, adCmdTable

RS.addnew
RS("campo1") = valor1
RS("campo2") = valor2
RS("campo3") = valor3
RS.update
RS.close


Si pruebo haciéndolo con una sentencia SQL, ésta me toma los datos correctos y su estructura es correcta, pero no se como ponerlo para que me agregue el registro.

He probado con

sSQL = "Insert Into MITABLA (campo1, campo2, campo2) VALUES ('" & valor1 & "', '" & valor2 & "', '" & valor3 & "' ")
set RS = conexion.execute(sSQL)

Y no funciona tampoco.

¿Alguna sugerencia o ayuda? Gracias.
  #2 (permalink)  
Antiguo 01/02/2009, 13:37
Avatar de Adler
Colaborador
 
Fecha de Ingreso: diciembre-2006
Mensajes: 4.671
Antigüedad: 17 años, 5 meses
Puntos: 126
Respuesta: Agregar registro a una tabla sql server

Hola

El problema puede estar en que estás trabajando con transiciones. No veo que hayas imprimido Conexion.CommitTrans. Tampoco parece muy interesante usar transiciones si solo vas a hacer un ataque a la bd.

Suerte
__________________
Los formularios se envían/validan con un botón Submit
<input type="submit" value="Enviar" style="background-color:#0B5795; font:bold 10px verdana; color:#FFF;" />
  #3 (permalink)  
Antiguo 01/02/2009, 13:41
Avatar de Myakire
Colaborador
 
Fecha de Ingreso: enero-2002
Ubicación: Centro de la república
Mensajes: 8.849
Antigüedad: 22 años, 4 meses
Puntos: 146
Respuesta: Agregar registro a una tabla sql server

Transacciones , transacciones ...
  #4 (permalink)  
Antiguo 01/02/2009, 16:52
Avatar de rafaconpu  
Fecha de Ingreso: febrero-2006
Mensajes: 331
Antigüedad: 18 años, 3 meses
Puntos: 3
Respuesta: Agregar registro a una tabla sql server

Entonces la solución ¿cual sería?

¿Poner al final del código Conexión.commitrans?
  #5 (permalink)  
Antiguo 02/02/2009, 05:44
Avatar de Adler
Colaborador
 
Fecha de Ingreso: diciembre-2006
Mensajes: 4.671
Antigüedad: 17 años, 5 meses
Puntos: 126
Respuesta: Agregar registro a una tabla sql server

Cita:
Iniciado por Myakire Ver Mensaje
Transacciones , transacciones ...
Este frío me acabará mantando
__________________
Los formularios se envían/validan con un botón Submit
<input type="submit" value="Enviar" style="background-color:#0B5795; font:bold 10px verdana; color:#FFF;" />
  #6 (permalink)  
Antiguo 02/02/2009, 13:07
Avatar de rafaconpu  
Fecha de Ingreso: febrero-2006
Mensajes: 331
Antigüedad: 18 años, 3 meses
Puntos: 3
Respuesta: Agregar registro a una tabla sql server

Buenas...

He puesto al final del código Conexion.CommitTrans y ahora si me guarda el registro.

No comprendo muy bien porqué, pero lo guarda bien solo con poner esa línea.
Gracias.
  #7 (permalink)  
Antiguo 03/02/2009, 22:38
Avatar de Myakire
Colaborador
 
Fecha de Ingreso: enero-2002
Ubicación: Centro de la república
Mensajes: 8.849
Antigüedad: 22 años, 4 meses
Puntos: 146
Respuesta: Agregar registro a una tabla sql server

Palabras más, palabras menos, si no lo defines, la base de datos trabaja con transacciones implícitas por cada instrucción, es decir que por cada instrucción de modificación a la BD se abre una transacción, se ejecuta la instrucción SQL y se aplica el resultado directamente a los datos; tu estas diciéndole al motor de BD que vas a trabajar con transacciones explícitas, es decir que tu vas a decidir cuando vas a cerrar la transacción para que se ejecuten todas las instrucciones SQL que le vas a mandar, esto se haría normalemente cuando vas a ejecutar una serie de comandos en cascada donde es importante que se ejecuten todos o ninguno, como el clásico ejemplo de un depósito bancario (ya sabes, un insert en la tabla de movimientos, un update en la tabla de saldos, etc), y por medio de un RollBack deshacer todo lo que se haya hecho en caso de error.

Veo que tu quieres hacer un commit por cada instrucción y no usas validadores, así que en tu caso es lo mismo que no colocaras las lineas .BeginTrans y .CommitTrans

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 00:47.