Portal    Foro    Buscar    FAQ    Registrarse    Conectarse


Publicar nuevo tema  Responder al tema 
Página 1 de 2
Ir a la página 1, 2  Siguiente
 
Escribir En Base De Datos
Autor Mensaje
Responder citando   Descargar mensaje  
Mensaje Escribir En Base De Datos 
 
Hola, aqui dando lata de nuevo, tengo un formulario que al llenarlo y dar click en aceptar me guarda los datos en una base de datos, uso la sig instruccion:

conect.EXEC("insert into RegistroP values(&1, &2, &3, &4, &5, &6, &7, &8, &9, &10, &11)", "1A", "hola2", "hola3", "hola4", 2, 3, 4, "nuev1,", "hjhf,", "5,", "7,")


mi formulario es para llenar pendientes y tiene 17 datos, y hasta donde recuerdo funcionaba pero de repente me envio error, he estado haciendo pruebas y todo funciona a la perfeccion con 8 datos, si agrego mas me tira el error de "missing database... bla bla", esta es una prueba con 11 registros, los 4 primeros son cadenas con limites, luego 3 enteros, y despues 4 cadenas sin limite. Estas ultimas llevan coma ',' porque son listas de productos, precios e importe, y asi despues vuelvo a separarlas, pero bueno, aqui como no opero con ellas no deberia de haber problema si las ingreso asi o sin comas, para evitar problema con variables como pueden ver puse cualquier cosa. Ya atualice mi tabla de 8 a 11 datos, asi que eso tampoco es. Hace poco que pase de gambas 2 a 3 y de ubuntu 10.10 a 11.10, no creo que tenga que ver eso, pero no se porque me limita a 8 registros esta cosa, alguna idea?, gracias y saludos
 



 
Erik G - Ver perfil del usuarioEnviar mensaje privado 
Volver arribaPágina inferior
Responder citando   Descargar mensaje  
Mensaje Re: Escribir En Base De Datos 
 
No acabo de entender bien el problema que planteas y creo que es por la nomenclatura que usas, me confundes con registros y campos y datos. La instrucción Insert agrega 1 resgistro nuevo a la tabla "RegistroP" que debe tener 11 campos y a cada uno de los 11 campos del registro les da los valores indicados. Si concuerdan el orden y tipos de datos debe crear 1 registro nuevo cada vez que utilices la instucción Insert.

Por otro lado me dices que has cambiado hace poco de gambas2 a gambas3. Cuando importas una aplicación a Gambas3 te crea una copia de seguridad de la aplicación, depende como hagas la conexión mira a ver si se está conectando con la copia de seguridad en vez de con la base de datos modificada a 11 campos.

Asi a bote pronto no se me ocurre nada mas porque la sintaxis del Insert me parace correcta asi que no creo que este ahi el fallo.

Un saludo, aunque no se si he podido ayudar en algo
 




===================
Un saludo.
===================
e-mail:
Web: Miguel Morera Belenguer
Twiter: @miguelmorerab
 
GilGalad - Ver perfil del usuarioEnviar mensaje privadoVisitar sitio web del usuario 
Volver arribaPágina inferior
Responder citando   Descargar mensaje  
Mensaje Re: Escribir En Base De Datos 
 
Primero muchas gracias por responder, tienes razon, me hago bolas yo solo con registros, datos y campos jejeje. Efectivamente me hizo respaldo pero esta en otra computadora que aun tiene ubuntu 10.10, en un momento me la traen porque la preste y lo checo, lo que a mi me hace mas ruido es con 8 campos o menos funciona, queria guardarlo en partes, pero no se puede ya que hay que poner los datos del registro en orden o me equivoco? ahorita experimentare con eso comenzando por ejemplo desde &9, &10, &11, no creo que funcione pero hechando a perder se aprende   ya he llevo 2 semanas haciendo cambios por migrar a gambas3 asi que espero que no me salga con un bug de los latosos, pero en fin, seguire probando y si algo me funciona se los hago saber, gracias de nuevo  
 



 
Erik G - Ver perfil del usuarioEnviar mensaje privado 
Volver arribaPágina inferior
Responder citando   Descargar mensaje  
Mensaje Re: Escribir En Base De Datos 
 
En gambas2 me funciona a la perfeccion

conect.EXEC("insert into RegistroP values(&1, &2, &3, &4, &5, &6, &7, &8, &9, &10, &11, &12, &13, &14, &15, &16)", NumPendT.Text, NomCliT.Text, CorrCliT.Text, CelCliT.Text, 2012, mes, dia, series, material, cantidades, precios, 13, esc, "Chelo", alta, FALSE)


que podra ser?
 



 
Erik G - Ver perfil del usuarioEnviar mensaje privado 
Volver arribaPágina inferior
Responder citando   Descargar mensaje  
Mensaje Re: Escribir En Base De Datos 
 
Perdon, el error no me lo da despues de 8 campos, me lo manda despues de 9, es decir, si quiero ingresar 10 o mas campos no me deja, y el error exacto es "Query filed:SQL error or missing database" en gambas2 no me da el error, hace 5 min actualice y salieron archivos de gambas3, por un momento tuve fe    pero no sirvieron    no tengo la mas minima idea de que sea, ya borre he hice de nuevo la tabla varias veces
 



 
Erik G - Ver perfil del usuarioEnviar mensaje privado 
Volver arribaPágina inferior
Responder citando   Descargar mensaje  
Mensaje Re: Escribir En Base De Datos 
 
