problemas com indice

Firebird

26/11/2003

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

Curtidas 0

Respostas

Afarias

Afarias

26/11/2003

Í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+


GOSTEI 0
Gandalf

Gandalf

26/11/2003

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?


GOSTEI 0
Afarias

Afarias

26/11/2003

|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+


GOSTEI 0
Gandalf

Gandalf

26/11/2003

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?


GOSTEI 0
Afarias

Afarias

26/11/2003

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


T+


GOSTEI 0
Gandalf

Gandalf

26/11/2003

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

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


GOSTEI 0
Afarias

Afarias

26/11/2003

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+


GOSTEI 0
Gandalf

Gandalf

26/11/2003

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


GOSTEI 0
Afarias

Afarias

26/11/2003

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+


GOSTEI 0
Gandalf

Gandalf

26/11/2003

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


GOSTEI 0
Stci

Stci

26/11/2003

Procura colocar query.Open

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


GOSTEI 0
Gandalf

Gandalf

26/11/2003

mesmo assim ainda não funcionou


GOSTEI 0
Afarias

Afarias

26/11/2003

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


T+


GOSTEI 0
Gandalf

Gandalf

26/11/2003

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


GOSTEI 0
Afarias

Afarias

26/11/2003

|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+


GOSTEI 0
Gandalf

Gandalf

26/11/2003

estou usando um datasource e la tem essa propriedade

Banco de Dados Cliente/Servidor com Delphi 6
Editora Erica Autor: Carlos A J Oliveiro
pag 94:

´outra ultilidade dos índices é a possibilidade de exibir as informações de uma tabela em ordem alfabética crescente ou decrescente em relaão ao campo indexado´


GOSTEI 0
Afarias

Afarias

26/11/2003

|estou usando um datasource e la tem essa propriedade

DataSource??? DataSources não contém dados, servem apenas para ´ligar´ um DataSet a um controle (DataControl).


|´outra ultilidade dos índices é a possibilidade de exibir as informações de
|uma tabela em ordem alfabética crescente ou decrescente em relação |ao campo indexado´

Provavelmente o AUTOR não estava falando de bancos de dados relacionais (SGBD-R) -- se estava então vc deveria ´encostar´ este livro e comprar um melhorzinho.

Se vc vai trabalhar com IB ou FB sugiro q leia materiais sobre bancos de dados relacionais Ok?!



T+


GOSTEI 0
Gandalf

Gandalf

26/11/2003

Sinopse

Este livro, parte integrante da série ´Faça um Aplicativo´, é destinado àqueles que estão interessados em aprender a trabalhar com o banco de dados relacional Cliente/Servidor - Interbase 6/Firebird. Os assuntos são abordados em pequenas etapas progressivas, de fácil assimilação, por meio de dezenas de atividades práticas. Sua metodologia baseia-se na orientação por projeto, ou seja, ao terminar o livro, o leitor terá criado um projeto completo de um aplicativo para o gerenciamento de uma mala direta.
O livro abrange um conteúdo básico de aprendizagem, abordando temas como: conceitos básicos de um banco de dados, trabalhar com o IBConsole, fundamentos da linguagem SQL, instruções DDL, DML e DQL, criação de menus e barra de ferramentas, incluir, alterar e excluir dados em tempo de execução, gerar relatórios e etiquetas, e muito mais.

BOM, agora vc desculte com ele quem ta certo eu errado
pra mim, sendo isso certo ou errado esta por enquanto funcional, quando aparecer problemas (se aparecer) eu procuro outra solução.


GOSTEI 0
Afarias

Afarias

26/11/2003

Não vou discutir nada... tudo depende do nível da abordágem da publicação (a que e quem se destina) -- algumas simplesmente descartam os conceitos mais ´elaborados´ do q está tratando (feito a física ou a matemática q se aprende no 2º grau)

Só commplementando, eu não levaria (e não levo) muito a sério qualquer publicação que use componentes ´Table´ para construção aplicações C/S.


Well... I QUIT!



T+


GOSTEI 0
POSTAR