AYUDENMEEE.....SUGERENCIAS.. POR FAVOR PROBLEMA CON EL RECORDSET

chikis
24 de Marzo del 2004
Hola tengo un problema ya abri el recordset, pero ahora que voy insertar un registro me manda el error de objeto cerrado,,, y no puedo hacer nada...
set rs = new adodb.recordset
add.new
rs("campo_tabla") = text1.text
rs.update
rs.open
en la linea addnew me manda el error....
porfavor ayudenme o mandenme una sugerencia porfavor... si tienen alguna consulta envienmela para ayudarlos tambien

shiquilla
24 de Marzo del 2004
Hola Chikis.
tienes que abrir el recorset con una select en donde quieras realizar esos cambios ANTES DE PONER ADDNEW.

Asi lo haría yo si atacaría a una base de datos que no fuera Access, por ejemplo SQL Server.

Dim cn as New ADODB.Connection
Dim cmd as New ADODB.Command
cn.Open ("Provider=SQLOLEDB.1;Integrated Security=SSPI;Persist Security Info=False;Initial Catalog=BaseDeDatos;Data Source=Server"

Set Cmd.ActiveConnection = cn
Cmd.CommandText = "INSERT INTO Tabla (campo1) VALUES (?)"
Cmd.CommandType = adCmdText
Set prm = cmd.CreateParameter("Campo1", adVarChar, adParamInput, 20, text1)
Cmd.Parameters.Append prm

cmd.Execute

Si lo que utilizaria es Access lo haría asi:

Dim qd As QueryDef
Dim db As Database
Set db = DBEngine.Workspaces(0).OpenDatabase("C:BaseDeDatos.mdb")
Set qd = db.CreateQueryDef("")
qd.SQL = "PARAMETERS Texto STRING; INSERT INTO Tabla(CampoTabla) VALUES (Texto)"
qd![Texto] = text1.text
qd.Execute

Bueno, espero haberte dao alguna idea... yo es que los recordset prefiero utlizarlos para recorrer las tablas... Bueno, si hay alguna duda [email protected]

shiquilla
24 de Marzo del 2004
Una cosa más... yo he supuesto que sólo tiene un campo la tabla, si tiene más de tuno sólo tienes que ir añadiendo los campos que sean... es decir... (suponiendo que los campos son todos STRINGS y no otro tipo de dato...)
En SQL Server:

Cmd.CommandText = "INSERT INTO Tabla (campo1,campo2,campo3...campoX) VALUES (?,?,?...?)"
Cmd.CommandType = adCmdText
Set prm = cmd.CreateParameter("Campo1", adVarChar, adParamInput, 20, text1)
Set prm2 = cmd.CreateParameter("Campo2", adVarChar, adParamInput, 20, text2)
Cmd.Parameters.Append prm2
Set prmX = cmd.CreateParameter("CampoX", adVarChar, adParamInput, 20, textX)
Cmd.Parameters.Append prmX

En Access:

qd.SQL = "PARAMETERS Texto STRING,Texto2 STRING,TextoX STRING; INSERT INTO Tabla(CampoTabla1,CampoTabla2,CampoTablaX) VALUES (Texto,Texto2,TextoX)"
qd![Texto] = text1.text
qd![Texto2] = text2.text
qd![TextoX] = textX.text


solidsnake©
24 de Marzo del 2004
Que tal si antes del addnew colocas el rs.open


Saludos

Platea
24 de Marzo del 2004
bueno:

yo lo que pondria seria lo siguiente:

rs.addnew
rs(x) = text1.text
\' donde x es el campo de la tabla a actualizar
rs.update

chao