Fórum problemas com indice #40377

26/11/2003

0

apesar de minha tabela ter indice os campos aparecem embaralhados
o campo e do tipo varchar mas o conteudo e sequencial:

200-2001
200-0002
200-0003

ja tentei criar outro indice mas mesmo assim nada

grato pela atenção


Gandalf

Gandalf

Responder

Posts

26/11/2003

Afarias

Índices não possuem qualquer relação com a ´ordem´ (ou ordenação) dos registros em um banco de dados (relacionais).

Particularmente, em bancos de dados relacionais, a ´ordem´ dos registros não tem qualquer significado -- os registros não tem uma ordem definida ou melhor -->> isto não é importante.

Se vc quer ver sua consulta odernada por algum(s) campo(s), vc deve usar a cláusula ORDER BY em um SELECT, ex::


SELECT * FROM MINHA_TABELA
ORDER BY campo_tal;



T+


Responder

Gostei + 0

26/11/2003

Gandalf

mas pq os outros campos de outras tabela estão em ordem
digo isso qp minhas DBEdit acessam direto a tabela

um componente query resolve esse problema?


Responder

Gostei + 0

26/11/2003

Afarias

|mas pq os outros campos de outras tabela estão em ordem
|digo isso qp minhas DBEdit acessam direto a tabela

apenas não confie em ´ordem´ ... ela não existe em bancos relacionais.

e nunca use componenes Tables (seja qual for) com Interbase (ou FB) -- este componentes não são projetados para bancos relacionais.


|um componente query resolve esse problema?

qualquer componente que permita definir seu SQL (como um TxxQuery), seja com for ele, resolve o ´problema´. Por meio de SQL vc poderá ordenar os registros com o ORDER BY

de qualquer forma, quando a ordenação é útil apenas por motivo de apresentação dos registros, vc *pode optar* por ordenar os registros em memória (usado tabelas de memória como o ClientDataSet por ex) -- neste caso não depende do banco de dados (ou SQL).


T+


Responder

Gostei + 0

27/11/2003

Gandalf

bom eu coloquei um ibquery com o codigo a seguir:
select * from PECA
order by CODIGO
mesmo assim os campos aparecem embaralhados
onde estou errando?


Responder

Gostei + 0

27/11/2003

Afarias

pode me dar um exemplo real dos dados ´embaralhados´??


T+


Responder

Gostei + 0

27/11/2003

Gandalf

o campo e varchar(8)
olhe os primeiros registros:

200-0006
200-0022
200-0023
200-0024
200-0001
200-0002
200-0003


Responder

Gostei + 0

27/11/2003

Afarias

cara, isto não está correto. fiz questão de até fazer um teste aqui e esse suposto erro *não* ocorre! (nunca vi o IB ordenar nada incorretamente mesmo em campos com acentos, etc...) -- vamos a umas questões::

vc está realmente executando o select com order by (neste campo)???

já testou isso (este SQL) no IBConsole??

qual o CHAR-SET e COLLATE do campo?? (se bem q neste caso acho q não existe collate com esta estranha ordenação!)



T+


Responder

Gostei + 0

27/11/2003

Gandalf

no iboconsole o script sql funcionou
fiz igual fiz no ibquery e ele ordenou


Responder

Gostei + 0

27/11/2003

Afarias

Ok, então o problema deve estar no seu programa...

...vc tem certeza que não está mudando o código SQL da query antes de sua execução (e assim, não colocando o ORDER BY) ??


T+


Responder

Gostei + 0

27/11/2003

Gandalf

não
como faço para executar o codigo sql
coloquei query.execsqlno showmodal e deu mensagen de erro


Responder

Gostei + 0

27/11/2003

Stci

Procura colocar query.Open

Pois ExecSql não é para executar Instruçoes SELECT e sim ( Update, Insert e Delete ).


Responder

Gostei + 0

27/11/2003

Gandalf

mesmo assim ainda não funcionou


Responder

Gostei + 0

27/11/2003

Afarias

quais os componentes q está usando?? IBX?? está atualizado??


T+


Responder

Gostei + 0

28/11/2003

Gandalf

agora funcionou
fiz um indice novo e alterei no dataset do datasource o indexname e indiquei o index que fiz, agora esta ordenando


Responder

Gostei + 0

28/11/2003

Afarias

|fiz um indice novo e alterei no dataset do datasource o indexname e
|indiquei o index que fiz, agora esta ordenando

Cara... como disse antes INDICES NÃO TEM NADA Q VER COM ORDENAÇÃO - vc NÃO DISSE que componente está usando, mas Querys NÃO tem essa propriedade que vc falou (INDEXNAME)

Se vc está usando um ClientDataSet -- a oredenção é em MEMÓRIA E NÃO TEM NADA A VER COM O BANCO!!! Se está usando um TABLE (algo que nunca deveria usar com bancos como o IB ou FB) é ´quase´ a mesma coisa.


T+


Responder

Gostei + 0

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar