PDA

Ver la Versión Completa : Tabla de búsqueda


silviodp
23-02-2004, 16:24:59
Si yo tengo 2 tablas Paradox7, y defino mediante el Diseñador de Modulo de Datos en la solapa de Diagrama de datos un campo de búsqueda, entre las dos tablas, tal que para completar un campo de una busque en la otra los datos, siempre se debe usar (luego en mi programa) un DBLookUpComboBox para ver los datos de la tabla de búsqueda?, por que yo quiero poner un Speed Button tal que en el evento Onclick del mismo habra la tabla de búsqueda en un DBGrid y al hacer doble click sobre un registro de ésta me complete los datos en el campo de la otra.
Si alguien me puede dar una idea de como puedo hacerlo.
Son las típicas tablas de búsqueda que tiene cualquier aplicación.
Gracias.

marcoszorrilla
23-02-2004, 23:05:22
Creo que lo que quieres, si interpreto bien tu mensaje quedaría mejor de la siguiente manera.

En la rejilla pulsas botón derecho y abres el editor de columnas añades los campos necesarios y sobre el que quieras que te abra el segundo formulario pones en su propiedad ButtonStyle : cbsEllipsis
Esto hará que al entrar en esta columna en modo edición aparezca un botón con tres puntos que al pulsarlo mediante el evento "ut infra" referenciado te abrirá el segundo formulario:

procedure TfrCompras.GrLineasEditButtonClick(Sender: TObject);
begin
Application.CreateForm(TfrDlgProducto, frDlgProducto);
frDlgProducto.ShowModal;
end;

Lo abrimos en forma modal y en el evento DobleClic de la rejilla que tendremos en este segundo formulario por ejemplo con los precios de los productos actualizaremos el DataSet del primero:

por ejemplo:

FacturaProducto.Value:=ProductoNombre.Value;
FacturaPrecio.Value:=ProductoPrecio.Value;
....

Un Saludo.

silviodp
24-02-2004, 00:25:29
Sí eso es más o menos lo quiero hacer, pero no quiero levantar la otra tabla desde el DBGrid de la primera, sino que de un botón que esté al lado de un DBEdit y que al hacer doble click sobre el DBGrid que se abre me guarde la información en el DBEdit y por lo tanto lo hará en el campo que está relacionado con éste.
Me explico?, espero me entiendan.
Gracias.

jachguate
24-02-2004, 03:01:45
Pues la solución es exactamente la misma... solo cambian los eventos en los que se dispara el otro formulario... no?

silviodp
24-02-2004, 04:06:37
Es lo mismo?, pero si yo tengo la tabla de búsqueda: Producto con los campos CODIGO DESCRIPCION y quiero que se vea (cuando hago doble click en el DBGrid de la tabla de búsqueda) por ej. la Descripción del producto en el DBEdit pero quiero que guarde en la tabla el Código del mismo, como tengo que hacerlo de la forma que yo quiero??
Gracias.

jachguate
24-02-2004, 06:07:07
Es que el valor lo almacenas en el Campo del dataset asociado al DBEdit, DBGrid, DBText o lo que querras... de manera que este (gracias a la VCL) se actualiza automáticamente (o mágicamente, como querras verlo).


FacturaProducto.Value:=ProductoNombre.Value;
FacturaPrecio.Value:=ProductoPrecio.Value;
....

Hasta luego.

;)

silviodp
24-02-2004, 13:00:09
Entonces en definitiva no tengo que usar el el Diagrama de datos para relacionar las tablas??, pero el ejemplo que Ud. me dan en realidad no almacena el código en la tabla sino el nombre, como escribí antes quiero relacionar las tablas de tal forma que me guarde el Código en el campo de la tabla pero que me deje ver en el componente el Nombre o Descripción.
Esto yo sé que se puede hacer con un DBLookUpComboBox pero si la tabla de búsqueda es muy grande sería muy lento encontrar lo que estoy buscando por lo tanto lo que quiero es abrir la tabla de búsqueda con un DBGrid, hacer doble click...,etc. (lo que ya expliqué antes).
No sé si me entienden...
Saludos, gracias.

