Ir para conteúdo
Fórum Script Brasil
  • 0

Delphi 3 + Interbase 4.2 : Ordenaçao Alfabética


thiago.mac

Pergunta

Boa Noite

Tenho uma aplicação aqui que está em Delphi 3 e usa o banco de dados Interbase 4.2.

Esta aplicação permite diversas listagens ordenadas alfabeticamente.

O problema é o seguinte :

As palavras com caracteres acentuados ficam por último nas listagens,

exemplo: Ônibus viria depois de Sala.

Estive pesquisando na web e me sugeriram inserir no código do banco

CHARACTER ISO8859-1

CHARACTER WIN1252

COLLATE PT_PT,

COLLATE PXW_INTL850

O que seriam estes códigos, e onde inseri-los

Obrigado

Link para o comentário
Compartilhar em outros sites

12 respostass a esta questão

Posts Recomendados

  • 0
As palavras com caracteres acentuados ficam por último nas listagens,

exemplo: Ônibus viria depois de Sala.

Estive pesquisando na web e me sugeriram inserir no código do banco

CHARACTER ISO8859-1

CHARACTER WIN1252

COLLATE PT_PT,

COLLATE PXW_INTL850

O que seriam estes códigos, e onde inseri-los

Voce usa estes códigos quando está criando um campo de registro em uma tabela interbase

exemplo:

ALTER TABLE EXAMES
ADD NOME VARCHAR(100) CHARACTER SET WIN1252 
COLLATE WIN1252

abraço

Link para o comentário
Compartilhar em outros sites

  • 0
O Banco de Dados já existe, como poderia alterar a coluna que

preciso agora, depois do banco já em uso ?

Use um componente da paleta Interbase chamado IBSQL

Na propriedade SQL deste componente coloque o código para alterar um campo da sua tabela

exemplo: suponha que voce tem um campo NOME com um varchar( 40) e voce quer muda-lo para varchar(100)

então na propriedade SQL do IBSQL voce coloca o código

ALTER TABLE EXAMES
ADD NOME VARCHAR(100) CHARACTER SET WIN1252 
COLLATE WIN1252
para executa-lo voce pode usar um botão
procedure TForm1.Button1Click(Sender: TObject);
begin
  try
    IBSQL1.Close;
    IBSQL1.Prepare;
    IBSQL1.ExecQuery;
    IBSQL1.Close;
  finally
    MessageDlg('CAMPO NOME DA TABELA EXAMES ALTERADA! ', mtInformation, [mbOK], 0);
  end;
end;

OBS: Uma alteração de tamanho de campo ou uma alteração de domínio ( ex: Integer para varchar ) implica em ter que mudar tambem no seu aplicativo os campos alterados... ou seja, voce tem que modificar o seu programa para ele não dê erro com a nova alteração de campos de sua tabela.

quando mandar o novo executavel para o cliente, ele usará o banco de dados que o cliente tem sem a alteração de tabela, e acabará apresentando erros .... com o botão de alteração do campo da tabela o erro será corrigido, e o cliente não perderá nenhuma das informações do banco de dados.

abraço

Link para o comentário
Compartilhar em outros sites

  • 0

Alias a estrutura da tabela quer preciso mexer e essa:

CREATE TABLE BANCO (

AQUISICAO SMALLINT,

AUTOR1 SMALLINT,

DESCRICAO CHAR(80),

DIM1 CHAR(10),

DIM2 CHAR(10),

NUM_ANTIGO CHAR(10),

TECNICA1 SMALLINT,

TEMA1 SMALLINT,

TITULO CHAR(80),

)

O campo a ser ordenado é DESCRICAO

Obrigado

Link para o comentário
Compartilhar em outros sites

  • 0
O campo a ser ordenado é DESCRICAO

Ordenar um campo não é preciso mexer na etrutura da tabela

voce faz isso via instrução SQL

abraço

