Somar Registros

01/03/2003

0

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

Responder

Posts

01/03/2003

Carnette

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


Responder

04/03/2003

Anonymous

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.


Responder

04/03/2003

Laureano Pereira

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


Responder

04/03/2003

Anonymous

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:


Responder

04/03/2003

Adilsond

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


Responder

05/03/2003

Laureano Pereira

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


Responder

05/03/2003

Laureano Pereira

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;


Responder

Assista grátis a nossa aula inaugural

Assitir aula

Saiba por que programar é uma questão de
sobrevivência e como aprender sem riscos

Assistir agora

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar