Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Varios
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Grupo de Teaming del ClubDelphi

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 12-01-2012
Lenny Lenny is offline
Miembro
 
Registrado: jun 2007
Posts: 161
Poder: 17
Lenny Va por buen camino
Question Pasar datos de un Table a un GRID

Estimados, de antemano espero que tuvieran muy felices fiestas en familia y con amigos, y, nuevamente los molesto...

Tengo una base de datos de correos y usuarios (internos de una empresa, no spam) los cuales podrian ir cambiando segun el ingreso/egreso de personal, cambios de areas, etc... el problema, es que necesito cargar todos los datos a un GRID ¿Por? mi idea es tener 2 grid, en uno la lista completa de usuarios/mails para al hacer doble click en uno de estos se pase al segundo grid y trabajar con la lista de mail's/usuarios previamente cargados, por que no DBGrid? por que esta en linea en varios equipos, y si elijo o hago algun cambio en la lista de correos/usuarios quien ejecute el programa despues vera estos cambios... por lo mismo necesito sea local y cuando quiera nuevamente hacer la seleccion la lista se cargue de nuevo porsi ocurrieron cambios en ese rato... se entiende???

Lo de pasar la info entre Grid's lo tengo claro, solo necesito saber como pasar los datos de la Base de Datos al Grid independiente de los cambios en la base de datos, de antemano muchas gracias...

PD: Utilizo Delpho 2010, MySQL, Zeos...
Responder Con Cita
  #2  
Antiguo 12-01-2012
Avatar de Neftali [Germán.Estévez]
Neftali [Germán.Estévez] Neftali [Germán.Estévez] is offline
[becario]
 
Registrado: jul 2004
Ubicación: Barcelona - España
Posts: 18.295
Poder: 10
Neftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en bruto
Cita:
Empezado por Lenny Ver Mensaje
...solo necesito saber como pasar los datos de la Base de Datos al Grid independiente de los cambios en la base de datos, de antemano muchas gracias...
No se si te he entendido bien.

Quieres pasar los datos de una tabla de la Base de Datos a un "Grid independiente". Lo que no tengo claro es lo del grid independiente.
¿Te refieres a un TStringGrid, por ejemplo o a un DBGrid que no esté conectado con esa tabla?
Tampoco tengo claro qué vas a hacer luego con los datos que pases a ese segundo Grid.

Intenta aclarar eso y tal vez podamos ser un poco más concretos.

Para un TStringGrid, debería bastar con un recorido por la tabla tipo:

Código Delphi [-]
i := 0;
table1.First;
while (not (Tabla1.eof)) do begin

  StringGrid1.cell[1,i] : tabla1.FieldByName('codigo').AsString;
  StringGrid1.cell[2,i] : tabla1.FieldByName('Name').AsString;
  ...


  table1.Next;
  i := i + 1;
end;

Para el segundo caso, creo que lo mejor es utilizar un TClientDataSet con la misma estructura del primero, pero como te he dicho, antes de continuar, a ver si puedes aclarar los temas que antes te he comentado..
__________________
Germán Estévez => Web/Blog
Guía de estilo, Guía alternativa
Utiliza TAG's en tus mensajes.
Contactar con el Clubdelphi

P.D: Más tiempo dedicado a la pregunta=Mejores respuestas.
Responder Con Cita
  #3  
Antiguo 12-01-2012
Lenny Lenny is offline
Miembro
 
Registrado: jun 2007
Posts: 161
Poder: 17
Lenny Va por buen camino
Talking

Muchas gracias estimado, te explico mejor:

Tengo una base de datos, de los cuales existe una lista de usuarios y mails. Estos dependiendo de la necesidad se utilizan, en este caso para informar a los usuarios de X situacion, por lo cual quien envia este mail deve seleccionar de toda la lista a quienes es envia el mail.
Como comentaba antes, podria hacerlo desde un DBGrid, pero segun la idea que tengo no serviria, ya que entorpeseria a otro usuario si quiere enviar mails, que necesito???

2 Grids, uno con todos los mails cargados desde la base de datos, y el otro en blanco, para cuando haga doble click en el primero se borre y cargue en el segundo, con esto al terminar solo saque los mails del grid 2, y al cerrar/abrir borrar ambos grid y vovler a cargar los datos, se entiende??? Todo menos lo de cargar los datos al grid lo tengo mas menos claro, solo falta eso.

Eso estimado, prove tu codigo y quedo asi:

