porcentagem

Delphi

20/04/2005

Olá pessoal, preciso da ajuda de vcs!!
O meu sistema é Uma Pesquisa de Satisfação, onde são entrevistadas as pessoas por Fábrica onde tenho 16 questões e são gravadas as opiniões nos campos Bom, Regular, Ruim e Nulo. Preciso fazer a porcentagem de cada uma das opções: Bom, Regular, Ruim e Nulo, observando qual a fábrica e qual o nº da questão...
Queria saber a maneira mais fácil de fazer isso, posso fazer usando SQL?, se minha tabela é do paradox???
Obriagada.


Daia

Daia

Curtidas 0

Respostas

Fred

Fred

20/04/2005

coloca a estrutura da tabela ae!!


GOSTEI 0
Rjun

Rjun

20/04/2005

Daia

Embora Paradox não seja algo que tenha muito conhecimento, como você esta usando TTable acho que nõa ha como usar SQL.


GOSTEI 0
Rjun

Rjun

20/04/2005

Daia

Esqueça a asneira que acabei de postar. Você pode usar SQL sim. Coloque a estrutura da tabela que fica mais facil pra ajudar.


GOSTEI 0
Daia

Daia

20/04/2005

Daia Esqueça a asneira que acabei de postar. Você pode usar SQL sim. Coloque a estrutura da tabela que fica mais facil pra ajudar.


dbPesquisa NumPergunta Fábrica Bom Regular Ruim
17FILIAL1000
26FILIAL1000
35_2FILIAL1000
45_1FILIAL1000
55FILIAL1000
64_2FILIAL1000
74_1FILIAL1000
84FILIAL1000
93_2FILIAL1000
103_1FILIAL1000
113FILIAL1000
122_3FILIAL1000
132_2FILIAL1000
142_1FILIAL1000
152FILIAL1000
161FILIAL1000
177MATRIZ000
186MATRIZ000
195_2MATRIZ000
205_1MATRIZ000
215MATRIZ000
224_2MATRIZ000
234_1MATRIZ000
244MATRIZ000
253_2MATRIZ000
263_1MATRIZ000
273MATRIZ000
282_3MATRIZ000
292_2MATRIZ000
302_1MATRIZ000
312MATRIZ000
321MATRIZ000
Este são os dados que tenho gravados na minha tabela...
é isso que tu precisa???


GOSTEI 0
Daia

Daia

20/04/2005

Fiz um SQL assim:
SELECT * FROM DBPESQUISA WHERE FABRICA=´MATRIZ´ AND NUMPERGUNTA=´1´
mas aí preciso fazer o label receber este resultado, não consegui...


GOSTEI 0
Rjun

Rjun

20/04/2005

Tire uma duvidas.

1) Os campos BOM/REGULAR/RUIM serão totalizados a cada resposta ?

2) Existem valores 2_3, 3_2. São números de perguntas ?

3) Você quer uma porcentagem de respostas for filial ? Ex:
Filial 1/ Pergunta 1 => Bom= 30; Ruim = 20; Regular = 15;

resultado
Bom = 46,15¬
Ruim = 30,76¬
Regular = 23,09¬

É isso ?


GOSTEI 0
Daia

Daia

20/04/2005

Tire uma duvidas. 1) Os campos BOM/REGULAR/RUIM serão totalizados a cada resposta ? Sim, a cada formulário preenchido é confirmada a gravação... 2) Existem valores 2_3, 3_2. São números de perguntas ? Sim 3) Você quer uma porcentagem de respostas for filial ? Ex: Filial 1/ Pergunta 1 => Bom= 30; Ruim = 20; Regular = 15; Isso mesmo... resultado Bom = 46,15¬ Ruim = 30,76¬ Regular = 23,09¬ ou seja: Matriz - Pergunta 1 - Bom = 46,15¬ Filial1 - Pergunta 1 - Bom = 50,00¬ . . . É isso ?

Sim


GOSTEI 0
Rjun

Rjun

20/04/2005

Daia

