Portal    Foro    Buscar    FAQ    Registrarse    Conectarse


Publicar nuevo tema  Responder al tema 
Página 1 de 1
 
 
Error Actualizando Campos En SQLite3
Autor Mensaje
Responder citando   Descargar mensaje  
Mensaje Error Actualizando Campos En SQLite3 
 
Hola a todos.

Estoy desarrollando una aplicación que me sirva como inventario de equipos. He creado una BD con SQLite3 y estoy usando gambas 2.21 en Debian Testing.
Soy nuevo en gambas y me pareció interesante tratar de crear esta aplicación en este entorno, pero me sucede lo siguiente:

Tengo un botón para eliminar 32 registros de la BD, sin embargo, cuando lo intento obtengo el error siguiente: "Too many arguments in DBControl.class".
Si dejo solamente 31 registros, este error desaparece-> (Si elimino el último campo, por ejemplo: TextBox24.Text, "xscf=&32", TextBox25.text)
¿Existe alguna manera de solucionar esto?

PUBLIC SUB ButtonEliminar_Click()

  DIM VarResult AS Result
  IF Message.Question("¿Desea eliminar el registro actual?", "Si", "No") = 1 THEN
  VarResult = Conexion.Edit("equipos", "Hostname=&1", TextBox1.Text, "Serie=&2", TextBox2.Text, "Hostid=&3", TextBox3.Text, "Marca=&4", TextBox4.Text, "Modelo=&5", TextBox5.Text, "Ubicacion=&6", TextBox6.Text, "Vlan=&7", TextBox7.Text, "Proyecto=&8", TextBox8.Text, "Sistema_Operativo=&9", TextBox9.Text, "IP1=&10", TextBox10.Text, "IP2=&11", TextBox11.Text, "IP3=&12", TextBox12.Text, "IP4=&13", TextBox13.Text, "IP5=&14", TextBox14.Text, "IP6=&15", TextBox15.Text, "Rack=&16", TextBox16.Text, "ram=&17", TextBox18.Text, "swap=&18", TextBox20.Text, "ncpus=&19", TextBox21.Text, "tcpus=&20", TextBox22.Text, "iou=&21", TextBox27.Text, "iox=&22", TextBox28.Text, "dominio=&23", TextBox33.Text, "hds=&24", TextBox31.Text, "hbas=&25", TextBox32.Text, "iob=&26", TextBox19.Text, "mcpus=&27", TextBox23.Text, "ilo=&28", TextBox30.Text, "pci=&29", TextBox29.Text, "mp=&30", TextBox26.Text, "consola=&31", TextBox24.Text, "xscf=&32", TextBox25.tex)
  VarResult["Hostname"] = TextBox1.Text
  VarResult["Serie"] = TextBox2.Text
  VarResult["Hostid"] = TextBox3.Text
  VarResult["Marca"] = TextBox4.Text
  VarResult["Modelo"] = TextBox5.Text
  VarResult["Ubicacion"] = TextBox6.Text
  VarResult["Vlan"] = TextBox7.Text
  VarResult["Proyecto"] = TextBox8.Text
  VarResult["Sistema_Operativo"] = TextBox9.Text
  VarResult["IP1"] = TextBox10.Text
  VarResult["IP2"] = TextBox11.Text
  VarResult["IP3"] = TextBox12.Text
  VarResult["IP4"] = TextBox13.Text
  VarResult["IP5"] = TextBox14.Text
  VarResult["IP6"] = TextBox15.Text
  VarResult["Rack"] = TextBox16.Text
  VarResult["ram"] = TextBox18.Text
  VarResult["iob"] = TextBox19.Text
  VarResult["swap"] = TextBox20.Text
  VarResult["ncpus"] = TextBox21.Text
  VarResult["tcpus"] = TextBox22.Text
  VarResult["mcpus"] = TextBox23.Text
  VarResult["consola"] = TextBox24.Text
  VarResult["xscf"] = TextBox25.Text
  VarResult["mp"] = TextBox26.Text
  VarResult["iou"] = TextBox27.Text
  VarResult["iox"] = TextBox28.Text
  VarResult["pci"] = TextBox29.Text
  VarResult["ilo"] = TextBox30.Text
  VarResult["hds"] = TextBox31.Text
  VarResult["hbas"] = TextBox32.Text
  VarResult["dominio"] = TextBox33.Text
  VarResult.Delete
  Resultado = Conexion.Exec("Select * from equipos")
  IF ERROR THEN
  Message.Error("No se pudo eliminar el registro.")
  ELSE
  Message.Info("El registro ha sido eliminado.")
  MuestraCampos
  END IF
  END IF

END
 



 
Ninfus - Ver perfil del usuarioEnviar mensaje privado 
Volver arribaPágina inferior
Responder citando   Descargar mensaje  
Mensaje Re: Error Actualizando Campos En SQLite3 
 
Hola

Primero que nada pedirte que pongas tu código entre quotes de código para hacerlo mas legible.

