Fórum Mudar campo de lugar #219112
08/03/2004
0
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
Curtir tópico
+ 0Posts
09/03/2004
Lucas Silva
alter table tabela alter position 4 to 1
é + ou - assim...
Gostei + 0
19/03/2004
Rodrigo Lima
Eu utilizo tabelas PARADOX.
Se alguém souber...
Valeu!
Gostei + 0
19/03/2004
Marco Salles
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
20/03/2004
Aroldo Zanela
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
21/03/2004
Marco Salles
Acho Que Não Aroldo , Porque Ele Quer Em Tempo De Execução...
Gostei + 0
21/03/2004
Aroldo Zanela
Gostei + 0
22/03/2004
Rodrigo Lima
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
24/03/2004
Marco Salles
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
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
24/03/2004
Marco Salles
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
Clique aqui para fazer login e interagir na Comunidade :)