Inicio > SQL Server > ragys2001 > insertar en una tabla SQL server un registro

insertar en una tabla SQL server un registro

Experto:
Usuario:
Fecha: 22/11/2008
Valoración: (4,00 sobre 5) Categoría: SQL Server
22/11/2008
txokobazter, usuario preguntando en SQL Server
Usuario
tengo creada una base de datos SQL server y me comunico con ella mediante ADO. mi problema es que no consigo introducir un registro nuevo en esa tabla. Primero hago la consulta del recordset (esto lo hace bien), pero cuando le digo que cree otra fila me da error
(ADODB.recordset.AddNew)
No se por donde me he perdido, espero me ayudeis a resolver este problema.Gracias por adelantado
22/11/2008
txokobazter, experto respondiendo en SQL Server
Experto
Si puedes mostrar el pedazo de codigo podria ayudarte.
22/11/2008
txokobazter, usuario preguntando en SQL Server
Usuario
Este es el código que me da problema:

Private Sub Command2_Click()
Dim conn As New ADODB.Connection
Dim rest As ADODB.Recordset

conn.Open "File Name=" & App.Path & "\prueba.UDL"
Set rest = conn.Execute("select * from tablaExp")

'Hasta aquí sin problema


rest.AddNew 'añado fila al recordset
'y es donde me da el error (sintáctico)

rest("idExp") = 77 'meto valor al campo1
rest("Direccion") = "Percebe" 'al campo2
rest("Localidad") = "Sildavia" 'al 3
rest("Profesion") = 5 'al 4
rest.Update 'guardo los cambios

rest.close 'y cierro el recordset
22/11/2008
txokobazter, experto respondiendo en SQL Server
Experto
Yo prefiero utilizar solo el metodo execute() con consultas SQL, porque asi puedo realizar las operaciones precisas que yo quiero. Entonces, lo que te puedo sugerir, es que en vez de hacer las 6 lineas de codigo, la reemplaces por dos lineas (defines una variable tipo String):

Str = "INSERT INTO tablaExp (idExp, Direccion, Localidad, Profesion) VALUES (77, 'Percebe', 'Sildavia', 5);"
Set rest = conn.execute(Str)

Y listo... en este caso rest estara vacio, cuando haces una consulta de seleccion (SELECT) rest contiene los registros, por lo que cuando dejes de usar rest, debes eliminar (limpiar) esta variable (Set rest = NULL, o algo por el estilo). Si quieres ingresar datos que el usuario ingresa, puedes concatenar el String, con los datos tomados de los controles que tengas en tu ventana, por ejemplo, si tienes un TextBox (llamado Text1) para la direccion, seria algo asi:

Str = "INSERT INTO tablaExp (idExp, Direccion, Localidad, Profesion) VALUES (77, '" & Text1.Text & "', 'Sildavia', 5);"

Espero haberte ayudado, y si quieres mas informacion acerca de sentencias SQL, puedes encontrarla en:

http://www.monografias.com/trabajos11/manu/manu.shtml

Este es un muy buen manual de SQL, espero que te sirva.
22/11/2008
txokobazter, usuario preguntando en SQL Server
Usuario
Muchisimas gracias por la aclaración, me ha sido de gran utilidad. Te debo un trago. ;-)
Enlaces patrocinados