CURVA ABC / CURSOR

XXXANGELSXXX 18/01/2011 21:08:53
#362671
Boa noite senhores, estou com uma pequena duvida aqui em relacao a um processo.. vejam se me ajudam,
Eu tenho 2 tabelas onde 1 é o cadastro de clientes, onde tenho o campo classificacao do cliente..e a outra tabela se chama ClassificacaodeClientes, onde tenho o id, descricao, valor inicial e valor final entao o que preciso fazer..

na tabela classificacao por exemplo.. eu tenho la..
ID DESCRICAO VALOR INICIO VALOR FIM
1 Cliente Classe A 500,00 9999,99
2 Cliente Classe B 400,00 499,99
3 Cliente Classe C 300,00 399,99

E no cadastro de cliente, eu tenho o campo valor contrato, entao vamos supor que meu cliente paga 328,56, consequentemente ele teria que verificar na tabela Classificacao de clientes em qual faixa ele esta e dar o update na tabela clientes no campo classificacao a faixa que ele corresponde.. ou seja o numero 3 ai nesse caso, eu tenho que fazer um cursor para verificar esses campos? alguem tem alguma idéia de como fazer isso? considerando que o valor do contrato varia muito, entao vou ter que classificar esses clientes de uma forma dinamica.
LUIZCOMINO 18/01/2011 23:29:54
#362675
NÃO SERIA MELHOR VOCÊ CRIAR UM IF PARA CLASSIFICAÇÃO?

EX:

DIM CLASSIFICACAO AS STRING


sql=[Ô] Select id,ValorContrato CadastroCliente[Ô]
rs.open sql

Do While not Rs.eof

IF (RS!VALORCONTRATO) >= [Ô]500,00[Ô] AND (VALORCONTRATO) <=[Ô]9999,99[Ô] THEN CLASSIFICACAO=[Ô]Cliente Classe A[Ô]
IF (RS!VALORCONTRATO) >= [Ô]400,00[Ô] AND (VALORCONTRATO) <=[Ô]499,9ot9[Ô] THEN CLASSIFICACAO=[Ô]Cliente Classe C[Ô]
IF (RS!VALORCONTRATO) >= [Ô]300,00[Ô] AND (VALORCONTRATO) <=[Ô]399,99[Ô] THEN CLASSIFICACAO=[Ô]Cliente Classe C[Ô]



sql=[Ô] Update classificacao Set Classificacao=[ô][Ô] & CLASSIFICACAO & [Ô][ô] where id= [Ô] & rs!id & [Ô] [Ô]

rsupdate.open sql

rs.move next
loop


------------------------
espero ter ajudado abraço!


XXXANGELSXXX 19/01/2011 08:11:35
#362685
bom dia.. nao posso criar if, pois o valor da classificação é cadstrado pelo usuario. exemplo.. simulei valores ai.. mas na realidade os valores de escalonamento sao cadastrados pelo usuario.
FEDERHEN 19/01/2011 08:21:47
#362686
Resposta escolhida
DIM SQL AS STRING
DIM RS As ADODB.RECORDSET
SQL = [Ô]SELECT ID,VALORINICIO,VALORFIM FROM CLASSIFICACAODECLIENTES ORDER BY VALORINICIO DESC[Ô]
SET RS = NEW ADODB.RECORDSET
RS.OPEN SQL, CONEXAO, adOpenForwardOnly, adLockReadOnly
DO UNTIL RS.EOF
SQL = [Ô]UPDATE CADASTRO SET CLASSIFICACAO=[ô][Ô] & RS!ID & [Ô] WHERE VALORCONTRATO >= [Ô] & RS!VALORINICIO & [Ô] AND VALORCONTRATO <= [Ô] & RS!VALORFIM
CONEXAO.EXECUTE SQL
RS.MOVENEXT
LOOP
RS.CLOSE
LUIZCOMINO 19/01/2011 08:42:10
#362688
e assim não resolveria o problema?
--------------------------------
dim Classificaao as string

sql=[Ô]Select * From Clientes
open rscliente

Do While Not RsCliente.EoF

sql=[Ô]Select ValorInicio,ValorFim,Classificao From classificacao Order By ID[Ô]
Rs.open

Do While NOT RS.EOF

IF (ValorContrato) >= RS!ValorInicio AND (ValorContrato) <=RS!ValorFim THEN
CLASSIFICACAO=RS!Classificao
Exit Loop
rs.movenext
loop

sql=[Ô] Update classificacao Set Classificacao=[ô][Ô] & CLASSIFICACAO & [Ô][ô] where id= [Ô] & rscliente!id & [Ô] [Ô]

rscliente.movenext
loop
XXXANGELSXXX 20/01/2011 15:09:25
#362867
Era isso mesmo FEDERHEN, estou o seu cursor funcionou certinho.!!!!!
Tópico encerrado , respostas não são mais permitidas