Termine rodeando el problema, no se que paso pero hice esto que hace lo mismo

ConectarBase()
    
    auxres = conect.Create("RegistroP")
    
    auxres["NumPend"] = NumPendT.Text
    auxres["NomPend"] = NomCliT.Text
    auxres["CorrPend"] = CorrCliT.Text
    auxres["CelPend"] = CelCliT.Text
    auxres["AnoPend"] = 2012
    auxres["MesPend"] = mes
    auxres["DiaPend"] = dia
    auxres["SeriesPend"] = series
    auxres["MaterialPend"] = material
    auxres["CantidadPend"] = cantidades
    auxres["PreciosPend"] = precios
    auxres["TotalPend"] = 13.00
    auxres["EscuelaPend"] = esc
    auxres["UsuarioPend"] = "Chelo"
    auxres["AltaPend"] = alta
    auxres["AtendidoPend"] = False
    
    auxres.Update
    
    CerrarConexion()


y funciona perfecto
 



 
Erik G - Ver perfil del usuarioEnviar mensaje privado 
Volver arribaPágina inferior
Responder citando   Descargar mensaje  
Mensaje Re: Escribir En Base De Datos 
 
Citar:
...Query filed:SQL error or missing database...

El problema no es ni gambas2 ni gambas3 ni el exec ni los campos. Lo que te ocurre es que el servidor te corta la conexión de la base de datos por time-out (el mío lo hace a los 15 segundos de inactividad). Lo único que tienes que hacer es una pequeña funcioncita que cuando se produzca este error cierre y vuelva a abrir la conexión y reintente la operación.

algo así:
dim cSql as string
cSql="Select .... etc. etc."
miconexion.exec(cSql)
if instr(Error.text, "missing database") then
    miconexion.close
    miconexion.open
    miconexion.exec(cSql)
endif

 


El código necesita depuraciones y demás, pero te haces una idea, creo.

Suerte
 




===================
No podemos regresar
 
última edición por shordi el Domingo, 15 Abril 2012, 10:01; editado 1 vez 
shordi - Ver perfil del usuarioEnviar mensaje privado 
Volver arribaPágina inferior
Responder citando   Descargar mensaje  
Mensaje Re: Escribir En Base De Datos 
 
Pues no creo que sea por tiempo, por que al hacer pruebas habia prellenado los campos, entonces solo daba click en acepar y desde abrir la conexion al grabado no hay ni 5 segundos de diferencia, pero aun asi lo voy a checar y te comento, muchas gracias por responder
 



 
Erik G - Ver perfil del usuarioEnviar mensaje privado 
Volver arribaPágina inferior
Responder citando   Descargar mensaje  
Mensaje Re: Escribir En Base De Datos 
 
Si mal no recuerdo creo que la sintaxis del comodín había cambiado en gambas3 a partir del décimo argumento, aunque no estoy muy seguro.

En concreto, cuando usamos los comodines en la consulta sql: &1, &2, &3, etc, a partir del 10º hay que encerrarlo entre llaves: &{10}, &{11}, etc....

Repito, tengo un vago recuerdo de que esto era así, espero no haberlo soñado,  

Saludos

Edito: Lo encontré!!

Citar:

SQL Exec
Symptom: SQL syntax errors

For DB.Exec and DB.Subst the arguments above 9 have to have {} around them.

  sSql = "UPDATE devices SET name = &1, module = &2, interface = &3, address = &4,"
  sSql &= "location = &5, label = &6, label2 = &7, label3 = &8, value = &9,"
  sSql &= "officon = &{10}, onicon = &{11}"

  rResultUpdate = Main.hDB.Exec(sSql, ...)


Son unos apuntes del autor de Domotiga: http://www.domotiga.nl/projects/domotiga/wiki/Gambas3#SQL-Exec

Ahora ya lo sabemos todos, jeje
 




===================
Jesús Guardón

Por favor, usemos el corrector ortográfico antes de pulsar el botón "Enviar".

"uo ǝs ʇɐu pıɟıɔıן ɐdɹǝupǝɹ ɐ dɹoƃɹɐɯɐɹ, soןo ɥɐʎ bnǝ dɹodouǝɹsǝןo"
 
jguardon - Ver perfil del usuarioEnviar mensaje privado 
Volver arribaPágina inferior
Responder citando   Descargar mensaje  
Mensaje Re: Escribir En Base De Datos 
 
Lo sospeche desde un principio ¬¬! jajaja muchas gracias, bueno ahora ya puedo hacerlo de varias maneras y antier de ni una, muchas gracias a toda la comunidad y saludos  
 



 
Erik G - 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 Pasar Todos Los Datos De Un Table View A U... alan Instalación 7 Domingo, 27 Febrero 2011, 23:48 Ver último mensaje
alan
No hay nuevos mensajes Como Escribir El Símbolo "(comillas)... arubioc General 1 Lunes, 27 Febrero 2012, 19:21 Ver último mensaje
jguardon
No hay nuevos mensajes Se Puede En Una Grilla Mostrar Los Datos D... metalgearxd General 5 Jueves, 28 Febrero 2013, 20:54 Ver último mensaje
shordi
No hay nuevos mensajes Como Puedo Modificar Datos De La Base De D... metalgearxd General 2 Viernes, 01 Marzo 2013, 13:40 Ver último mensaje
metalgearxd
 

Publicar nuevo tema  Responder al tema  Página 1 de 2
Ir a la página 1, 2  Siguiente

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