Somar Registros

Delphi

01/03/2003

Estou desenvolvendo um pequeno sistema para calcular quantas vezes durante o ano os funcionarios de uma loja alcançaram o primeiro lugar nas vendas . Criei uma tabela com o nome de tblFuncionario e os seguintes campos: nome, cod, mes1, mes2, mes3, mes4, ate mes12, pois bem estou em duvida na hora de somar as vezes em que cada funcionario alcançou o primeiro lugar, vou mostrar o que quero na tabelinha abaixo:

OBS: Os numeros ficaram desalinhados nas colunas, não consegui coloca-los um em baixo do outro, mas acho que da para entender o que eu quero. espero que alguem possa me mostrar como fazer essa soma. obrigado.

COD M1 M2 M3 M4 M5 M6 M7 M8 M9 [b:55d0601f07]TOTAL[/b:55d0601f07]
001 00 01 00 00 00 00 00 01 00 [b:55d0601f07]02[/b:55d0601f07]
002 01 00 01 00 00 00 01 00 00 [b:55d0601f07]03[/b:55d0601f07]
003 00 00 00 01 01 01 00 00 01 [b:55d0601f07]04[/b:55d0601f07]


Anonymous

Anonymous

Curtidas 0

Respostas

Carnette

Carnette

01/03/2003

Acredito que uma CONSULTA(query) seleção resolva a pontuação e a colocação dos funcionarios

Coloque um componente QUERY e um DATASOURCE e a seguinte frase SQL...

SELECT tblFuncionario.Mes1, tblFuncionario.Mes2, tblFuncionario.Mes3, tblFuncionario.Mes4, tblFuncionario.Mes5, tblFuncionario.Mes6, tblFuncionario.Mes7, tblFuncionario.Mes8, tblFuncionario.Mes9, tblFuncionario.Mes10, tblFuncionario.Mes11, tblFuncionario.Mes12,
tblFuncionario.Mes1 + tblFuncionario.Mes2 + tblFuncionario.Mes3 + tblFuncionario.Mes4 + tblFuncionario.Mes5 + tblFuncionario.Mes6 + tblFuncionario.Mes7 + tblFuncionario.Mes8 + tblFuncionario.Mes9 + tblFuncionario.Mes10 + tblFuncionario.Mes11 + tblFuncionario.Mes12 AS vTotal FROM tblFuncionario ORDER BY tblfuncionari.vTotal


GOSTEI 0
Anonymous

Anonymous

01/03/2003

Amigo valeu pela sua atenção, mas infelismente não funcionou, se você ou outro colega do forum tiver uma outra forma para fazer isso , valeu obrigado.


GOSTEI 0
Laureano Pereira

Laureano Pereira

01/03/2003

Amigo,

vamos ver se eu entendi:

você tem os campos dos meses, mas eu não sei que informacao tem ali.

pode ser o total das vendas do mes do funcionario ou entao a colocacao dele naquele mes.

1) Se for a colocacao no mes, tipo 1º lugar, 2º lugar..., voce pode criar um campo calculado na tbl, e no evento oncalcfields criar uma funcao que some somente as vezes que ele ficou em primeiro.

assim voce teria o numero de vezes que o funcionario tirou 1º lugar no periodo.

2) Se for o total de vendas no mes: crie uma tabela temporaria para colocar nos campos dos meses a colocacao do funcionario. E entao faça o sugerido no item 1.

Espero ter ajudado.

Abraços


GOSTEI 0
Anonymous

Anonymous

01/03/2003

Amigo Laureano ,

É justamente isso a colocacao no mes, tipo 1º lugar, 2º lugar..., Se não for pedir demais, voce poderia detalhar melhor porque eu não sei fazer essa função que some somente as vezes que ele ficou em primeiro.

Um abraço e até mais. Valeuuuuuuu. :lol:


GOSTEI 0
Adilsond

Adilsond

01/03/2003

