PDA

Ver la Versión Completa : No se ejecuta filtro a la primera vez


judit25
16-06-2008, 20:59:09
Buenas tardes a tod@s!!

En esta ocasion tengo un problema con un filtro en un query.

Estoy trabajando con Delphi7, Access 2003 y me conecto a la base de datos por ODBC.

Tengo un formulario donde tengo un dbgrid, un boton y unos dblookupcombobox para poder filtrar el dbgrid.

Lo que estoy intentanto hacer es que cuando seleccionen algo en uno de los dblookupcombobox y al darle al boton me va mandar a otro formulario en el cual me va a filtrar el contenido de un dbgrid que se muestra en el formulario que se llama, segun el registro que se seleccione en el dbgrid o en caso de que no seleccionen nada que tome los valores del primer registro.

El problema es que este filtro no me lo esta haciendo en la primera vez que le doy click al boton, para poder ver este filtro tengo que cerrar el formulario al que se llama y volver a darle click al boton.

Aqui les dejo el codigo que estoy utilizando:


procedure TFConMedidas.BBConsultarClick(Sender: TObject);
begin
//Las variables MedidaC y SizeC sin variables globales
MedidaC := DM.DSQMedida.DataSet.FieldByname('Dimension').AsString;
SizeC := DM.DSQMedida.DataSet.FieldByname('Size').AsString;

FConsulta1.Query1.Close();
FConsulta1.Query1.SQL.Clear;

FConsulta1.Query1.SQL.Add('SELECT * FROM QAro');
FConsulta1.Query1.SQL.Add(' Where (Size = :Size OR Size_2 = :Size) and (Medida = :Medida or Medida_2 = :Medida)');
FConsulta1.Query1.SQL.Add(' ORDER BY fecha_hora, letra, numero');
FConsulta1.Query1.ParamByName('Size').AsString := SizeC;
FConsulta1.Query1.ParamByName('Medida').AsString := MedidaC;

FConsulta1.DataSource2.DataSet := FConsulta1.Query1;
FConsulta1.Query1.Open();
FConsulta1.ShowModal;
end;


Alguien podria ayudarme con este problema?

Gracias anticipadas.

Saludos

coso
16-06-2008, 21:58:19
Veo dos posibles causas del error:

- Los parambyname deben colocarse antes de la sentencia SQL.
- DataSource2.Dataset esta sin asignar la primera vez q se ejecuta.

A ver si van por allá los tiros...

un saludo

enecumene
16-06-2008, 21:59:46
Hola, ¿no te tira algún error?, ¿por qué le asigna el datatset al datasource2?, ¿no está asignado por defecto? y ¿por qué antes del open no debería ser despúes? :confused:.

Saludos.

judit25
16-06-2008, 22:27:43
Hello
Bueno en el formulario al que estoy llamando FConsulta1 tiene asignado por defecto en el datasource2 una tabla "Table1", por esta razon es que le asigno el query por aqui.
Gracias
Saludos

coso
16-06-2008, 22:37:17
creo q intercambiando el orden de las lineas del query1.open y de la asignacion del datasource lo tienes solucionado...

judit25
16-06-2008, 23:35:36
creo q intercambiando el orden de las lineas del query1.open y de la asignacion del datasource lo tienes solucionado...

Gracias por responder, pero eso no resuelve el problema que tengo, sigue haciendo lo mismo.

Gracias

enecumene
16-06-2008, 23:38:22
Hola, creo que en realidad el datasource2 debe estar asignado por defecto"FConsulta1.Query1" y no Table1 como lo tienes hazlo así y borra la línea donde la asignas. Suerte!.

Saludos.