![]() |
filtrar RXMEMORYDATA1
Buenos estoy iniciandome como programador delphi, vengo de visual basic.
Tengo un problema con el filtrado de un componente RXMEMORYDATA1 Tengo varios clientes de un banco con la informacion de Cedula, Apellido, Nombre, Tipo y Monto. Toda esta informacion se m pide ser vaciada en un RXMEMORYDATA1 y luego mostrada en un dbgrid, todo bien hasta el momento en que me piden mostrar solo la informacion de los clientes que sean Tipo 0,1,2,3 o 4 y al momento de seleccionar el tipo me debeb mostrar solo la lista de clientes que cumplan con ese filtro investigando hice lo siguiente: caso1:
Caso 2: RxMemoryData1.Filtered:= FALSE; RxMemoryData1.Filter:= 'Apellido='''+EditBusqueda.Text+'%'''; RxMemoryData1.Filtered:= TRUE; RxMemoryData1.Refresh; ninguno de los dos casos me funciona por ahora hago una busqueda directa del los clientes Tipo 1 para prueba y esto me funcion con un componente tTable perfectamante pero al usar el RXMEMORYDATA1 no ocasiona ningun resultado |
Mira el siguiente Link, http://www.clubdelphi.com/foros/showthread.php?t=40171, allí explico como hacer filtros con las TRxMemoryData. Espero te sirva. ;)
|
Recuerdo que ayer, antes de la caida del foro hiciste una pregunta que decia algo como:
"Necesito filtrar, para que cuando tenga dos registros como sanchez y salazar, al colocar 'sa' queden estos dos, porque ambos comienzan por 'sa'"... La respuesta es: Si, quieres usar CaseSensitive hazlo asi:
Si no te importa el case-sensitive, sino que al contrario sea caseinsensitive, hazlo asi...
Espero te sirva ;) |
Ok
De verdad Agradezco mucho tu ayuda me ha servido de mucho pero tengo un problema.
Me da error solo quisiera saber con que libreria trabaja esta funcion me imagino que el problema debe ser ese. Por otro lado ciertamente tiene mucha logica tu respuesta para los casos que envie si busco 'sa' me deberia aparecer (sanchez, salcedo) ok pero existe una forma de que tambie aparezca (hernandez salcedo) tomando en cuenta de que ya salcedo no es la primera posicion en la cadena? Muchas gracias por tu ayuda. |
Avance
Investigue y encontre la funcion que lo realiza:
function AnsiContainsStr( const AText, ASubText: string ): Boolean; Comprueba si la cadena ASubText esta dentro de la cadena AText. Por ejemplo: AnsiContainsStr( 'DELPHI AL LIMITE', 'LIMITE' ) devuelve True AnsiContainsStr( 'DELPHI AL LIMITE', 'LIMITe' ) devuelve False function AnsiContainsText( const AText, ASubText: string ): Boolean; Esta función es igual a AnsiConstainsStr salvo que no diferencia mayúsculas de minúsculas. Veamos un ejemplo: AnsiContainsText( 'DELPHI AL LIMITE', 'LIMITE' ) devuelve True AnsiContainsText( 'DELPHI AL LIMITE', 'LIMITe' ) devuelve True AnsiContainsText( 'DELPHI AL LIMITE', 'LIMITES' ) devuelve False |
Ahhh, cierto, la función es de la unidad llamada StrUtils
En cuanto a tu otra duda, la cosa quedaria muy parecida, asi: Con CaseSensitive
Con CaseInSensitive
|
Upps!
Bueno realmente la funcion que me diste solo busca al principio de la cadena y necesito que busque en cualquier palabra de la cadena .
la que coloque yo solo busca la palabra completa date cuenta que si busca limite y esta limites genera falso tampoco me sirve seguire buscando Gracias |
Cita:
Yo creo que estas confundido, quiza, crees que el parametro 1, hace lo del parametro 2 y viceversa, yo hice el siguiente ejercicio y me funciona correctamente:
Como vez, solo busco 'sa', dentro de 'Montaño Sanchez' y el ShowMessage me muestra un True, de manera que funciona correctamente. |
Listo
Ok tenias razon Muchas Gracias
El Codigo quedo asi RBCedula, RBApellido y RB NOmbre, son Radio Button Dato_Buscado: es donde guardo lo que el usuario quiere buscar s: Guardo la seleccion de la columna a buscar
Todo funcion muy bien Gracias de verdad muchas gracias. Muy bueno este foro |
| La franja horaria es GMT +2. Ahora son las 19:37:34. |
Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi