Tenho uma tabela com 20.000 itens. Esta tabela tem um campo chamado posicao que é o coração de todo o programa. Acontece, que alguém testando ou querendo fazer qualquer outra coisa, incluiu algumas posicoes em lugar errado. A tabela deve funcionar assim: O formato do campo posicao é o seguinte: XXXX.XX.XX
Sendo que esta mascara, não necessariamente presisa ser totalmente satisfeita, mas a base XXXX, sempre vem, ou seja, eu posso ter:XXXX.XX.XX, ou XXXX.XX ou XXXX, somente assim. O que está acontecendo: Eu tenho uma posição assim:
8421.90.10. Dentro desta posicao eu posso ter qualquer outra posição, desde que o inicial seja: 8421. Ex.: 8421.10.10, 8421.10, posso ter outra posicao 8421.90.10, mas jamais 8425,90.10 ou 7654.10.10, creio que deram para entender. O erro está dando, pois dentro da posicao 8421.90.10, apareceu tipo 4567.90.10, esta é outra posicao, que está em lugar errado. Estou preciso fazer um programa que leia as posicoes e encontre as que estão diferentes. Não sei por onde começar. Tentei com um copy nas quatro primeira posições, mas dentro do WHILE bagunça tudo. Dei um while na tabela para vim lendo posicao a posicao. Alguem me ajuda, pelo menos a ter uma idéia de como fazer? Por onde começar? Grato a todos!
Varrer Uma Tabela
Iniciado por Paulo, Oct 08 2004 10:47 AM
4 respostas a este tópico
#1
Adicionado 08 October 2004 - 10:47 AM
#2
Adicionado 08 October 2004 - 12:46 PM
Esse campo é do tipo texto? Já tentou fazer com uma Query, tipo:
Quem sabe isso possa ajudá-lo, pelo menos a encontrar posições diferentes e quantas são.
Quote
With Consulta Do
Begin
Close;
SQL.Clear;
SQL.Add('SELECT * FROM Tabela');
SQL.Add('WHERE Posicao LIKE :P1');
SQL.Add('ORDER BY Posicao');
ParamByName('P1').Value:='8421.' + '%'
Open;
End;
If Consulta.RecordCount > 0 Then
Begin
ShowMessage('Existem ' + Consulta.RecordCout + ' posições diferentes');
End;
Begin
Close;
SQL.Clear;
SQL.Add('SELECT * FROM Tabela');
SQL.Add('WHERE Posicao LIKE :P1');
SQL.Add('ORDER BY Posicao');
ParamByName('P1').Value:='8421.' + '%'
Open;
End;
If Consulta.RecordCount > 0 Then
Begin
ShowMessage('Existem ' + Consulta.RecordCout + ' posições diferentes');
End;
Quem sabe isso possa ajudá-lo, pelo menos a encontrar posições diferentes e quantas são.
#3
Adicionado 12 October 2004 - 10:17 PM
Por que vc naum separa esse campo em 3?
Por exemplo.....
Tudas variaveis string...
i:=XXXX
m:=XX
f:=XX
posicao:= i+ ´.´+m+ '.' +f
Assim, vc pode fazer uma busca comparando apenas as veriaveis M e F ....
Caso naum entender o que quis dizer me da um toque ...
falow .....
AlphaBlend
Por exemplo.....
Tudas variaveis string...
i:=XXXX
m:=XX
f:=XX
posicao:= i+ ´.´+m+ '.' +f
Assim, vc pode fazer uma busca comparando apenas as veriaveis M e F ....
Caso naum entender o que quis dizer me da um toque ...
falow .....
AlphaBlend
#4
Adicionado 13 October 2004 - 07:42 AM
Caro Paulo,
O problema é o critério para saber quando a posição está certa ou errada.
Se em um registro é 3030.10.10 e no registro seguinte é 3031.10.11,
como voce vai saber apenas olhando o registro (e eventuais tabelas associadas) que no lugar de 3031 era para ser 3030?
O problema é o critério para saber quando a posição está certa ou errada.
Se em um registro é 3030.10.10 e no registro seguinte é 3031.10.11,
como voce vai saber apenas olhando o registro (e eventuais tabelas associadas) que no lugar de 3031 era para ser 3030?
#5
Adicionado 13 October 2004 - 08:24 AM
Paulo, após eu ter postado, depois de alguns minutos, eu percebi que o meu post, na forma como foi postado, realmente não fazia(ou faz) sentido. Vou testar mais algumas coisas aqui, no intuito de obter a resposta, caso eu não tenha encontrado soluções, tentarei me explicar melhor, pois até agora, não tenho idéia de como passar para o forum exatamente o que eu quero, até porque não posso enviar a tabela, por conter assuntos de uso exclusivo da empresa.
1 usuário(s) esta(ão) lendo este tópico
0 membro(s), 1 visitante(s) e 0 membros anônimo(s)












