• Viernes 29 de Marzo de 2024, 07:50

Autor Tema:  Re: duda con BD con data(insert)  (Leído 1326 veces)

ainhoa

  • Nuevo Miembro
  • *
  • Mensajes: 15
    • Ver Perfil
Re: duda con BD con data(insert)
« en: Miércoles 22 de Enero de 2003, 16:32 »
0
En el programa que estoy realizando utilizado dos tres bases de datos, una la utilizo para cargar en diferentes textbox la información, la otra para cargar en un combo otra información cada una con su combo, y luego lo que quiero hacer es que todos estos datos tanto los del combo como los de los textbox pasen a otra bd que esta inicialmente vacia.
Como hago la insert, os voy a poner el código que utilizo y donde me da error;


Set db = DBEngine.OpenDatabase(App.Path & "Talleresversiónanterior.mdb")
criterio = "insert into Talleresactual values("
criterio = criterio & "'" & Trim(Text1) & "',"
criterio = criterio & "'" & Trim(Text2) & "',"
criterio = criterio & "'" & Trim(Text3) & "',"
criterio = criterio & "'" & Trim(Text4) & "',"
criterio = criterio & "'" & Trim(Text5) & "',"
criterio = criterio & "'" & Trim(Text6) & "',"
criterio = criterio & "'" & Trim(Text7) & "',"
criterio = criterio & "'" & Trim(Text8) & "',"
criterio = criterio & "'" & Trim(Text9) & "',"
criterio = criterio & "'" & Trim(Text10) & "',"
criterio = criterio & "'" & Trim(Combo1.Text) & "',"
criterio = criterio & "'" & Trim(Text17) & "',"
criterio = criterio & "'" & Trim(Text19) & "',"
criterio = criterio & Trim(Text18) & ","
criterio = criterio & "'" & Trim(Text20) & "');"
Set rstalleres = db.OpenRecordset(criterio)´//error
MsgBox "Registro Actualizado"

me dice que la operación es no valida como se hace la insert esta bien asi?

DaniMoreno

  • Nuevo Miembro
  • *
  • Mensajes: 4
    • Ver Perfil
Re: duda con BD con data(insert)
« Respuesta #1 en: Viernes 24 de Enero de 2003, 21:55 »
0
Te da error porque la instruccion SQL que estas construyendo es una consulta de "accion" y no devuelve ningun registro y por lo tanto no puedes almacenarla en un recordset.
 Para este tipo de instrucciones SQL (insert into,delete from,update .. set, etc.) que no devuelven ningun registro sino que efectuan cambios(por eso se llaman de accion) directamente en la/-s tabla/-s de la/-s base/-s de datos debes utilizar el objeto QUERYDEF viendo que estas utilizando una referencia a DAO.
  Este objeto tiene muy basicamente una propiedad y un metodo que usaras muy frecuentemente. Bueno no me enrollo mas
lee:

Set MiDb = OpenDatabase(app.path & "Cosicas.mdb")
'La cadena SQL
'Importante: la tabla donde insertas los datos debe estar creada
'Ademas revisa la sentencia INSERT INTO que te adjunto
strSQL = "INTO MiTabla  (id_título, título, tipo, id_editor, precio) " & _
VALUES ('BU9876', 'Crear páginas Web', 'negocios', '1389', '29.99')
' Si lo que quieres es crear una nueva tabla y anexar los datos que te interesen (aqui la tabla  no debe existir)
'strSQL="SELECT * INTO NuevaTabla from TablaOrigen [where]"
Set qdf = MiDb.CreateQueryDef("MiQuery", strSQL)
qdf.Execute dbFailOnError  ' que no insertara los datos en la tabla si se produce un error

Espero que te haya servido de ayuda Chao AinhoaB)

hjom

  • Nuevo Miembro
  • *
  • Mensajes: 20
    • Ver Perfil
    • http://www.hjom.itgo.com
duda con BD con data(insert)
« Respuesta #2 en: Miércoles 29 de Enero de 2003, 07:13 »
0
la forma que yo utilizo aunque es mas larga es efectiva

'procedimiento para agregar
sub AddReg()
on local error goto IdEr
Set db = DBEngine.OpenDatabase(App.Path & "Talleresversiónanterior.mdb")
Set Rs = db.OpenRecordset("tabla", dbOpenDynaset)

rs.addnew
rs.fields(0) = text1.text 'primer campo
.
.
.
rs.update
MsgBox "Registro Actualizado"
rs.close 'cierra el recordset
db.close 'cierra la base de datos
set Rs=nothing 'libera la variable
set Db=nothing 'lebera la variable
exit sub

IdEr:
'lo que quieras que diga el erro se encuentra en Err.descripcion
'puedes hacer resume next o simplemente cancel rs.cancelupdate que cancela cualquier cosa
end sub

abeces las operaciones SQL no son tan efectivas y buenas para manejarlas.
HJOM