PDA

Ver la Versión Completa : otro problema...


superhopi
14-05-2003, 08:59:32
Ayer comentaba que tenia un problema con un dbgrid, ya que uno de los campos era memo. Finalmente solucione el problema y se visualiza el texto en el dbgrid (gracias a yudoboy y cadetill).
Pero! ahora tengo que hacer búsquedas, y el problema es que me dijo yudoboy que con querys no se puede hacer...
¿y ahora como hago yo busquedas y que los resultados (uno de ellos es un memo) se me visualicen en un grid? Si no se puede, ¿con que otro componente puedo hacer que se visualicen los datos de la consulta?
Gracias.

__cadetill
14-05-2003, 09:47:09
Para hacer busquedas en una Query, tienes la clausula where de la misma

select * from tabla where condiciones

Y luego puedes volver a utilizar lo que te comento yudoboy ;)

Si no te sirve el tema del where, siempre puedes utilizar el Locate (pero dependiendo del SGBD que utilices y de lo grande que sea la tabla, te puede ir muuuuuy lento).

judoboy
14-05-2003, 10:19:11
Pues eso que aki el menda"y"udoboy, para poder mostrar memos en una búsqueda, yo creo que deberías usar locate, si quieres los memos, por que así los datos los coge de un TTable, pero bueno tiene el inconveniente que te ha dicho cadetill.

superhopi
14-05-2003, 10:21:15
vale, ahora enseguida lo pruebo
gracias a los dos

PD: yudoboy... creo que te conozco y tu a mi tb ^_^, el mundo es un pañuelo, ¿eh?

judoboy
14-05-2003, 10:36:02
Pues es posible, porque eres de Valencia, y si eres del poli y encima estas haciendo las prácticas de LIS...

__cadetill
14-05-2003, 10:42:16
Posteado originalmente por judoboy
Pues eso que aki el menda"y"udoboy,

Lo siento "y"udoboy, jejeje, me equivoque al escribir (mirando el mensaje del amigo superhopi). Un pequeño fallo tecnico, lo siento :o

superhopi
14-05-2003, 11:07:04
Vamos a ver (agarraros porque viene fuerte)
Respecto al query de antes:

La consulta que tengo que hacer, la hago en tiempo de ejecución, ya que quiero utilizar un unico query para muchas consultas.

Yo por ejemplo pongo:
select *
from tabla
where x

.... y el resultado se lo adjudico a mi queridisimo dbgrid.

Claro, ahora tengo el problema que el memo me sale como tal, y no me sale el texto.
Yo voy al query, intento "add fields..." y no me deja porque la consulta "is empty" (logicamente)

Entonces, si no se puede hacer asi, lo hago con el locate, pero... ¿que es y como se usa el locate?

__cadetill
14-05-2003, 11:26:29
Bueno, si quieres utilizar una Query, porque no utilizas un unico componente TQuery para este caso en particular? Asi podras añadir los TFields y hacer lo que te comento judoboy

El tema de Locate (que te sirve tanto para TTables como TQuery ya que este metodo lo tiene TDataSet y estos derivan de el) es para hacer una busqueda en un Dataset

Sacado de la ayuda de Delphi


Implements a virtual method for searching a dataset for a specified record and making it the active record.

function Locate(const KeyFields: string; const KeyValues: Variant; Options: TLocateOptions
): Boolean; virtual;

Description

This function

Checks whether the dataset is unidirectional, and if so, raises an EDatabaseError exception.
Returns False, indicating that a matching record was not found and the active record was not changed.

Descendant classes that are not unidirectional override this method so that it locates the record where the fields identified by the semicolon-separated list of fields in KeyFields have the values specified by the Variant or Variant array KeyValues. Options indicates whether the search is case insensitive and whether partial matches are supported. Locate returns True if a record is found that matches the specified criteria and that record is now active.

Ruben_Cu
15-05-2003, 05:10:32
Hola a todos, entiendo que superhopi desea hacer una busqueda que le devuelva un conjunto de registros y mostrarlos en el DBGrid asociado, el uso de la función Locate no es aplicable a este caso puesto que como bien se lee en el texto de la ayuda ella solo busca la coincidencia de valores de los campos y devuelve true de existir, convirtiendo ese registro en el registro actual y devolviendo falso en caso de no existir coincidencia.
O sea tal y como la veo no devuelve el conjunto de registros deseados.
¿No te vale el uso de un DBMemo para visualizar el contenido del campo?
Si buscas en el histórico recuperado encontraras hilos con propuesta de soluciones a este tema incluso con otras componentes existentes.
Saludos

superhopi
15-05-2003, 10:26:40
en un dbmemo si qu elo podria hacer, y ojalá y lo pudiera dejar asi, pero el problema es que tengo que hacerlo como me han mandado :( ... asi que como dicen los cromos el 99% de las veces: seguiré intentando :cool: