Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Bases de datos > Firebird e Interbase
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 05-06-2006
joanajj joanajj is offline
Miembro
 
Registrado: jul 2003
Posts: 144
Poder: 21
joanajj Va por buen camino
Localizar datos con Firebird

Buenas a todos, tengo una preguntilla:

Para localizar algún dato dentro de la BD Firebird, utilizo el típico Locate, y la cuestión es que si hay algún procedimiento más rápido que el Locate o es lo único que hay.


Un saludo...
Responder Con Cita
  #2  
Antiguo 05-06-2006
Avatar de Casimiro Notevi
Casimiro Notevi Casimiro Notevi is offline
Moderador
 
Registrado: sep 2004
Ubicación: En algún lugar.
Posts: 32.044
Poder: 10
Casimiro Notevi Tiene un aura espectacularCasimiro Notevi Tiene un aura espectacular
usa sql, por ejemplo un ibdataset, en su propiedad selectsql pones la consulta, algo así:

Código SQL [-]
ibdataset1.close;
ibdataset1.selectsql.text := 'select * from tbclientes where codigo= :quecodigo';
ibdataset1.ParamByName('codigo').asinteger:= inttostr(edit1.text);
ibdataset1.open
Responder Con Cita
  #3  
Antiguo 05-06-2006
celades1 celades1 is offline
Miembro
 
Registrado: ago 2005
Posts: 116
Poder: 19
celades1 Va por buen camino
Hola

El locate solo lo utilizo cuando estoy un grid y debo refrescar datos ( o sea abrir y cerrar el dataset) que el cursor se posicione en el registro original antes del refresco, capturo el valor Pk en una variable local cierro, abro y locate al valor guardado.
Es evidente que el rendimiento del locate sera tanto mejor cuantos menos registros haya en el grid (como ya sabes la filosofia sql no es llevar toda una tabla al grid sino los menos registros necesarios que el usuario precise y si las necesidades canvian datos de otro año etc, generar de nuevo la consulta).
No lo utilizo nunca mas, ya que para buscar cosas, canviar valores de filtro de una consulta, siempre cierro el dataset reconstruyo el selectslq.text o sql.text paso los parametros y abro de nuevo.
Yo creo que la filosofia de firebird es utizar sql, ya sea con IBdataset,fibdataset etc para servir a un grid, o IBquery,Fibquery etc para que encontrar un valor concreto de una consulta.

Espero haberte aclarado algo

Saludos
Responder Con Cita
  #4  
Antiguo 05-06-2006
joanajj joanajj is offline
Miembro
 
Registrado: jul 2003
Posts: 144
Poder: 21
joanajj Va por buen camino
más claro, pero algo más

Efectivamente, tenéis razón los dos, pero con locate puedo localizar un por ej. artículo de forma que voy escribiendo, y a medida que pulso una tecla me localiza por ese tedit. Ej.

Pongo un Tedit y en el evento onkeypress verifico que al pulsar enter localize en la BD el valor actual de ese Tedit, usando el parámetro partialkey de forma que por ejemplo localiza el artículo 'moned' (monedero) y se coloque en la primera coincidencia, No sé si me habéis entendido, y si con SQL se puede hacer una busqueda de este tipo.
Es evitar tener que poner todo el nombre completo del artículo para localizarlo, solo con poner un trozo que se posicione el cursor , y si escribo una letra más se posicione en el siguiente más próximo.

Un saludo...
Responder Con Cita
  #5  
Antiguo 05-06-2006
celades1 celades1 is offline
Miembro
 
Registrado: ago 2005
Posts: 116
Poder: 19
celades1 Va por buen camino
Hola

Claro que se puede hacer incluso para cada letra que teclees, en el evento onkeypress lanzas un cierra_abre de las tablas modificando el sql

si solo quieres codigos que empiecen por el texto del edit seria
Código Delphi [-]
sql.text:= ' select * from tabla where codi starting '+quotedstr(edit.text);

o bien si quieres todo codigo que tenga esa fraccion de texto
Código Delphi [-]
sql.text:= ' select * from tabla where codi like '+quotedstr('%'+edit.text+'%');

saludos
Responder Con Cita
  #6  
Antiguo 06-06-2006
joanajj joanajj is offline
Miembro
 
Registrado: jul 2003
Posts: 144
Poder: 21
joanajj Va por buen camino
Clausula starting ?

Buenas de nuevo, estoy buscando la clausula Starting que has situado dentro del Select y no la veo documetada. Es propia de Interbase ??? si es así, me puedes decir donde encontrar las clausulas propias de Interbase y Firebird que no forman parte del SQL/99.

Muchas gracias...
Responder Con Cita
Respuesta



Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro

Temas Similares
Tema Autor Foro Respuestas Último mensaje
Localizar Archivo y Registro alcides Varios 5 19-05-2005 15:51:51
Localizar nodo en un arbol bbjb OOP 1 10-12-2004 17:08:02
Localizar carpeta Mis Documentos bustio Varios 3 03-06-2004 19:42:04
Localizar un registro en una tabla JODELSA Conexión con bases de datos 2 14-11-2003 22:25:38
Localizar dentro de 1 dbgrid cisterpe OOP 6 12-09-2003 11:05:57


La franja horaria es GMT +2. Ahora son las 12:21:09.


Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi
Copyright 1996-2007 Club Delphi