Jump to content


- - - - -

Varrer Uma Tabela










4 respostas a este tópico

#1 Paulo

    Membro - Senior 2

  • Membros
  • PipPipPipPipPipPipPipPipPipPip
  • 1633 posts
  • Estado:Rio de Janeiro

Adicionado 08 October 2004 - 10:47 AM

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!

#2 ilanocf

    Membro - Senior 3

  • Membros
  • PipPipPipPipPipPipPipPipPip
  • 1574 posts
  • Sexo:Masculino
  • Estado:Other Countries

Adicionado 08 October 2004 - 12:46 PM

Esse campo é do tipo texto? Já tentou fazer com uma Query, tipo:

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;

Quem sabe isso possa ajudá-lo, pelo menos a encontrar posições diferentes e quantas são.

#3 AlphaBlend

    Membro - Junior 3

  • Membros
  • PipPipPip
  • 138 posts
  • Estado:São Paulo

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

#4 Paulo Gurgel

    Já esvaziou sua xícara hoje?

  • (*)Insigne
  • 10498 posts
  • Você é Humano?:Sim
  • Sexo:Masculino
  • Estado:São Paulo

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?

#5 Paulo

    Membro - Senior 2

  • Membros
  • PipPipPipPipPipPipPipPipPipPip
  • 1633 posts
  • Estado:Rio de Janeiro

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)