Insertar Dato SIN .exec


Ir a la página 1, 2  Siguiente

Objetivo: Insertar Dato SIN .exec
Buenas!, llevo un rato buscando por el foro y en el tema 5 del libro de gambas, y no encuentro, a pesar de saber que lo he visto en este mismo foro...y es la forma de insertar un dato, en mi caso concreto SQLite3, sin usar el .EXEC, ya que si mal no recuerdo, con el otro método, daba igual el motor de base de datos que usase.... no recuerdo si seria con un .UPDATE o como iba el tema... :/

Objetivo: Re: Insertar Dato SIN .exec
creo que es esto lo que buscas
tabla es la tabla de la base de datos, claro que hay que hacer su correspondiente conexión a la base de datos



Try Resultados = Conexion.Create("tabla")

Try Resultados["idregistro"] = TextBox1.Text
Try Resultados["ndeserie"] = TextBox2.Text
Try Resultados["fechae"] = TextBox3.Text
Try Resultados["modelo"] = TextBox4.Text
Try Resultados["averia"] = TextArea1.Text

Try Resultados.Update()

Perfil MP  
Objetivo: Re: Insertar Dato SIN .exec
vale, entonces era como estaba haciendolo pero no me funciona... me dice que no existe el campo de la tabla...

PUBLIC SUB BtnGuardar_Click()
DIM varResult AS Result
ModConexion.Connect()
varResult = ModConexion.$Con.Create("PartesTrabajo")
varResult["id"] = 3
'varResult["FechaEntrada"] = Format(Now, "dd/mm/yyyy")
varResult["Cliente"] = AddParteTrabajo.TxtCliente.Text
varResult.Update
ModConexion.$Con.Close

ME.Close
END


y el modulo de conexion:

PUBLIC $Con AS NEW Connection

PUBLIC PROCEDURE Connect()
$Con.Close() ' Cierra la conexion
$Con.Type = "sqlite3" ' Define el tipo de Conexion
$Con.Host = User.Home & "/Dropbox/" ' Nombre del Servidor"
'$Con.Login = Settings["BD/Usuario"] ' Usuario para la coenxion
'$Con.Port = Settings["BD/Puerto"] ' Puerto usado para la conexion, usualmente: 3306
$Con.Name = "lnagestion" ' Nombre de la base de datos a usar
'$Con.Password = ModAcciones.base64(Settings["BD/Passwd"], TRUE) ' Clave de Usuario
TRY $Con.Open()
IF ERROR THEN
Message.Error("Error al conectar a la base de datos.")
$Con = NULL
ENDIF
END


y concretamente el error que me dá dice:

Unknow field: Clientes

PD: gracias por tu prontisisisisma respuesta!

Objetivo: Re: Insertar Dato SIN .exec
CanihoJr lo primero que veo es que abajo as puesto Clientes y en la base de datos esta Cliente y en el modulo de la conexión yo no lo hago como tu, yo lo e echo otra manera

tu por ejemplo tienes la la new conecction la tienes como variable y yo no y ademas nada mas empezar la conexión la cierras, no se tus motivos tendras, raro es,

haber prueba esto


PUBLIC PROCEDURE Connect()

If $Con <> Null Then Return False

$Con = New Connection
$Con.Type = "sqlite3" ' Define el tipo de Conexion
$Con.Host = User.Home & "/Dropbox/" ' Nombre del Servidor"
'$Con.Login = Settings["BD/Usuario"] ' Usuario para la coenxion
'$Con.Port = Settings["BD/Puerto"] ' Puerto usado para la conexion, usualmente: 3306
$Con.Name = "lnagestion" ' Nombre de la base de datos a usar
'$Con.Password = ModAcciones.base64(Settings["BD/Passwd"], TRUE) ' Clave de Usuario
TRY $Con.Open()
IF ERROR THEN
Message.Error("Error al conectar a la base de datos.")
$Con = NULL
ENDIF
END


espero que te sirva,

última edición por david el Jueves, 01 Diciembre 2011, 22:12; editado 2 veces
Perfil MP  
Objetivo: Re: Insertar Dato SIN .exec
Lo del close, la verdad, yo tampoco sé que está haciendo ahí :/ debí escribirlo por si se me olvidaba alguna conexión abierta? (no recuerdo el motivo) quitado está.