Em vez de usar SQL, crie mais tres campos na tabela para guardar a porcentagem de cada resposta. No evento BeforePost faça os calculos para guardar a porcentagem.

PRegular = Regular / (Regular+Bom+Ruim) * 100;
PRuim = Ruim / (Regular+Bom+Ruim) * 100;
PBom = Bom / (Regular+Bom+Ruim) * 100;


GOSTEI 0
Daia

Daia

20/04/2005

ok, vou tentar, mas se eu precisar de ajuda vou te procurar...
Só não entendi porque (Regular+Bom+Ruim) somas estes valores??


GOSTEI 0
Rjun

Rjun

20/04/2005

Só não entendi porque (Regular+Bom+Ruim) somas estes valores??


Como você faria o cálculo das porcentagens ?


GOSTEI 0
Daia

Daia

20/04/2005

por exemplo quem opinou para Regular: Regular * 100 /100
Sei lá, eu imaginava isso...


GOSTEI 0
Daia

Daia

20/04/2005

por exemplo quem opinou para Regular: Regular * 100 /100 desculpa, vou corrigir regular / 100 * 100 Sei lá, eu imaginava isso...



GOSTEI 0
Rjun

Rjun

20/04/2005

Pela sua 1ª. fórmula, vamos supor que tenhamos 134 respostas como regular :

Regular * 100 /100


134 * 100 / 100 = 134¬

Pela sua 2ª fórmula :

regular / 100 * 100


134 / 100 * 100 = 134¬.

Para achar a porcentagem voce deve dividir o total de respostas que voce quer (regular) pelo total geral de respostas dadas (regular+bom+ruim) e multiplicar por 100.


GOSTEI 0
Daia

Daia

20/04/2005

ok... entendi...
Coloquei no BeforePost o seguinte código, mas não dá certo...
Mas se eu fizer como tu falou ele vai pegar todos os Regular, ruim e bom, pois não estou especificando fabrica na hora de gravar, preciso fazer esta porcentagem por fábrica e NumPergunta...

