Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Conexión con bases de datos
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Conexión con bases de datos

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 21-02-2007
Avatar de Vlady
Vlady Vlady is offline
Miembro
 
Registrado: ago 2005
Posts: 217
Poder: 19
Vlady Va por buen camino
Trabajar con grids

Tengo el siguiente inconveniente tengo una tabla de proveedores no es muy grande alrededor de 40 quisiera trabajar estos en una DBGrid en donde me aparezca el nombre del proveedor y las columnas sean los dias del mes, de tal forma que el usuario del sistema pueda realizar un un pedido al proveedor seleccionando el día en que se realiza el pedido, mi problema radica en que deseo que se puedan realizar varios pedidos en varios dias al mismo provedor, es decir que se puedan seleccionar varias celdas del mismo proveedor en diferentes dias y al realizar el pedido cambie de color el dbgrid o el StringGrid.

No se con cual de los dos trabajar ya que igual los dias del mes no estan en la tabla y se pueden dibujar en tiempo de ejecución, si alguien me puede dar pistas sobre este tema de los dbgrids les agradeceria infinitamente.

Gracias

Tabajo con delphi7 y firebird 2.0
Responder Con Cita
  #2  
Antiguo 21-02-2007
Avatar de AGAG4
AGAG4 AGAG4 is offline
Miembro
 
Registrado: ago 2004
Ubicación: Los Mochis, Sinaloa, México
Posts: 1.420
Poder: 21
AGAG4 Va por buen camino
Quieres pintar todo el grid????
__________________
"Hemos aprendido a volar como los Pájaros, y a nadar como los Peces, y todavía No aprendemos a vivir como Hermanos". Martin Luther King
Responder Con Cita
  #3  
Antiguo 23-02-2007
Avatar de Vlady
Vlady Vlady is offline
Miembro
 
Registrado: ago 2005
Posts: 217
Poder: 19
Vlady Va por buen camino
Solo quiero pintar los dias en que hubo pedidos selccionando el proveedor y el día
Responder Con Cita
  #4  
Antiguo 23-02-2007
Avatar de Lepe
[Lepe] Lepe is offline
Miembro Premium
 
Registrado: may 2003
Posts: 7.424
Poder: 29
Lepe Va por buen camino
Lo que necesitas es pivotar una tabla, es decir, en base a un campo, hacer girar la tabla para que:
- Lo que son filas se muestren como columnas.
- Lo que son columnas, se muestren como filas.

Yo al menos para Firebird y componentes MDOLIB no encontré el homólogo a Decision Cube que traía el BDE, así que eché manos de un procedimiento almacenado.

En mi caso requería 15 columnas (una quincena), en cada columna devuelvo el idPedido (cero si no ha habido ningún pedido).

El Store procedure siempre tendrá 31 columnas, (el máximo de cualquier mes) numeradas, por ejemplo: dia1 dia2 dia3...dia31, dentro del SP, se busca las fechas en que se ha realizado un pedido, y a cada columna se le asigna el Id del Pedido:
Código:
dia1  dia2 dia3
 35   332   0
Si pides el mes de febrero, querrá decir que el 01/02/2007 se ha hecho un pedido cuyo IdPedido = 35, el día 3 no se hizo ningún pedido y por eso tiene el valor cero.


Yo he usado un DBGrid normal con DefaultDraw a false, así puedo pintar a voluntad en cualquier celda, está pensado para pintar 2 líneas dentro de cada celda, pero puedes modificarlo.

El código para pintar cada celda es este:
Código Delphi [-]
procedure TfrmCaja.frgridDrawColumnCell(Sender: TObject; const Rect: TRect;
  DataCol: Integer; Column: TColumn; State: TGridDrawState);

var Text1, Text2 :string;
    Formated: Integer;
    CampoObra :TField;

   //···············································································
   procedure WriteText(Grid: TDBGrid; ACanvas: TCanvas; const ARect: TRect;
     const Line1, Line2: string; Format: Word);
   const
     DX = 2;
     DY = 2;
   var
     S: array[0..255] of Char;
   begin
     with Grid, ACanvas, ARect do
     begin
       case Format of
         DT_LEFT:begin
          ExtTextOut(Handle, Left + DX, Top + DY,
             ETO_OPAQUE or ETO_CLIPPED, @ARect, StrPCopy(S, Line1), Length(Line1), nil);
          ExtTextOut(Handle, (Right -  TextWidth(Line2)) div 2, Top + 20,
             ETO_CLIPPED, @ARect, StrPCopy(S, Line2), Length(Line2), nil);

          end;

         DT_RIGHT:begin
          ExtTextOut(Handle, Right - TextWidth(Line1) - 3,Top + DY,
             ETO_OPAQUE or ETO_CLIPPED, @ARect, StrPCopy(S, Line1), Length(Line1), nil);
          ExtTextOut(Handle, Left + dx, Top + 20,
             ETO_CLIPPED, @ARect, StrPCopy(S, Line2), Length(Line2), nil);
          end;

         DT_CENTER: ExtTextOut(Handle, Left + (Right - Left - TextWidth(Text)) div 2,
             Top + DY, ETO_OPAQUE or ETO_CLIPPED, @ARect,
             StrPCopy(S, Text), Length(Text), nil);
       end;
     end;
   end;
  begin
with frgrid do
begin
  if column.FieldName = 'NOMBRE' then
  begin
    Text1 :=qrysalariosnombre.AsString;
    text2 :=qrySalariosCategoria.AsString;
    Formated := DT_LEFT;
  end
  writetext(frgrid , frgrid.Canvas, rect,Text1,text2,Formated);
end;

Para seleccionar varias columnas, tendrás que ingeniartelas, por ejemplo pintando el fondo de color azul (simulando que está seleccionada) y guardando la fecha en un array of TDateTime (por ejemplo)

Son líneas generales, si neceistas algo más avisa.
__________________
Si usted entendió mi comentario, contácteme y gustosamente,
se lo volveré a explicar hasta que no lo entienda, 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
Grids.pas Pook Varios 3 05-05-2006 13:11:13
String Grids naker OOP 4 02-09-2004 07:12:46
unir db grids piyugo Varios 3 29-08-2004 23:54:50
Grids... superhopi Conexión con bases de datos 3 17-08-2004 16:22:41
Manejo de Grids y picklist frankmch Varios 2 24-11-2003 00:27:38


La franja horaria es GMT +2. Ahora son las 00:49:04.


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