Conexion A BD SQLite3 (Solucionado)


Goto page Previous  1, 2

Subject: Re: Conexion A BD SQLite3
Gracias Jesus funciona de maravilla es exactamente lo que necesito. Solo que ahora estoy buscando la funcion Find ( como la de VB), pero no se como aplicarla en el codigo, lo que necesito es buscar un valor menor mas cercano en la segunda columna y que me devuelva ese valor y el mayor para interpolar con los valores de la 1era columna (draft) . He buscadon pero hay poca info. solo encontre esto:
FUNCTION Find (Table AS String [, Request AS String, Arguments AS , ... ] ) AS Result
Pero no se como apicarlo.

me podrias dar una pista?

Saludos

Profile PM  
Subject: Re: Conexion A BD SQLite3
Según la página oficial:

http://www.gambasdoc.org/help/comp/gb.db/connection/find

Connection.Find (gb.db)

FUNCTION Find ( Table AS String [ , Request AS String, Arguments AS , ... ] ) AS Result


Devuelve un objeto Result de sólo lectura para obtener registros de la tabla especificada.

* Table es el nombre de la tabla.
* Request es la cláusula WHERE de SQL para filtrar la tabla.
* Arguments son entrecomillados automáticamente según la sintaxis SQL y sustituidos dentro de la cadena Request.

Por tanto, para usarlo en tu caso particular sería algo así:

result = conexion.Find("nombre_tabla", "campo2 < &1 AND campo2 > &2", variable1, variable2)


&1 y &2 son comodines que corresponden a los argumentos variable1 y variable2 respectivamente y se deben usar en ese orden. Puedes tener tantos como necesites. VariableX será del tipo adecuado al tipo de campo declarado al crear la tabla. Por último, el string que corresponde a Request es la cadena SQL que va justo después de la cláusula WHERE, que es realmente el filtro de búsqueda.

La cadena equivalente en SQL estándar sería:

"SELECT * FROM nombre_tabla WHERE campo2 < &1 AND campo2 > &2;"
'donde &1 y &2 serán valores numéricos


El objeto devuelto por esta función es de tipo Result, por lo que tendrás que evaluarlo como normalmente se hace, recorriéndolo como si fuera un array.

Espero que sea de utilidad,

Saludos

Profile PM  
Subject: Re: Conexion A BD SQLite3
Gracias una vez mas por la ayuda. Este codigo me genero algunas preguntas y me disculpas si soy neofito en el tema pero no pierdo nada con hacerlas:

1.- este codigo

result = conexion.Find("nombre_tabla", "campo2 < &1 AND campo2 > &2", variable1, variable2)

lo que dice es que va a buscar en la tabla "X" en el campo2 el valor menor cercano de la variable1 y el mayor cercano de la variable2 ?

2.- En este caso tengo 2 variables, pero yo tengo solo una variable que es el valor a buscar. Como lo uso para un solo valor a buscar

3.- el resulatdo es del tipo result quiere decir que debo manejarlo como array?. O sea debo usar index para obtener el valor? el resultado necesito usrarlo en una formula, o sea necesito un Single. Correcto?

se agradece la respuesta :

saludos

Profile PM  
Subject: Re: Conexion A BD SQLite3
Juan_ed escribió: [Ver mensaje]
Gracias una vez mas por la ayuda. Este codigo me genero algunas preguntas y me disculpas si soy neofito en el tema pero no pierdo nada con hacerlas:

1.- este codigo

result = conexion.Find("nombre_tabla", "campo2 < &1 AND campo2 > &2", variable1, variable2)

lo que dice es que va a buscar en la tabla "X" en el campo2 el valor menor cercano de la variable1 y el mayor cercano de la variable2 ?


No. Esa sentencia devuelve los registros de la tabla "nombre_tabla" donde el valor del "campo2" sea menor que la primera variable y mayor que la segunda. Es decir, un valor comprendido entre ambas variables (que podrás tomar por ejemplo de sendos controles textbox o spinbox).

Citar:

2.- En este caso tengo 2 variables, pero yo tengo solo una variable que es el valor a buscar. Como lo uso para un solo valor a buscar


Si sólo quieres buscar un valor=campo2 entonces sería así:

result = conexion.Find("nombre_tabla", "campo2 = &1", variable1)


Citar:

3.- el resulatdo es del tipo result quiere decir que debo manejarlo como array?. O sea debo usar index para obtener el valor? el resultado necesito usarlo en una formula, o sea necesito un Single. Correcto?


No sé exactamente qué tipo de dato almacenas en el supuesto "Campo2" de tu tabla. El objeto "result" en este caso devuelve una fila completa de la bd, es decir, el registro completo con todos sus campos. Para obtener todos los registros coincidentes con la consulta (suponiendo que el "campo2" no sea autoincrementable, o sea, único) debes recorrerlo de esta forma:

WHILE result.Available

micampo1 = result["campo1"] ' sintaxis normal
micampo2 = result!campo2 ' sintaxis alternativa
print micampo1, micampo2
result.MoveNext()

WEND


He usado las dos maneras de acceder a un campo mediante las dos sintaxis equivalentes. Eso va en los gustos de cada uno.
En el libro de gambas en pdf, capítulo 5, tienes ejemplos para representar los datos devueltos por la consulta en un columnview o un gridview, pero eso te lo dejo para que investigues tu mismo, ya que está muy bien explicado.

Saludos

Profile PM  
Subject: Re: Conexion A BD SQLite3
Ok Jesus, muchas gracias funciona a la perfeccion.-

PUBLIC SUB Button2_Click()

'declaro las variables como float
DIM variable1, micampo1, micampo2 AS Float

'textbox para introducir la variable
variable1 = TextBox10.Text


resul = conex.Find("hydro", "displ < &1", variable1)

'movelast para encontrar el ultimo registro ( para obtener el mayor valor del resultado puesto que este sera el mas cercano)
resul.MoveLast()

'recorro los campos
micampo1 = resul["draft"]

Message(micampo1)


micampo2 = resul["displ"]

Message(micampo2)





END

Profile PM  
Goto page Previous  1, 2

Page 2 of 2


  
You cannot post new topics
You cannot reply to topics
You cannot edit your posts
You cannot delete your posts
You cannot vote in polls
You cannot attach files
You can download files
You cannot post calendar events

   

This is a "Lo-Fi" version of our main content. To view the full version with more information, formatting and images, please click here.

Powered by Icy Phoenix based on phpBB
Design by DiDiDaDo

Generation Time: 0.1109s (PHP: -34% SQL: 134%)
SQL queries: 23 - Debug Off - GZIP Enabled