Certo, digo este é o campo onde preciso acrescentar o collate para que a ordenação com

acentos funcione corretamente, via SQL

Abraço

Link para o comentário
Compartilhar em outros sites

  • 0

Estou tentando fazer aqui, não entendi porque da necessidade de um botão

Estou executando o comando SQL via Database Explorer

Coloquei a seguinte instrução conforme, citado anteriormente

ALTER TABLE BANCO

ADD DESCRICAO CHAR(80) CHARACTER SET WIN1252

COLLATE WIN1252

Entretando a operação na pode ser executada, com a seguinte mensagem de erro

Invalid modify request.

unsuccessful metadata update

STORE RDB$RELATION_FIELDS failed

attempt to store duplicate value (visible to active transactions

in unique index "RDB$INDEX_15"

Será que preciso mudar o tamanho do campo

Att,

Link para o comentário
Compartilhar em outros sites

  • 0
Coloquei a seguinte instrução conforme, citado anteriormente

ALTER TABLE BANCO

ADD DESCRICAO CHAR(80) CHARACTER SET WIN1252

COLLATE WIN1252

Entretando a operação na pode ser executada, com a seguinte mensagem de erro

Invalid modify request.

unsuccessful metadata update

STORE RDB$RELATION_FIELDS failed

attempt to store duplicate value (visible to active transactions

in unique index "RDB$INDEX_15"

Será que preciso mudar o tamanho do campo

Se já existir o campo, voce deleta ( drop field ) ...ai pode usar dessa maneira

abraço

Link para o comentário
Compartilhar em outros sites

  • 0
Não posso deletar o campo !!!, preciso dos dados dele

Não tem tipo um alter column ??

tem ... seria tipo isso

ALTER TABLE BANCO
ALTER COLUMN DESCRICAO
TYPE 
VARCHAR (150) CHARACTER SET WIN1252
COLLATE WIN1252

abraço

Link para o comentário
Compartilhar em outros sites

  • 0
Não posso deletar o campo !!!, preciso dos dados dele

Não tem tipo um alter column ??

tem ... seria tipo isso

ALTER TABLE BANCO
ALTER COLUMN DESCRICAO
TYPE 
VARCHAR (150) CHARACTER SET WIN1252
COLLATE WIN1252

abraço

Não esta aceitando o segundo alter, nem a palavra column, nem type

Vi que funciona desta forma em versoes do Interbase 6 ou superior

Aqui estou com o IB 4.2

E a questao dos dominios como funciona ?

Tava vendo sobre isto neste forum

http://www.activedelphi.com.br/forum/viewt...cdf145b580420f8

Thanks

Link para o comentário
Compartilhar em outros sites

  • 0
Não esta aceitando o segundo alter, nem a palavra column, nem type

Vi que funciona desta forma em versoes do Interbase 6 ou superior

Aqui estou com o IB 4.2

E a questao dos dominios como funciona ?

Desculpe ... o comando que te passei é para o interbase 6.5

Se não me engano para o interbase 4.2 é o comando abaixo, mas não tenho certeza

ALTER TABLE BANCO

SET DESCRICAO TYPE

VARCHAR (150) CHARACTER SET WIN1252

COLLATE WIN1252

ou procure na NET o manual para a versão que está usando

http://www.tecnobyte.com.br/dica9.html#dica208

http://www.geocities.com/wallstreet/Exchan...hi/delphi_7.htm

http://www.arsoft.pt/artur/firebird/files/cl_001.pdf

http://www.josevalter.com.br/download/banc...s/Interbase.pdf

OBS: Para voce não ficar quebrando a cabeça, neste endereço tem o download da versão 6 que aceita os comandos que te passei .... é gratuíto

http://superdownloads.uol.com.br/download/...terbase-server/

abraço

Link para o comentário
Compartilhar em outros sites

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,3k
    • Posts
      652,4k
×
×
  • Criar Novo...