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 16-01-2007
Jucho69 Jucho69 is offline
Miembro
 
Registrado: ene 2007
Ubicación: Ciudad Habana, Cuba
Posts: 118
Poder: 18
Jucho69 Va por buen camino
Suma de 100 tablas dbf

Hola...

Despues de percibir el calibre en cuanto a conocimientos de algunos en este Foro, no tengo dudas de que mi problema tiene solución.

Tengo en una carpeta mas de 100 archivos(tablas.dbf) con igual estructura y de diferente nombre solo deseo saber como se pueden sumar los valores de todas las tablas de esta manera y poner el resultado en una tabla vacia o creada previamente.

tabla1 tabla2 tabla total
2 1 2 1 1 1 3 2 3
3 3 3 3 3 1 3 3 4

De cualquier manera gracias.
Responder Con Cita
  #2  
Antiguo 16-01-2007
Avatar de marcoszorrilla
marcoszorrilla marcoszorrilla is offline
Capo
 
Registrado: may 2003
Ubicación: Cantabria - España
Posts: 11.221
Poder: 10
marcoszorrilla Va por buen camino
La cosa es fácil, no tienes más que hacer una consulta SQL por tabla e ir acumulando el resultado en una variable.
Código Delphi [-]
var
nParcial: Double;

begin
nParcial:=0;
Query1.Close;
Query1.Sql.Clear
Query1.Sql.Add('Select Sum(Importe) From MiTabla');
Query1.Open;

nParcial:=nParcial + Query1.Fields[0].AsFloat;

//Esta estructura hay que repetirla una vez por cada tabla.

end;
Si las tablas tienen la misma estructrura, es decir el campo a sumar se llama igual, te vale el Sql, solamente hay que cambiar el nombre de la tabla. Estos nombres se pueden guardar en una matriz y recorrerla mediante un bucle que se ejecutaría 100 veces e ir acumulando los valores.

Un Saludo.
__________________
Guía de Estilo de los Foros
Cita:
- Ça c'est la caisse. Le mouton que tu veux est dedans.
Responder Con Cita
  #3  
Antiguo 16-01-2007
Avatar de Onti
Onti Onti is offline
Miembro
 
Registrado: jul 2003
Ubicación: La Paz - Bolivia
Posts: 500
Poder: 21
Onti Va por buen camino
basado en el codigo de Marcos, prodria utilizar una funcion

Código Delphi [-]
var
  nParcial: Double;
  Function Suma(NomTabla:String)ouble;
  Var
     LRes ouble;
  Begin
    // Incializar
      LRes :=0;
   
    // Consulta
      Query1.Close;
      Query1.Sql.Clear
      Query1.Sql.Add('Select Sum(Importe) From '+NomTabla);
      Query1.Open;
      LRes :=Query1.Fields[0].AsFloat;
      Query1.Close;

    // Resultado
       Suma:=LRes;
  End;
begin

  nParcial:=0;
  nParcial:=nParcial +Suma('tabla1'); 
  nParcial:=nParcial +Suma('tabla2'); 
  .
  .

// Si asumimos que el nombre de las tablas solo diere por un nro podríamos hacer algo así:

  For La :=1 to 100
    nParcial:=nParcial +Suma('tabla'+IntToStr(La));


end;
Responder Con Cita
  #4  
Antiguo 18-01-2007
Jucho69 Jucho69 is offline
Miembro
 
Registrado: ene 2007
Ubicación: Ciudad Habana, Cuba
Posts: 118
Poder: 18
Jucho69 Va por buen camino
Hola Marcos y Onti

Ayer no accedí al Foro por eso no pude probar los resultados que me ofrecieron, de todas formas les agradezco que se hayan ocupado en ayudarme, ya que seguramente el tiempo no les alcanza para atender los multiples problemas que presentamos los menos experimentados.

Este es el extenso codigo que elaboré, primero inserté una sección en el Formulario para apareciera en un Combo los archivos.dbf que estan en una carpeta determinada, luego puse dentro de un ciclo un label que toma el nombre de los itenms de Combo y despues la sentencia SQL cullo resultado se graba en qrlabels (no encontré otra forma).

for zz:=0 to can do
Label2.Caption:=ComboBox1.Items[ComboBox1.ItemIndex];
begin
Query4.SQL.Clear; Query4.SQL.Add('Select * From ' + Label2.caption);
Query4.SQL.Add('where ID_IND = "180"'); Query4.Open;
Form4.qrlabel169.Caption:=(Query4.Fields[0].Text); if Form4.qrlabel169.Caption='' then Form4.qrlabel169.Caption:='0';
Form4.qrlabel167.Caption:=(Form4.qrlabel169.Caption);
aa:=Form4.qrlabel22.Caption; ab:=Form4.qrlabel167.Caption; ba:=strtofloat(aa); bb:=strtofloat(ab);
l:=ba+bb; Form4.qrlabel22.Caption:=floattostr(l); Form4.qrlabel168.Caption:=(Form4.qrlabel170.Caption);

end;

Gracias por adelantado.
Responder Con Cita
  #5  
Antiguo 18-01-2007
Avatar de Onti
Onti Onti is offline
Miembro
 
Registrado: jul 2003
Ubicación: La Paz - Bolivia
Posts: 500
Poder: 21
Onti Va por buen camino
Algunos detalles:

Cuando uses código delphi utiliza las etiquetas que ayudan mucho para visualizar y entender rápidamente un código, también es útil que tengas una instrucción por linea.

No hay necesidad que utilices un Label como "Puente" entre tu ComboBox y el Query, puedes hacerlo directamente de esta forma:

Código Delphi [-]
  Query4.SQL.Clear;
  Query4.SQL.Add('Select * From ' + ComboBox1.Text);
  Query4.SQL.Add('where ID_IND = "180"');
  Query4.Open;
Responder Con Cita
  #6  
Antiguo 18-01-2007
Jucho69 Jucho69 is offline
Miembro
 
Registrado: ene 2007
Ubicación: Ciudad Habana, Cuba
Posts: 118
Poder: 18
Jucho69 Va por buen camino
¿Como se realiza ciclo sin hacer referencia al Label?

Hola Onti.

Es cierto que debo observar algunas normas de programación para no pasar trabajo despues al rectificar o al agregar algun segmento del codigo.
te agradezco tu respuesta, solo que ¿como se realiza ciclo sin hacer referencia al Label?

Disculpame si soy demaciado insistente.
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
suma con decimales Jheysson13 SQL 2 28-11-2006 09:02:26
Suma de agrupados... Tanix Impresión 2 19-01-2004 12:45:45
suma en consulta sql pzala Varios 5 15-12-2003 02:06:05
Suma en un Dbgrid agora18 Conexión con bases de datos 1 14-10-2003 21:52:33
Suma en currencyedit de las rx lib botones67 Varios 1 15-07-2003 21:06:34


La franja horaria es GMT +2. Ahora son las 10:37:06.


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