DIM VarResult AS Result
IF Message.Question("¿Desea eliminar el registro actual?", "Si", "No") = 1 THEN
   VarResult = Conexion.Edit("equipos", "Hostname=&1", TextBox1.Text, "Serie=&2", TextBox2.Text, "Hostid=&3", TextBox3.Text, "Marca=&4", TextBox4.Text, "Modelo=&5", TextBox5.Text, "Ubicacion=&6", TextBox6.Text, "Vlan=&7", TextBox7.Text, "Proyecto=&8", TextBox8.Text, "Sistema_Operativo=&9", TextBox9.Text, "IP1=&10", TextBox10.Text, "IP2=&11", TextBox11.Text, "IP3=&12", TextBox12.Text, "IP4=&13", TextBox13.Text, "IP5=&14", TextBox14.Text, "IP6=&15", TextBox15.Text, "Rack=&16", ...


Lo has hecho muy complicado y no me extraña que salga por algo raro. Además para borrar no se pone edit sino delete.

La idea es
Dim Rs as result
if message.quiestion("¿desea eliminar el registro actual?","Si"."No"==1 then
   Rs=conexion.delete("tabla","condicion", lista de parametros)
 ...


La forma de poner condicion es por ejemplo
"codigo=&1 and tipo=&2"
y los parámetros serían algo como esto
pidecodigo.text, pidetipo.text

Así que en tu caso sería algo como esto
Rs=conexion.delete("equipos","codigo=&1 and tipo=&2",pidecodigo.text,pidetipo.text)


Eso borraría en la tabla equipos aquellos cuyo código fuera igual a pidecodigo.text y cuyo tipo sea igual a pidetipo.text.

Eso mismo podrías escribirlo también de otra forma
rs=conexión.exec("delete from equipos where codigo=" & pidecodigo.text & " and tipo=" & pidetipo.text)


El primer sistema es genérico de gambas y tiene la virtud de que funciona igual con todas las bases de datos. Tanto que uses sqlite como mysql los borrará igual. El segundo método es ejecutar en el motor de la base de datos un comando que en este caso es borrar esos registros. Ese comando si puede ser distinto en una base de datos u otra.

Obviamente ese código y tipo me los he inventado para explicarte como funciona esto. Tu tienes que encontrar la manera de poder referirte a los códigos que quieres borrar.

Un saludo
 
 



 
soplo - Ver perfil del usuarioEnviar mensaje privado 
Volver arribaPágina inferior
Responder citando   Descargar mensaje  
Mensaje Re: Error Actualizando Campos En SQLite3 
 
Vale, muchas gracias. Ya comprendí el concepto. Del mismo modo, quedó solucionada la parte de "Modificar", que me daba un error similar. Te agradezco mucho la explicación y, por supuesto, tu tiempo.

Salu2.
 



 
Ninfus - Ver perfil del usuarioEnviar mensaje privado 
Volver arribaPágina inferior
Responder citando   Descargar mensaje  
Mensaje Re: Error Actualizando Campos En SQLite3 
 
"Los métodos como  como .edit y .delete no pueden funcionar si no hay una clave primaria" (Benoît ipse dixit)

En SQLite todas las tablas tienen un campo identificador único que puedes referenciar con el nombre rowid.

Si creas un campo que sea primary key autonumérico y se llame, por ejemplo, ID, siempre será un  sinónimo de rowid.
Utiliza rowid (o el ID mencionado arriba) para identificar las líneas que quieres manipular.

conexion.delete("equipos","rowid=&1",variable_con_rowid)

Suerte
 




===================
No podemos regresar
 
shordi - Ver perfil del usuarioEnviar mensaje privado 
Volver arribaPágina inferior
Mostrar mensajes anteriores:    
 
OcultarTemas parecidos
Tema Autor Foro Respuestas último mensaje
No hay nuevos mensajes Conexion A BD SQLite3 (Solucionado) Juan_ed Bases de Datos 14 Sabado, 13 Febrero 2010, 16:11 Ver último mensaje
Juan_ed
No hay nuevos mensajes ¿Por Dónde Empiezo? SQLite3, Mozilla Fir... Ayortano Bases de Datos 4 Domingo, 08 Agosto 2010, 18:23 Ver último mensaje
Invitado
No hay nuevos mensajes Error Al Ordenar Campos Sqlite(Solucionado) Dani26 Bases de Datos 7 Viernes, 04 May 2012, 22:21 Ver último mensaje
codificador
No hay nuevos mensajes Necesito Convertir Archivo, CSV A Una Tabl... gambafeliz Bases de Datos 44 Lunes, 26 Agosto 2019, 20:31 Ver último mensaje
gambafeliz
 

Publicar nuevo tema  Responder al tema  Página 1 de 1
 

Usuarios navegando en este tema: 0 registrados, 0 ocultos y 1 invitado
Usuarios registrados conectados: Ninguno


 
Lista de permisos
No puede crear mensajes
No puede responder temas
No puede editar sus mensajes
No puede borrar sus mensajes
No puede votar en encuestas
No puede adjuntar archivos
Puede descargar archivos
No puede publicar eventos en el calendario



  

 

cron