Imaginando (´Seria tão bom não precisar imaginar´) que sua base seja paradox e que os campos cod e mes sejam numericos. Atualizei a query do carnette para:

SELECT tblFuncionario.´cod´,
SUM(tblFuncionario.´Mes1´) AS vMes1,
SUM(tblFuncionario.´Mes2´) AS vMes2,
SUM(tblFuncionario.´Mes3´) AS vMes3,
SUM(tblFuncionario.´Mes4´) AS vMes4,
SUM(tblFuncionario.´Mes5´) AS vMes5,
SUM(tblFuncionario.´Mes6´) AS vMes6,
SUM(tblFuncionario.´Mes7´) AS vMes7,
SUM(tblFuncionario.´Mes8´) AS vMes8,
SUM(tblFuncionario.´Mes9´) AS vMes9,
SUM(tblFuncionario.´Mes10´) AS vMes10,
SUM(tblFuncionario.´Mes11´) AS vMes11,
SUM(tblFuncionario.´Mes12´) AS vMes12,
SUM(tblFuncionario.´Mes1´ +
tblFuncionario.´Mes2´ +
tblFuncionario.´Mes3´ +
tblFuncionario.´Mes4´ +
tblFuncionario.´Mes5´ +
tblFuncionario.´Mes6´ +
tblFuncionario.´Mes7´ +
tblFuncionario.´Mes8´ +
tblFuncionario.´Mes9´ +
tblFuncionario.´Mes10´ +
tblFuncionario.´Mes11´ +
tblFuncionario.´Mes12´) AS vTotal
FROM tblFuncionario
GROUP BY tblFuncionario.´cod´
ORDER BY 14 desc


GOSTEI 0
Laureano Pereira

Laureano Pereira

01/03/2003

Crie um campo calculado para a tabela que voce vai usar, tipo totalvezes,

no evento onCalcFields da tabela:
var
ntotal: integer;
begin
nTotal := 0;
if (nmes1 = 1) then
ntotal = nTotal+1;
if (nmes2 = 1) then
ntotal = nTotal+1;
if (nmes3 = 1) then
ntotal = nTotal+1;
if (nmes4 = 1) then
ntotal = nTotal+1;
if (nmes5 = 1) then
ntotal = nTotal+1;
if (nmes6 = 1) then
ntotal = nTotal+1;
if (nmes7 = 1) then
ntotal = nTotal+1;
if (nmes8 = 1) then
ntotal = nTotal+1;
if (nmes9 = 1) then
ntotal = nTotal+1;
if (nmes10 = 1) then
ntotal = nTotal+1;
if (nmes1 = 11) then
ntotal = nTotal+1;
if (nmes2 = 12) then
ntotal = nTotal+1;

totalvezes := nTotal;
end;


Acho que é isso.

pode precisar de alguma midificação.

Abraços


GOSTEI 0
Laureano Pereira

Laureano Pereira

01/03/2003

Crie um campo calculado para a tabela que voce vai usar, tipo totalvezes,

no evento onCalcFields da tabela:
var
ntotal: integer;
begin
nTotal := 0;
if (nmes1 = 1) then
ntotal = nTotal+1;
if (nmes2 = 1) then
ntotal = nTotal+1;
if (nmes3 = 1) then
ntotal = nTotal+1;
if (nmes4 = 1) then
ntotal = nTotal+1;
if (nmes5 = 1) then
ntotal = nTotal+1;
if (nmes6 = 1) then
ntotal = nTotal+1;
if (nmes7 = 1) then
ntotal = nTotal+1;
if (nmes8 = 1) then
ntotal = nTotal+1;
if (nmes9 = 1) then
ntotal = nTotal+1;
if (nmes10 = 1) then
ntotal = nTotal+1;
if (nmes11 = 1) then
ntotal = nTotal+1;
if (nmes12 = 1) then
ntotal = nTotal+1;

totalvezes := nTotal;
end;


GOSTEI 0
POSTAR