FTP | CCD | Buscar | Trucos | Trabajo | Foros |
|
Registrarse | FAQ | Miembros | Calendario | Guía de estilo | Temas de Hoy |
|
Herramientas | Buscar en Tema | Desplegado |
#1
|
|||
|
|||
Consulta con ADOTABLE
Hola, estoy trabajando con una BD de Access 2007 en Delphi 7. Necesito una funcion busca, la cual me devuelva verdadero si encuentra un determinado valor. Los criterios de busqueda son por Codigo, DNI, y por Nombre.
El codigo es el siguiente: Código:
type Tclasepropietario = class (Tclasepersona) codigo_titular: Integer; sexo: string; fecha_modificacion: TDate; fecha_desde: TDate; Procedure grabardatos; function busqueda (dato:string;opcion:Integer):Boolean; end; Implementation function Tclasepropietario.busqueda(dato: string; opcion: Integer): Boolean; begin ADOTable1.Filtered := True; case opcion of 1: begin ADOTable1.Filter:= 'CODIGO_TITULAR LIKE '''+'%'+dato+'%'''; if (ADOTable1.RecordCount > 0) then begin Result:=True; end else; begin Result:=False; end; end; 2: begin ADOTable1.Filter:='DNI LIKE '+dato+''; if (ADOTable1.RecordCount > 0) then begin Result:=True; end else; begin Result:=False; end; end; 3: begin ADOTable1.Filter:='APELLIDO_NOMBRES LIKE '''+dato+'*'''; if (ADOTable1.RecordCount > 0) then begin busqueda:=True; end else; begin busqueda:=False; end; end; end; end; |
#2
|
||||
|
||||
Hola nefore, bienvenido a Club Delphi
Como a todos los recién llegados te invitamos a que leas nuestra guía de estilo. Yo haría:
Ejemplo de llamada:
Saludos.
__________________
Daniel Didriksen Guía de estilo - Uso de las etiquetas - La otra guía de estilo .... Última edición por ecfisa fecha: 15-06-2013 a las 23:48:02. Razón: Agregar ejemplo de llamada |
#3
|
|||
|
|||
Te agradezco la bienvenida, y por tu tiempo para responder. Antes de escribir este post he pegado un vistazo a la guia de estilos, si he rompido alguna norma hazmelo saber.
Te pido disculpas, pero recien estoy empezando en esto, asi que no entiendo muy bien. La constate aFieldName es necesaria que este asi? o sea yo estoy haciendo un alta de propietarios, y quiero usar este busca, para evitar un dni duplicado me explico? (los demas: codigo titular y nombre los usare para realizar una consulta). Segun lo que yo entiendo estas pasando una constante como parametro? y la propiedad(?) Filtered, primero tengo que desactivarla? He intentando el codigo me pasaste pero, no me deja compilar, me dice incompatible types |
#4
|
||||
|
||||
Hola nefore.
Cita:
Cita:
Cita:
Cita:
Fijate que los parámetros los declaré de tipo string, partiendo del supuesto que campos tales como APELLIDO_NOMBRES no seran de tipo Integer. Saludos.
__________________
Daniel Didriksen Guía de estilo - Uso de las etiquetas - La otra guía de estilo .... |
#5
|
|||
|
|||
Cita:
Pues bien, me ha servido de mucho para la validacion, pero el problema es que aun asi necesito un metodo para buscar con ADOTable con un filtro o algo asi, porque por ejemplo cuando realize la consulta y pedir buscar por nombre y apellido (o por parte de este), utilizaria el Filtro y mostraria los resultados en un db grid. Igualmente desde ya muchas gracias, te agradezco por la ayuda (ya me estaba volviendo loco). Un paso menos. |
#6
|
||||
|
||||
Hola.
Cita:
Pero creo entender de tu comentario que no has podido implementar la función del mensaje #2 en tu código, por lo cuál te adjunto un demo funcionando para que puedas revisar con tranquilidad el por qué. Crea una carpeta, descomprimí los fuentes allí y compila. (incluye dbdemos.mdb que trae Delphi) Saludos.
__________________
Daniel Didriksen Guía de estilo - Uso de las etiquetas - La otra guía de estilo .... |
#7
|
|||
|
|||
Cita:
Me he fijado el archivo que me pasaste, pero justamente realiza la busqueda por name, capital o continent (campos string) y no por los otros campos numericos: este es el codigo de la busqueda en el cual esta (entre comentarios) el codigo que me pasaste Código:
function Tclasepropietario.busqueda(dato: string; opcion: Integer): Boolean; var ban: Boolean; begin ban:= False; ADOTable1.Filtered := True; case opcion of 1: begin //ADOTable1.Filter:= Format(' = ',[CODIGO_TITULAR,dato]); //if (ADOTable1.RecordCount > 0) //then //begin // ban:= True; //end //else //begin // ban:= False; //end; if (ADOTable1.Locate('CODIGO_TITULAR',dato,[])=True)then ban:=True; end; 2: begin if (ADOTable1.Locate('DNI',dato,[])=True)then ban:=True; end; 3: begin ADOTable1.Filter:='APELLIDO_NOMBRES LIKE '''+dato+'*'''; if (ADOTable1.RecordCount > 0) then begin ban:=True; end else; begin ban:=False; end; end; end; busqueda:= ban; end; En el siguiente codigo, ocurre el mismo error: Código:
procedure TForm7.FormActivate(Sender: TObject); begin propietario:= Tclasepropietario.Create; propietario.conectaBD; propietario.ConectaTabla(1); ADOTable1.Filtered:= True; ADOTable1.Filter:='BORRADO LIKE FALSO'; DataSource1.DataSet := ADOTable1; end; Pero como te digo me salta el error mencionado. |
#8
|
||||
|
||||
Hola.
Cita:
Cita:
Cita:
Creo que debes profundizar un poco mas sobre el tema de los filtros. En el FTP de Club Delphi se encuentra un libro de descarga gratuita en el que se explica cláramente: La cara oculta de Delphi 4 (Capítulo 20). Saludos.
__________________
Daniel Didriksen Guía de estilo - Uso de las etiquetas - La otra guía de estilo .... |
|
|
Temas Similares | ||||
Tema | Autor | Foro | Respuestas | Último mensaje |
Busqueda con ADOTable | elpacua | OOP | 6 | 28-02-2008 10:46:39 |
Sum en AdoTable | novato03 | Conexión con bases de datos | 14 | 02-11-2007 21:58:46 |
Relación AdoTable | novato03 | Conexión con bases de datos | 3 | 02-11-2007 17:40:39 |
EVariantError con ADOTable | chujor | Conexión con bases de datos | 2 | 17-05-2007 12:38:57 |
Ordenar una ADOTable | manu | Conexión con bases de datos | 5 | 05-02-2004 23:48:23 |
|