Mudar campo de lugar

Delphi

08/03/2004

Pessoal, minha dúvida é o seguinte:

Preciso mudar a posição de um campo de lugar em tempo de execução.

Por exemplo: na tabela de fornecedor, o campo CODIGO está na última posição da tabela, mas eu vou precisar coloca-lo em primeiro lugar para poder faze-lo de índice primário.

Criar uma outra tabela e passar os dados para a nova é um processo muito demorado.

Como eu faço isso?

Valeu!


Rodrigo Lima

Rodrigo Lima

Curtidas 0

Respostas

Lucas Silva

Lucas Silva

08/03/2004

Não sei direito mais tente usar o comando position
alter table tabela alter position 4 to 1

é + ou - assim...


GOSTEI 0
Rodrigo Lima

Rodrigo Lima

08/03/2004

Obrigado pela ajuda amigo, mas não funcionou.

Eu utilizo tabelas PARADOX.

Se alguém souber...

Valeu!


GOSTEI 0
Marco Salles

Marco Salles

08/03/2004

Tente o Código Abaixo, Usando a Idéia Da Coluna Auxiliar...Não Esqueça De Selecionar Na PropiedadeColluns a Opção Add All Fields No DbGrid Em Tempo De Projeto
DbGrid1.Columns.Add; // Cria a Coluna Auxiliar
DbGrid1.Columns[5]:=DbGrid1.Columns[0]; //Guarda Temporaria
DbGrid1.Columns[0]:=DbGrid1.Columns[4]; //Transfere o Valor
DbGrid1.Columns[4]:=DbGrid1.Columns[5]; //Tarnsfere o Valor
DbGrid1.Columns[5].Destroy; //Destroi a Coluna Criada


Neste Exemplo Meu Grid Tinha Cinco Colunas [0] a [4]... Eu Inseri Uma Nova Coluna => [5] , E Depois Eu Troque a Posição [0] Com a Coluna[4] e Destroir a Coluna[5] Que Eu Criei


GOSTEI 0
Aroldo Zanela

Aroldo Zanela

08/03/2004

Colega,

Nunca usei Paradox, mas acho que por meio do Database Desktop você pode clicar e levar o campo até a primeira posição. È isto mesmo que deseja?


GOSTEI 0
Marco Salles

Marco Salles

08/03/2004

Nunca usei Paradox, mas acho que por meio do Database Desktop você pode clicar e levar o campo até a primeira posição.


Acho Que Não Aroldo , Porque Ele Quer Em Tempo De Execução...

Pessoal, minha dúvida é o seguinte: Preciso mudar a posição de um campo de lugar em tempo de execução.



GOSTEI 0
Aroldo Zanela

Aroldo Zanela

08/03/2004

Oops! Tem razão.


GOSTEI 0
Rodrigo Lima

Rodrigo Lima

08/03/2004

Pessoal, valeu mesmo a atenção de vocês.

Vou tentar explicar com mais detalhes o problema.

Para Lembrar: Eu estou usando tabelas Paradox.

No meu cliente, exite a tabela de clientes (T_CLI.DB). O índice primário era simplesmente o campo CODIGO.

Só que ele abriu mais uma loja, e para diferenciar os clientes, tenho que criar um novo campo chamado LOJA para ficar junto com código para que eu possa fazer o novo índice primário.

Até aí, tudo bem, porque com um simples comando SQL, dá pra criar beleza.

Só que quando eu crio o novo campo, esse campo é criado como último, e é aí que vocês entram, a galera fera do CLUBE DELPHI.

Para evitar de eu ir até o cliente, gostaria de fazer isso via programação e não ira até lá e criar o novo campo na mão (DATABASE DESKTOP), e arratá-lo para a primeira posição na tabela.

Como faço pra levar o campo LOJA, que foi criado como último, para a primeira posição na TABELA (T_CLI.DB)?

Não consegui achar nenhuma documentação sobre como fazer isso. Seria uma mão-na-roda pra mim.

Se alguém puder ajudar, desde já agradeço

Rodrigo Lima


GOSTEI 0
Marco Salles

Marco Salles

08/03/2004

A Primeira Sugestão Que Eu Dei Era Necessário o Preenchimento da Propiedade Colums Em Tempo De Projeto...
...Não Esqueça De Selecionar Na PropiedadeColluns a Opção Add All Fields No DbGrid

Não Sei Porque Não Deu....A Outra Opção Requer o Inverso. Isto é a Propiedade Coluns Deve Estar Em Branco a Nível De Projeto
...Não Esqueça De Deixar a Propiedade Colluns ´ZERADA´

Coloque Em Um Evento o Código:
DbGrid1.Columns.add;
DbGrid1.Columns[0].Field:=T_CLI.FieldByName(´LOJA ´);
DbGrid1.Columns.add;
DbGrid1.Columns[1].Field:=T_CLI.FieldByName(´CLIENTE´);
DbGrid1.Columns.add;
DbGrid1.Columns[1].Field:=T_CLI.FieldByName(´OUTROCAMPO´);
Etc...

Faça Isto Para Os Demais Campos Que Voce
Quer Na Ordem Que Voce Quer....Espero Ter Contribuido...


GOSTEI 0
Marco Salles

Marco Salles

08/03/2004

Pequena Correção.. Onse Se Lê
DbGrid1.Columns[1].Field:=T_CLI.FieldByName(´OUTROCAMPO´);
Etc...
O Certo é
DbGrid1.Columns[2].Field:=T_CLI.FieldByName(´OUTROCAMPO´);
Etc...
E O Código Corrigido:
DbGrid1.Columns.add; 
DbGrid1.Columns[0].Field:=T_CLI.FieldByName(´LOJA ´); 
DbGrid1.Columns.add; 
DbGrid1.Columns[1].Field:=T_CLI.FieldByName(´CLIENTE´); 
DbGrid1.Columns.add; 
DbGrid1.Columns[2].Field:=T_CLI.FieldByName(´OUTROCAMPO´); 
Etc.....


P:S Este Código Deve Rodar Após o Novo Campo(LOJA) Ser Criado,é
Obvio

Ob) Mesmo Assim Quando Voce Tiver Um Tempo De Ir Pessoalmente , Deve Desfazer Este Código e e arratá-lo para a primeira posição na tabela.


GOSTEI 0
POSTAR