Ver Mensaje Individual
  #2  
Antiguo 23-09-2005
Avatar de epuigdef
epuigdef epuigdef is offline
Miembro
 
Registrado: jul 2005
Posts: 196
Reputación: 19
epuigdef Va por buen camino
El tema de crear nuevos campos en el resultado de la consulta no creo que te funcione.

Deberías hacerlo a mano, recorriendo los resultados y montando la grid desligada de la base de datos.

Algo así como:

En un Query montas la sentencia select * from tabla order by oficina

Creas una grid con 1 columna y 2 filas.

La idea es ir buscando la ruta en la grid, y si no está añadirla. Por esto montamos una función que devuelva la columna de la ruta, y cree la nueva columna si la ruta no está:

Código Delphi [-]
Function obtener_Columna(ruta : String) : Integer;

Var i , resultado: Intreger;

Begin

Resultado := -1;

For i :0 1 to Grid.ColCount – 1 do

If Grid[0, i] = ruta then resultado = i;

If resultado = -1 then //no está la ruta

Begin

Grid.ColCount := Grid.ColCount + 1;

Resultado := Grid.ColCount – 1;

Grid[0, resultado] := ruta;

End;

Obtener_columna := resultado;

End;


Y recorremos los resultados del query montando la tabla:

Código Delphi [-]
Var oficinaActual : Integer;

Fila, Columna : Integer;

OficinaActual := -1;

Fila := 1;

While not(query.eof) do

Begin

If (query.fieldByName(‘oficina’).AsInteger <> oficinaActual then //cambio de oficina

Begin

Grid.Rowcount := Grid.RowCount + 1;

Fila := Grid.RowCount – 1;

Grid[Fila, 0] := query.fieldByName(‘oficina’).AsString

OficinaActual := query.fieldByName(‘oficina’).AsInteger;

End;

Columna := obtener_Columna(query.fieldByName(‘ruta’).AsStirng);

Grid[Fila, Columna] := query.fieldByName(‘Ingreso’).AsString

Query.next;

End;

Ten en cuenta que el código lo he escrito directamente aquí, o sea que habrá algun error, pero la idea espero que te hays quedado clara.

Un saludo

Edu

Última edición por jmariano fecha: 23-09-2005 a las 13:06:58. Razón: Formateo del código usando las etiquetas [delphi]
Responder Con Cita