Sobre "Cliente" o "Clientes", he verificado que en todos sitios aparece como "Cliente" en singular, también fue un error al postear aquí.... ains! yo al principio también pensé que seria por esto...

y con tu método me da error, el caso, es que la conexión en principio pienso que está correcta, pues la he copiado de la versión antigua de mi programa que conectaba con MYSQL y funcionaba...

Voy a probar insertar un registro con el .exec, que aunque no quiero, así al menos, compruebo que inserta y la conexión esté bien.

Objetivo: Re: Insertar Dato SIN .exec
Yo creo que lo mio es paranoya.... si pongo:
ModConexion.$Con.Exec("INSERT INTO PartesTrabajo(id,Cliente) VALUES (6,'hola')")

Me tira error:
SQL Error o Missing database, sin embargo, la conexión es correcta, porque consultar si existe la tabla PartesTrabajo, me devuelve TRUE.... :/

ya, por curiosidad... como el archivo de la base de datos lo tengo en dropbox compartido con varios ordenadores (nunca accedo desde 2 a la vez) puede ser un error de permisos, que haya creado el archivo desde otro PC y ahora aquí no pueda escribir? (por suponer algo...)

Objetivo: Re: Insertar Dato SIN .exec
Citar:
vale, entonces era como estaba haciendolo pero no me funciona... me dice que no existe el campo de la tabla...


La tabla puede que exista, pero el error es bien descriptivo: no existe el campo 'Cliente', Lo que me parece a mi es que la tabla no tiene creados los campos necesarios. ¿Puedes examinarla con el gestor de bases de datos de gambas o con alguna utilidad externa?

Por otra parte, no se si será buena idea tener tu bd en Dropbox, porque sqlite3 crea archivos temporales (journal) durante diferentes operaciones y esto hace que dropbox esté continuamente actualizando y quién sabe si bloqueando algún fichero...

http://www.sqlite.org/tempfiles.html

Saludos

Perfil MP  
Objetivo: Re: Insertar Dato SIN .exec
gracias por contestar chicos, el campo clientes si que está, lo he comprobado, borrado y vuelto a crear, por eso me extraña, ni con la sentencia sql en .exec me inserta el registro... :/ realmente no deduzco donde está el fallo :/

Sobre la base de datos en Dropbox, es porque o programo en este ordenador, o en otro, pero siempre tengo mis archivos... sé que crea archivos temporales, pero no me importa que esté actualizando cada 2x3, de echo, estoy seguro 100% de que nunca tengo los dos ordenadores encendidos, por lo que tampoco intento acceder desde dos sitios diferentes a la db.... lo único que se me ha ocurrido, que no se si podrá llegar a ser.... es que si he creado el archivo en otro ordenador, al venir a este, aunque mis usuarios se llamen igual, puede ser que sea el problema?? a modo de prueba locura, un chmod 777 debería bastar para comprobarlo?

Objetivo: Re: Insertar Dato SIN .exec
Difícil saber sin poder experimentarlo. ¿Puedes preparar un pequeño proyecto de prueba, incluyendo la base de datos que reproduzca el bug?

Te digo esto por dos razones, una porque mientras creas el miniproyecto o "test case", frecuentemente se descubren los motivos por los que no funcionaba, casi siempre algo que se nos había escapado. Y la otra razón, porque así, otros programadores pueden ayudarte a encontrar las causas probando en diferentes entornos.

Saludos

Perfil MP  
Objetivo: Re: Insertar Dato SIN .exec
Porrrrrrrrrfin lo encontré! como siempre, y como era de esperar en este tipo de fallos, un fallo absurdo, sin duda por obcecarme en mil cosas a la vez, cuando normalmente la respuestas mas obvia es la que suele ser correcta... efectivamente en la base de datos del gestor de base de datos de gambas, existía todos esos campos, y por mas que probase en un lado y en otro, y revisase ortografías, mayúsculas y minúsculas, estaba todo correcto, solo que, sin saberlo o sin recordarlo, tengo dos bases de datos en la carpeta Dropbox que se llaman lnagestion, una dentro de la carpeta proyecto (esta no se que hace ahí la verdad :/) y la de la raíz de dropbox que es en la que debería estar.... ainsss

gracias a ambos!

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.1297s (PHP: -28% SQL: 128%)
Consultas SQL: 23 - Debug off - GZIP Activado