Escribir En Base De Datos


Ir a la página 1, 2  Siguiente

Objetivo: 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

Perfil MP  
Objetivo: 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

Objetivo: 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

Perfil MP  
Objetivo: 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?

Perfil MP  
Objetivo: 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

Perfil MP  
Objetivo: 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

Perfil MP  
Objetivo: 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

última edición por shordi el Domingo, 15 Abril 2012, 10:01; editado 1 vez
Perfil MP  
Objetivo: 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

Perfil MP  
Objetivo: 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

Perfil MP  
Objetivo: 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

Perfil MP  
Ir a la página 1, 2  Siguiente

Página 1 de 2


  
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

   

Está utilizando la versión (Lo-Fi). Para ver la versión completa del foro, haga clic aquí.

Powered by Icy Phoenix based on phpBB
Design by DiDiDaDo

Página generada en:: 0.5195s (PHP: -84% SQL: 184%)
Consultas SQL: 46 - Debug off - GZIP Activado