SQL e JAVA

Tudo bem Pessoal?

Galera, estou com 2 problemas:

Tenho uma aplicação em Java que acessa uma tabela em Paradox(uso aquele programa do Delphi), mas o problema é o seguinte: exemplo: gravei 10 funcionários na tabela, então é gravado 1 , 2 , 4 ,3, 5…, ou seja , tem momento que é gravado os campos do código fora de ordem e minha aplicação precisa que se mantenha a ordem. Tem algo que possa fazer pra manter gravando sempre na ordem?

Outro problema é quando excluo algum código da tabela, o código sai e fica um espaço.Ex: excluo o código 3, entaum vai ficar 1,2,4,5…
Gostaria de saber se tem como eu atualizar de modo que o código 4 passe a ser o 3, o código 5 passe a ser o 4 etc?

Pessoal se alguém puder me ajudar, pq estou precisando mesmo,

já agradeço a atenção,

Raphael.

o campo na sua tabela está declarado como auto increment ?

:wink:

se eu lembro bem, o paradox trabalha com sql, certo?

então na sua aplicação é só vc organizar os dados no select…

ex:

select * from suaTabela where... order by suaTabelaID;

resumindo, toda vez que efetua o select ele ordena pelo id, aí é só exibir os dados normalmente.

agora, quanto a excluir e atualizar os codigo, naum é considerada uma boa técnica de programação, pois vc estará trocando o valor da chave-primária, mas se vc tiver certeza que quer isso é possível.

por exemplo, vc excluiu seu id 3, agora vc faz um select em todos os dados onde for maior que 3, e ae vc cria um metodo de reorganização.

realmente nunca se altera primary key!

:wink:

Imagine se você tiver mais de 100 registros na tabela daí você exclui o de número 5. Você vai querer transformar os códigos dos registros seguintes em “código - 1” ficaria inviável, quanto tempo o software demoraria para poder reorganizar tudo isso pra você.

Sou a favor de fazer o que nosso amigo citou anteriormente.

É muito mais fácil e mais conveniente.

Para JavaPlayer : Acho que o paradox naum tem isso que vc falou…

Concordo com vocês, vou ter que mudar a maioria das coisas, gostaria da opinião de vocês do que fazer:

1º Todos os campos na minha tabela são caracter, acho que é melhor mudar pros tipos respectivos né(código = inteiro etc)?

2º Na hora de cadastrar eu vou deixar o usuário colocar o código que ele quiser, aí vamos supor que ele cadastre o 2, o 4 e o 6, na hora em que ele clicar no botaum novo vou colocar pra aparecer o 7(seria pra aparecer o 3) no campo do código, mas o 3 e o 5 ficarão vazios, por isso existiu a idéia de organizar(mudar os códigos vazios), sabem o que posso fazer pra que essa nova maneira dê certo ?Porque vai ficar tudo embolado, mas entendendo que é melhor dessa maneira, só não sei como lhe dar com esses problemas.

Preciso fazer uma estrutura de dados organizada e simples, concordo que do jeito que está agora, está organizado, mas complexo.

Por favor me ajudem…

obrigado,

Raphael.

bigwaves,

O paradox suporta select’s sim, desde que estes select’s sejam colocados na programação, porque no banco isso não funciona.

1º - Acho que sim… você pode mudar todos os tipos de campos para os seus respectivos tipos.

2º - Você pode criar uma rotina pra poder percorrer a tabela verificando os códigos existentes na tabela e gerando os códigos seguintes aos não existentes. Tipo:

int i = 1; enquanto (i == procuracodigo(codigo_da_tabela)) i++; return i;

Algo desse tipo, porque daí quando se deletar algum código lá no meio da tabela por exemplo o código 5. Quando for ser inserido mais um novo registro na tabela a rotina vai chegar a um ponto em procurar pelo código 5 na tabela e não vai encontrar, daí então será inserido um novo código 5 na tabela.

Quando você precisar visualizar a tabela organizada você faz um select.

Espero ter Ajudado!

Tudo bem Luidy, entendi a sua ajuda, mas gostaria que me respondesse sobre isso:

Vamos supor: tenho 1000 códigos , se eu deletar o 998 , ele vai ter que procurar do 1 até o 998, isso não demoraria muito?

Ah Luidy, vc tem ICQ ?

Bom eu não cheguei a ter experiência com mais de 450 registros na tabela, mas posso te garantir que pelo menos até 450 não foi lento não, pelo contrário, foi até bem rápido.

tenho ICQ sim 213365904 ou msn luidymorais@hotmail.com