__cadetill
24-02-2004, 13:09:46
Si quieres, precisamente para este menester en mi web tienes el TDBSearchDialog que te encapsula todo el tema y puedes usar BDE, IBX, DBX o ADO. Con código fuente, of course. Hechale una ojeada por si puede interesarte (eso sí, utiliza las RX)

Espero dentro de poco suber la versión 2 de dicho componente, a ver si voy bien de tiempo y la termino :o

silviodp
24-02-2004, 19:48:42
Cadetill:
en Delphi 5 anda ese componente?, las RX son gratiutas y de donde las bajo?
O sea que otra forma de hacer lo que quiero no hay más que instalando este componente. La verdad es que mucho no me gusta hacerlo ya que he instalado otros pero me los instala mal y he tenido problemas con Delphi.
En realidad no se bien como se instalan los componentes.
Gracias.

jachguate
24-02-2004, 21:13:28
Claro que hay otras formas... pero de esta te ahorrarás el trabajo de hacerlo todo vos solito... ya que aprovecharás lo hecho (y bien hecho) por el amigo cadetill, que gentilmente (y gratuitamente) está compartiendo su código con vos.

Las rx son gratuitas. La url de donde las podes descargar es http://sourceforge.net/projects/rxlib.

Hasta luego.

;)

jrcosta75
24-02-2004, 22:01:42
Jachguate:
En la pagina que me pasate estan las RX pero para Delphi 6 yo estoy usando el 5, sirve tambien o esta en otra pagina, o donde?
Se instalan igual que cualquier componente las RX?

__cadetill
25-02-2004, 01:13:36
En mi web encontrarás las Rx desde la versión 3 hasta la 7 de Delphi ;)

silviodp
25-02-2004, 16:08:52
Cadetill: en que parte de tu pagina ya que lo que encuentro es el RXDBGrid, nada más.
Perdón y gracias.

Nuria
25-02-2004, 16:19:22
En el Menú ----> Delphi ----> Componentes ----> Comp. Utilizados.

Yo también me las baje de su página ;) . Gracias Cadetill!

__cadetill
25-02-2004, 16:32:45
Gracias Cadetill!
Gracias a todos vosotros por las visitas ;)

silviodp
25-02-2004, 20:18:59
Cadetill:
baje la lib. RX de tu pagina, pero no pude instalarla, no se si tengo que utilizar New Component o New Package, o como, la verdad es que no sé como se hace.
Disculpas y gracias.

__cadetill
25-02-2004, 20:31:58
Veamos, has de abrir los 6 *.dpk para delphi 5 (los que son xxxxx5.dpk). Los compilas todos. Esto te generará unos archivos *.bpl, copialos al directorio windows/system32 (winnt/system32 según SO). Luego has de darle al botón de instalar.

Y eso es todo ;)

silviodp
26-02-2004, 02:24:56
Donde los genera a los archivos *.bpl, uso win98 también los copio en C:\Windows\System32.

__cadetill
26-02-2004, 09:55:08
Si no has tocado nada de las opciones de los dpk, en principio en el mismo directorio donde tienes los dpk

En Win98 creo que el directorio tendría que ser el System (pero no lo aseguro)

silviodp
26-02-2004, 14:29:33
Cadetill:
lo que hice fué: Abri Delphi, de ahí abri las *.dpk, luego click en Compilar, me generó los *.bpl, en un directorio de delphi, C:\Archivos de programa\Borland\..., de ahí las copié en el directorio Windows\System32, y click en botón instalar, y que ocurrió...nada se me colgó la PC.
Como hay que hacerlo entonces?
Perdón y gracias como siempre.

jachguate
27-02-2004, 00:25:48
Comenzamos otra vez con las rusas???

Si no mal recuerdo... en el mismo zip de las rusas hay un documento con información PASO A PASO de como instalarlas (install.txt podria ser), en cada versión de Delhpi. Siguiendo estas instrucciones, el proceso funciona a la perfección.

Hasta luego.

;)

__cadetill
27-02-2004, 01:17:07
Comenzamos otra vez con las rusas???
Sí, ya ves, nos traen a todos de cabeza :D
La verdad es que es uno de los defectillos que le veo a este paquete de componentes. A veces cuesta cogerle el punto a la instalación :(