Pesquisa.FieldByName(´PBom´).AsString := (Pesquisa.FieldByName(´Bom´).AsString / (Pesquisa.FieldByName(´Regular´).AsString + Pesquisa.FieldByName(´Ruim´).AsString + Pesquisa.FieldByName(´Bom´).AsString) * ´100´


GOSTEI 0
Daia

Daia

20/04/2005

mudei para:
Pesquisa.FieldByName(´PBom´).Value := (Pesquisa.FieldByName(´Bom´).Value / (Pesquisa.FieldByName(´Regular´).Value + Pesquisa.FieldByName(´Ruim´).Value + Pesquisa.FieldByName(´Bom´).Value)) * 100;

mas dá um erro de Invalid Floating Operator


GOSTEI 0
Rjun

Rjun

20/04/2005

Ele vai fazer o calculo para o registro que voce esta gravando.

Voce esta tentando somar string ?

Pesquisa.FieldByName(´PBom´).AsString := (Pesquisa.FieldByName(´Bom´).AsString / (Pesquisa.FieldByName(´Regular´).AsString + Pesquisa.FieldByName(´Ruim´).AsString + Pesquisa.FieldByName(´Bom´).AsString) * ´100´


Voce deveria fazer isso :

var
  Porc: Double;
begin
  Porc := (Pesquisa.FieldByName(´Bom´).AsInteger / (Pesquisa.FieldByName(´Regular´).AsInteger + Pesquisa.FieldByName(´Bom´).AsInteger + Pesquisa.FieldByName(´Ruim´).AsInteger) * 100;

  Pesquisa.FieldByName(´PBom´).AsString := FormatFloat(´#.´, Porc);


Não sei se é um boa você trabalhar com numeros e usar tipo string para salvar esses valores.


GOSTEI 0
Daia

Daia

20/04/2005

Fiz exatamente o que vc disse mas dá erro: Invalid Floating Operator...
O que faço??


GOSTEI 0
Rjun

Rjun

20/04/2005

Em qual das linhas dá o erro ?


GOSTEI 0
Daia

Daia

20/04/2005

essa linha dá erro:

Porc := ((Pesquisa.FieldByName(´Bom´).AsInteger / (Pesquisa.FieldByName(´Regular´).AsInteger + Pesquisa.FieldByName(´Bom´).AsInteger + Pesquisa.FieldByName(´Ruim´).AsInteger)) * 100);


GOSTEI 0
Rjun

Rjun

20/04/2005

Fiz um teste rapido aqui e funcionou :

Porc := Pesquisa.FieldByName(´Bom´).asInteger /
    (Pesquisa.FieldByName(´Bom´).asInteger +
    Pesquisa.FieldByName(´Rium´).asInteger +
    Pesquisa.FieldByName(´Regular´).asInteger) * 100;



GOSTEI 0
Daia

Daia

20/04/2005

Na hora em que vou confirmar continua dando o mesmo erro: Invalid Floating point operator...
Não sei o que fazer??


GOSTEI 0
Edilcimar

Edilcimar

20/04/2005

porc não é interio?


GOSTEI 0
Daia

Daia

20/04/2005

não, porc é double...


GOSTEI 0
Rjun

Rjun

20/04/2005

Coloca o trecho do código do BeforePost.


GOSTEI 0
Daia

Daia

20/04/2005

procedure TFPesquisa.PesquisaBeforePost(DataSet: TDataSet);
var
Porc: Double;
begin
Porc := (Pesquisa.FieldByName(´Bom´).AsInteger) / (Pesquisa.FieldByName(´Regular´).AsInteger + Pesquisa.FieldByName(´Bom´).AsInteger + Pesquisa.FieldByName(´Ruim´).AsInteger) * 100 ;

Pesquisa.FieldByName(´PBom´).AsString := FormatFloat(´#.´, Porc);

end;


GOSTEI 0
Rjun

Rjun

20/04/2005

Bom

Eu copiei seu código e funcionou normalmente. Como você definiu o campo PBOM ?


GOSTEI 0
Daia

Daia

20/04/2005

Como é no paradox defini como I (que é Long Integer)...


GOSTEI 0
Edilcimar

Edilcimar

20/04/2005

tá jogando float em int


GOSTEI 0
Rjun

Rjun

20/04/2005

Você não pode definir o campo que vai receber a porcentagem como Inteiro, pois a porcentagem tem decimal. Ou você segue o padrão que você adotou e defini o campo como string ou então defini como Numérico.


GOSTEI 0
Daia

Daia

20/04/2005

tem outros tipos de definição de campos no paradox: Alpha, Number, Binary.
Mas acho q a minha definição está certa...


GOSTEI 0
Edilcimar

Edilcimar

20/04/2005

coloque number


GOSTEI 0
Rjun

Rjun

20/04/2005

Você não pode definir o campo que vai receber a porcentagem como Inteiro, pois a porcentagem tem decimal. Ou você segue o padrão que você adotou e defini o campo como string ou então defini como Numérico.


Onde você viu defini era pra ser define.


GOSTEI 0
Daia

Daia

20/04/2005

então defino o PBom como Number e os outros campos como: Bom está definido como integer, posso deixá-lo assim?


GOSTEI 0
Rjun

Rjun

20/04/2005

Sim, pode deixar assim. Esta funcionando agora ?


GOSTEI 0
Daia

Daia

20/04/2005

não está funcionando continua com o memso erro,
defini os campos PBom, PRegular, PRuim e PNulo como Alpha tamanho 10. E deixei o código do Before Post como estava, mas não está funcionando... que merda isso...


GOSTEI 0
Daia

Daia

20/04/2005

quando compilo não dá erro, só na hora do Before Post.


GOSTEI 0
Edilcimar

Edilcimar

20/04/2005

se você tem campos string como é que quer dividí-lo por outro campo string?
coloque os campos como inteiro e o campo resposta como number


GOSTEI 0
Daia

Daia

20/04/2005

mas os campos estão como inteiros...
Porc := (Pesquisa.FieldByName(´Bom´).AsInteger) / (Pesquisa.FieldByName(´Regular´).AsInteger + Pesquisa.FieldByName(´Bom´).AsInteger + Pesquisa.FieldByName(´Ruim´).AsInteger) * 100 ;

este acima é o código... Os campos Bom, Regular, Ruim estão definidos como integer...


GOSTEI 0
Rjun

Rjun

20/04/2005

Como esta a definição dos campos BOM/RUIM/REGULAR ?


GOSTEI 0
Edilcimar

Edilcimar

20/04/2005

você escreveu logo acima
defini os campos PBom, PRegular, PRuim e PNulo como Alpha tamanho 10.

portanto aqui eles estão string


GOSTEI 0
Daia

Daia

20/04/2005

estão como I (Long Integer)...


GOSTEI 0
Rjun

Rjun

20/04/2005

Você tem certeza que o erro está dando no calculo da variavel Porc ? Ou esta dando quando você joga Porc no campo PBOM ?


GOSTEI 0
Daia

Daia

20/04/2005

Fiz a compilação do programa passo a passo com F8, quando cheguei naquela linha do beforePost, coloquei o mouse sobre o código e aí ele passa o valor 2 / 0 *100 será que o problema não está com o zero???


GOSTEI 0
Rjun

Rjun

20/04/2005

Se quiser mandar msg por email, meu endereço é rogerio.jun@uol.com.br


GOSTEI 0
Rjun

Rjun

20/04/2005

Sem dúvida o problema é esse. Mas ele só devia entrar no BeforePost quando você adicionasse valor para uma das respostas. Algo não esta correto na sua rotina de inclusão de registro.


GOSTEI 0
Edilcimar

Edilcimar

20/04/2005

sim vc está tentando dividir por zero


GOSTEI 0
Rjun

Rjun

20/04/2005

Para evitar isso coloque um If antes da fazer o cálculo :

Porc := 0;
Total := (Pesquisa.FieldByName(´Regular´).AsInteger + Pesquisa.FieldByName(´Bom´).AsInteger + Pesquisa.FieldByName(´Rium´).AsInteger);
 
if Total <> 0 then
  Porc := Pesquisa.FieldByName(´BOM´).AsInteger / Total * 100;

Pesquisa.FieldByName(´PBom´).AsString := FormatFloat(´#.´, Porc);



GOSTEI 0
Daia

Daia

20/04/2005

você escreveu logo acima [quote:369ad269a5]defini os campos PBom, PRegular, PRuim e PNulo como Alpha tamanho 10.

portanto aqui eles estão string[/quote:369ad269a5]

mudei eles para Number... mas mesmo assim não funciona...


GOSTEI 0
Edilcimar

Edilcimar

20/04/2005

mesmo transformando eles para inteiro você tem que verificar se não está dividindo por ZERO


GOSTEI 0
Daia

Daia

20/04/2005

não ocorreu mais erro, mas ao todo tenho 16 registros e somente 5 registros receberam o valor e ainda todos os 5 ficaram com 100.00...
Não está correto...


GOSTEI 0
Rjun

Rjun

20/04/2005

Coloca uma listagem da tabela pra dar uma olhada. E coloque também qual seria o resultado esperado.


GOSTEI 0
Daia

Daia

20/04/2005

NumPerg Fabrica Bom Regular Ruim Nulo PBom
1 7MATRIZ0004
2 6MATRIZ0004
3 5_2MATRIZ0004
4 5_1MATRIZ0004
5 5MATRIZ0004
6 4_2MATRIZ0004
7 4_1MATRIZ0004
8 4MATRIZ0004
9 3_2MATRIZ0004
10 3_1MATRIZ0004
11 3MATRIZ0004
12 2_3MATRIZ1005100.00
13 2_2MATRIZ1005100.00
14 2_1MATRIZ1005100.00
15 2MATRIZ1005100.00
16 1MATRIZ2004100.00


GOSTEI 0
Rjun

Rjun

20/04/2005

Se isso não estiver certo então não entendi o que você queria. Você não queria calcular as porcentagens de cada pergunta para cada filial. Entao, se você teve uma resposta para a pergunta 2_3 da MATRIZ e ela foi ´BOM´ então PBOM tem que ser 100¬. Não é ?


GOSTEI 0
Edilcimar

Edilcimar

20/04/2005

pegue o 1
0+0+0 = 0 e 0/0 = infinito e lá está 4
está faltando else total <> 0 o pbom = 0

pegue o 12
1+0+0 = 1 e 1/1 * 100 = 100 este está certo


GOSTEI 0
Daia

Daia

20/04/2005

ok... estou viajando, vou terminar o resto calculando o Regular e o ruim Tb para ver se está certo!!!


GOSTEI 0
Daia

Daia

20/04/2005

posso usar as mesmas vaíáveis Total e Porc para calcular o Regular e o Ruim???

Porc := 0;
Total := (Pesquisa.FieldByName(´Regular´).AsInteger + Pesquisa.FieldByName(´Bom´).AsInteger + Pesquisa.FieldByName(´Ruim´).AsInteger);
if Total <> 0 then
Porc := Pesquisa.FieldByName(´Bom´).AsInteger / Total * 100;

Pesquisa.FieldByName(´PBom´).AsString := FormatFloat(´#.´, Porc);


GOSTEI 0
Rjun

Rjun

20/04/2005

Daia

Se os nulos forem válidos para o calculo da porcentagem, você deve soma-los ao total na hora do calculo, quando vc soma o bom+regular+ruim.


GOSTEI 0
Edilcimar

Edilcimar

20/04/2005

explique exatamente o que quer calcular e como e deixe que eu crio o código para você


GOSTEI 0
Rjun

Rjun

20/04/2005

Você pode usar as mesmas variaveis sim. Acho que não preciso dizer que precisa fazer isso depois que você atribuir para PBOM/PREGULAR/PRUIM.


GOSTEI 0
Daia

Daia

20/04/2005

Está certo esse código a seguir??

procedure TFPesquisa.PesquisaBeforePost(DataSet: TDataSet);
var
Porc: Double;
Total: double;
begin
Porc := 0;
Total := (Pesquisa.FieldByName(´Regular´).AsInteger + Pesquisa.FieldByName(´Bom´).AsInteger + Pesquisa.FieldByName(´Ruim´).AsInteger);
if Total <> 0 then
Porc := Pesquisa.FieldByName(´Bom´).AsInteger / Total * 100;
Pesquisa.FieldByName(´PBom´).AsString := FormatFloat(´#.´, Porc);

Porc := Pesquisa.FieldByName(´Regular´).AsInteger / Total * 100;
Pesquisa.FieldByName(´PRegular´).AsString := FormatFloat(´.´, Porc);

Porc := Pesquisa.FieldByName(´Ruim´).AsInteger / Total * 100;
Pesquisa.FieldByName(´PRuim´).AsString := FormatFloat(´.´, Porc);

Porc := Pesquisa.FieldByName(´Nulo´).AsInteger / Total * 100;
Pesquisa.FieldByName(´PNulo´).AsString := FormatFloat(´.´, Porc);

end;


GOSTEI 0
Rjun

Rjun

20/04/2005

Corrija essa parte, ja que o nulo faz parte do calculo :

Total := (Pesquisa.FieldByName(´Regular´).AsInteger + Pesquisa.FieldByName(´Bom´).AsInteger + Pesquisa.FieldByName(´Ruim´).AsInteger + Pesquisa.FieldByName(´Nulo´).AsInteger); 



GOSTEI 0
Edilcimar

Edilcimar

20/04/2005

continua faltando o else total <> 0
o campo deverá ter um valor = zero


GOSTEI 0
Rjun

Rjun

20/04/2005

Outra coisa :

Coloque o trecho apos then dentro de um begin...end

[code]
begin
Porc := Pesquisa.FieldByName(´Bom´).AsInteger / Total * 100;
Pesquisa.FieldByName(´PBom´).AsString := FormatFloat(´#.´, Porc);

Porc := Pesquisa.FieldByName(´Regular´).AsInteger / Total * 100;
Pesquisa.FieldByName(´PRegular´).AsString := FormatFloat(´.´, Porc);

Porc := Pesquisa.FieldByName(´Ruim´).AsInteger / Total * 100;
Pesquisa.FieldByName(´PRuim´).AsString := FormatFloat(´.´, Porc);

Porc := Pesquisa.FieldByName(´Nulo´).AsInteger / Total * 100;
Pesquisa.FieldByName(´PNulo´).AsString := FormatFloat(´.´, Porc);

end;


GOSTEI 0
Edilcimar

Edilcimar

20/04/2005

está errado o certo é

Porc := 0;
Total := (Pesquisa.FieldByName(´Regular´).AsInteger + Pesquisa.FieldByName(´Bom´).AsInteger + Pesquisa.FieldByName(´Ruim´).AsInteger);
if Total <> 0 then
BEGIN
Porc := Pesquisa.FieldByName(´Bom´).AsInteger / Total * 100;
Pesquisa.FieldByName(´PBom´).AsString := FormatFloat(´#.´, Porc);

Porc := Pesquisa.FieldByName(´Regular´).AsInteger / Total * 100;
Pesquisa.FieldByName(´PRegular´).AsString := FormatFloat(´.´, Porc);

Porc := Pesquisa.FieldByName(´Ruim´).AsInteger / Total * 100;
Pesquisa.FieldByName(´PRuim´).AsString := FormatFloat(´.´, Porc);

Porc := Pesquisa.FieldByName(´Nulo´).AsInteger / Total * 100;
Pesquisa.FieldByName(´PNulo´).AsString := FormatFloat(´.´, Porc);
end
ELSE
BEGIN
todos os campos = 0
END
end;


GOSTEI 0
Rjun

Rjun

20/04/2005

O evento BeforePost só será chamado quando uma das opções tiver sido clicadas, portanto sempre uma das respostas terá valor. Então não é necessário zerar as porcentagens. Se eu soubesse que o campo nulo também entraria no cáculo, isso ja teria sido resolvido há muito tempo.

Desse modo, o teste If Teste <> 0 se faz desnecessário. Mas, se você se sentir com mais segurança fazendo o teste, deixe-o assim mesmo.


GOSTEI 0
Daia

Daia

20/04/2005

Deixei assim:
Só achei que toda vez tivesse que zerar o Porc igual ao que eu fiz abaixo:
procedure TFPesquisa.PesquisaBeforePost(DataSet: TDataSet);
var
Porc: Double;
Total: double;
begin
Porc := 0;
Total := (Pesquisa.FieldByName(´Regular´).AsInteger + Pesquisa.FieldByName(´Bom´).AsInteger + Pesquisa.FieldByName(´Ruim´).AsInteger + Pesquisa.FieldByName(´Nulo´).AsInteger);
if Total <> 0 then begin
Porc := 0;
Porc := Pesquisa.FieldByName(´Bom´).AsInteger / Total * 100;
Pesquisa.FieldByName(´PBom´).AsString := FormatFloat(´#.´, Porc);

Porc := 0;
Porc := Pesquisa.FieldByName(´Regular´).AsInteger / Total * 100;
Pesquisa.FieldByName(´PRegular´).AsString := FormatFloat(´.´, Porc);

Porc := 0;
Porc := Pesquisa.FieldByName(´Ruim´).AsInteger / Total * 100;
Pesquisa.FieldByName(´PRuim´).AsString := FormatFloat(´.´, Porc);

Porc := 0;
Porc := Pesquisa.FieldByName(´Nulo´).AsInteger / Total * 100;
Pesquisa.FieldByName(´PNulo´).AsString := FormatFloat(´#.´, Porc);
end;
end;


GOSTEI 0
Rjun

Rjun

20/04/2005

Não precisa zerar a variável ´PORC´. Pode tirar essas referências.


GOSTEI 0
Daia

Daia

20/04/2005

mais uma dúvida: agora preciso fazer um label receber o campo PBom, quando o nº da pergunta for = 1 a fábrica for = MATRIZ e o campo for bom...?? Tô perdida...


GOSTEI 0
Rjun

Rjun

20/04/2005

Usa o locate, do mesmo modo que você usou da outra vez, usando ArrayOf. Com isso, você posiciona na pergunta e matriz que você quer.

Agora, por que o campo tem quer ser BOM ? Como e em que momento você pretende mostrar o label ?


GOSTEI 0
Daia

Daia

20/04/2005

Tentei usar o locate mas não deu certo.
Vou ter um botão ´Resultado´, quando eu clicar nele ele vai me abrir um panel com os resultados da pesquisa por exemplo:

MATRIZ
20¬ ACHAM BOM
50¬ ACHAM REGULAR
20¬ ACHAM RUIM
10¬ NULO

FILIAL 1
60¬ ACHAM BOM
10¬ ACHAM REGULAR
20¬ ACHAM RUIM
10¬ NULO
.
.
.
OS VALORES DE PORCENTAGEM DEVEM SER OS VALORES DA TABELA: PBOM,PREGULAR,PRUIM,PNULO....
ACHO QUE NADA A VER ISSO QUE COLOQUEI: NÃO PRECISO SABER QUANDO O CAMPO É BOM OU REGULAR...


GOSTEI 0
Rjun

Rjun

20/04/2005

Como que você pos o Locate ?


GOSTEI 0
Daia

Daia

20/04/2005

Assim:

procedure TFPesquisa.BitBtn1Click(Sender: TObject);
begin
if not Pesquisa.Locate(´NumPergunta;Fabrica´, VarArrayOf([´1´, ´MATRIZ´]) ,[]) = false then
lbBom.Caption := Pesquisa.fieldByName(´PBom´).AsString ;
end;


GOSTEI 0
Rjun

Rjun

20/04/2005

Você deve programar a pouco tempo. :D

Tire o not da frente do locate. Agora você quer achar um registro. O locate acha e retorna True, com o not na frente, fica Not True e ele não entra no if.


GOSTEI 0
Daia

Daia

20/04/2005

sou meio burrinha!! :(

Tirando o not ele não me trouxe o resultado... deixando o not ele me mostra o resultado.

Acho que a minha instrução está correta, pois estou usando =false, então se não for vazio, ele mostra o resultado. Não está correto assim??


GOSTEI 0
Daia

Daia

20/04/2005

Você deve programar a pouco tempo. :D Tire o not da frente do locate. Agora você quer achar um registro. O locate acha e retorna True, com o not na frente, fica Not True e ele não entra no if.


o que eu deveria fazer é tirar o not da frente do locate e no lugar do ´= false´ colocar ´=true´ aí tb funcionaria ou deixar sem igual a nada e tirar o not, isso tb funcionaria...


GOSTEI 0
Rjun

Rjun

20/04/2005

Mil perdões...não tinha visto o false... :oops:

Quando você usa um função que retorna um booleano, não precisa comparar com true ou false.

Do jeito que você fez esta correto, embora pouco usual.

Mas, esta funcionando ?


GOSTEI 0
Daia

Daia

20/04/2005

ok, não tem problema...
tirei o ´= false´...
Por enquanto está funcionando!! :D
Com muito sacrifício, mas tá!!
Vc está sempre no fórum... é claro que não vou fikr te enchendo o saco, mas a tua ajuda foi muito boa, vc deve programar a muito tempo!
Muito Obrigada... Obrigada mesmo!!


GOSTEI 0
Rjun

Rjun

20/04/2005

To sempre por aqui. Se quiser mandar email pra tirar duvidas fica a vontade tb...

rogerio.jun@uol.com.br

No mais, disponha...


GOSTEI 0
POSTAR