Código Delphi [-]
var
i : Integer;
begin
i := 0;
BDatos.Usuarios_T.First;
while (not (BDatos.Usuarios_T.eof)) do
begin
StringGrid1.Cells [1,i] := BDatos.Usuarios_T.FieldByName('NOMBRE').AsString;
StringGrid1.cells[2,i] := BDatos.Usuarios_T.FieldByName('CORREO').AsString;
BDatos.Usuarios_T.Next;
  i := i + 1;
end;
end;

Funciona de perlas, pero necesito agrege mas lineas en caso de ser mas usuarios, te pasaste, te agradesco nuevamente...
Responder Con Cita
  #4  
Antiguo 12-01-2012
Avatar de kapcomx
kapcomx kapcomx is offline
Miembro
 
Registrado: jun 2007
Ubicación: Puebla México
Posts: 350
Poder: 17
kapcomx Va por buen camino
grid

Lenny, tengo un ejemplo que pasa el resultado de una consulta a un stringgrid, espero te sirva

este ejemplo toma los datos de una consulta (queryex2) y los pasa a un string grid.

se me ocurre que al momento de darle doble clic al registro en tu primer grid generes una consulta con la clave de ese registro y posteriormente llenes la segunda grid con los datos que te resulten de esa consulta.


Código Delphi [-]
 
procedure TFORMCAJACHICA.CONSTRUYECREDITOClick(Sender: TObject);

var
  i,x:Integer;  //x para controlar el numero de fila i ciclo for
  r: real;

begin

  // con esto limpia el stringgrid
 
   for I := 1 to StringGrid1.RowCount - 1 do
    StringGrid1.Rows[i].Clear;
 
 
 
    stringgrid1.Rowcount:=(queryex2.recordcount + 5);  //defino el numero de filas del stringgrid en base al numero de registros y le agrego 5 mas 
    stringgrid1.ColCount:=12; //defino las columnas

 with StringGrid1 do
 begin
  // defino el Título de las columnas en base a los de los campos de la consulta
  Cells[0, 0] := '';
  Cells[1, 0] := 'FOLIO';
  Cells[2, 0] := 'FECHA';
  Cells[3, 0] := 'CHOFER';
  Cells[4, 0] := 'GRUA';
  Cells[5, 0] := 'CLIENTE';
  Cells[6, 0] := 'SERVICIO';
  Cells[7, 0] := 'SUBTOTAL';
  Cells[8, 0] := 'I.V.A.';
  Cells[9, 0] := 'RET.';
  Cells[10, 0] := 'TOTAL';
  Cells[11, 0] := 'FACTURA';

  end;
//persoonalizo el ancho de las columnas

   stringgrid1.ColWidths[0]:=25;
   stringgrid1.ColWidths[1]:=70;
   stringgrid1.ColWidths[2]:=80;
   stringgrid1.ColWidths[3]:=70;
   stringgrid1.ColWidths[4]:=60;
   stringgrid1.ColWidths[5]:=280;
   stringgrid1.ColWidths[6]:=105;
   stringgrid1.ColWidths[7]:=70;
   stringgrid1.ColWidths[8]:=70;
   stringgrid1.ColWidths[9]:=70;
   stringgrid1.ColWidths[10]:=70;
   stringgrid1.ColWidths[11]:=70;
 
x:=1;
 
queryEX2.first;
while not (queryEX2.eof) do
begin
 with StringGrid1 do
 begin

  Cells[0, x] := '';
     if   QUERYEX2.fieldvalues['folio']=null then
  Cells[1, x] := ''
  else
  Cells[1, x] :=QUERYEX2.fieldvalues['folio'];
 
  if (QUERYEX2.FieldValues['FECHA'] <> null) then
  begin
 Present:= QUERYEX2.FieldValues['FECHA'];
  DecodeDate(Present, Year, Month, Day);
  case month of
  1: mes := 'Ene';
  2: mes := 'Feb';
  3: mes := 'Mar';
  4: mes := 'Abr';
  5: mes := 'May';
  6: mes := 'Jun';
  7: mes := 'Jul';
  8: mes := 'Ago';
  9: mes := 'Sep';
  10: mes := 'Oct';
  11: mes := 'Nov';
  12: mes := 'Dic';
end;
 
     Cells[2, x] :=  IntToStr(Day) + '-' + mes  + '-' + IntToStr(Year);
  end;
    if   QUERYEX2.fieldvalues['cHOFER']=null then
  Cells[3, x] := ''
  else
  Cells[3, x] :=(QUERYEX2.fieldvalues['CHOFER']);
   if   QUERYEX2.fieldvalues['GRUA']=null then
  Cells[4, x] := ''
  else
  Cells[4, x] :=(QUERYEX2.fieldvalues['GRUA']);
   if   QUERYEX2.fieldvalues['ASEG']=null then
  Cells[5, x] := ''
  else
  Cells[5, x] :=(QUERYEX2.fieldvalues['ASEG']);
   if QUERYEX2.fieldvalues['TIPO2']=null then
  Cells[6, x] := ''
  else
  Cells[6, x] :=(QUERYEX2.fieldvalues['TIPO2']);

  if ((QUERYEX2.fieldvalues[sub]=null) OR (QUERYEX2.fieldvalues[sub]=0))then
  Cells[7, x] := ''
  else
  begin
  r:= queryex2.fieldvalues[sub];
  Cells[7, x] :=Format('%0:2f',[r]);
  end;
   if ((QUERYEX2.fieldvalues['IVA']=null) OR (QUERYEX2.fieldvalues['IVA']=0))then
  Cells[8, x] := ''
  else
  begin
  r:= queryex2.fieldvalues['IVA'];
  Cells[8, x] :=Format('%0:2f',[r]);
  end;
    if ((QUERYEX2.fieldvalues['IMPRET']=null) OR (QUERYEX2.fieldvalues['IMPRET']=0))then
  Cells[9, x] := ''
  else
  begin
  r:= queryex2.fieldvalues['IMPRET'];
  Cells[9, x] :=Format('%0:2f',[r]);
  end;
    if ((QUERYEX2.fieldvalues['IMPNETO']=null) OR (QUERYEX2.fieldvalues['IMPNETO']=0))then
  Cells[10, x] := ''
  else
  begin
  r:= queryex2.fieldvalues['IMPNETO'];
  Cells[10, x] :=Format('%0:2f',[r]);
  end;

  if QUERYEX2.fieldvalues['fac']=null then
  Cells[11, x] := ''
  else
  Cells[11, x] :=(QUERYEX2.fieldvalues['fac']);

      Inc(x);
  end;
  queryEX2.Next;
end;
  StringGrid1.Row:=X;
 

end;

este ejemplo lo tengo en delphi 7. componentes zeos Mysql 5.0
cualquier cosa que no entiendas me avisas.
Responder Con Cita
  #5  
Antiguo 13-01-2012
Avatar de Neftali [Germán.Estévez]
Neftali [Germán.Estévez] Neftali [Germán.Estévez] is offline
[becario]
 
Registrado: jul 2004
Ubicación: Barcelona - España
Posts: 18.295
Poder: 10
Neftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en bruto
Cita:
Empezado por Lenny Ver Mensaje
Eso estimado, prove tu codigo y quedo asi:

Código Delphi [-]
var
  i : Integer;
begin
  i := 0;
  BDatos.Usuarios_T.First;
  while (not (BDatos.Usuarios_T.eof)) do begin
    StringGrid1.Cells [1,i] := BDatos.Usuarios_T.FieldByName('NOMBRE').AsString;
    StringGrid1.cells[2,i] := BDatos.Usuarios_T.FieldByName('CORREO').AsString;
    BDatos.Usuarios_T.Next;
    i := i + 1;
  end;
end;

Funciona de perlas, pero necesito agrege mas lineas en caso de ser mas usuarios, te pasaste, te agradesco nuevamente...
Esto último no lo entiendo....
Con este código rellenas tantas líneas del StringGrid como registros en la tabla.
Lo que no entiendo es qué quieres decir con "...necesito agrege mas lineas en caso de ser mas usuarios". Esto no me ha quedado claro.
__________________
Germán Estévez => Web/Blog
Guía de estilo, Guía alternativa
Utiliza TAG's en tus mensajes.
Contactar con el Clubdelphi

P.D: Más tiempo dedicado a la pregunta=Mejores respuestas.
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
Como actualizar un HTML GRID al cambiar un objeto TABLE? flystar .NET 0 24-12-2009 16:27:09
Modificar datos en un Grid (table o query) hugohiram SQL 6 07-06-2007 18:59:20
Como pasar datos de una hoja de Excel a Bases de Datos de Paradox Goyo OOP 1 06-02-2007 01:57:20
pasar parametro con un grid pharaonhx Varios 1 10-04-2005 20:21:56


La franja horaria es GMT +2. Ahora son las 13:34:30.


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