thiago.mac Postado Maio 7, 2009 Denunciar Share Postado Maio 7, 2009 Boa NoiteTenho 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 WIN1252COLLATE PT_PT, COLLATE PXW_INTL850O que seriam estes códigos, e onde inseri-losObrigado Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Jhonas Postado Maio 8, 2009 Denunciar Share Postado Maio 8, 2009 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 WIN1252COLLATE PT_PT, COLLATE PXW_INTL850O que seriam estes códigos, e onde inseri-losVoce usa estes códigos quando está criando um campo de registro em uma tabela interbaseexemplo:ALTER TABLE EXAMES ADD NOME VARCHAR(100) CHARACTER SET WIN1252 COLLATE WIN1252abraço Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 thiago.mac Postado Maio 8, 2009 Autor Denunciar Share Postado Maio 8, 2009 O Banco de Dados já existem, como poderia alterar a coluna que preciso agora depois do banco já em uso ?Abraço, vlw Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Jhonas Postado Maio 8, 2009 Denunciar Share Postado Maio 8, 2009 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 IBSQLNa propriedade SQL deste componente coloque o código para alterar um campo da sua tabelaexemplo: 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ódigoALTER 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 Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 thiago.mac Postado Maio 8, 2009 Autor Denunciar Share Postado Maio 8, 2009 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 é DESCRICAOObrigado Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Jhonas Postado Maio 8, 2009 Denunciar Share Postado Maio 8, 2009 O campo a ser ordenado é DESCRICAOOrdenar um campo não é preciso mexer na etrutura da tabelavoce faz isso via instrução SQLabraço Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 thiago.mac Postado Maio 8, 2009 Autor Denunciar Share Postado Maio 8, 2009 O campo a ser ordenado é DESCRICAOOrdenar um campo não é preciso mexer na etrutura da tabelavoce faz isso via instrução SQLabraçoCerto, digo este é o campo onde preciso acrescentar o collate para que a ordenação comacentos funcione corretamente, via SQLAbraço Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 thiago.mac Postado Maio 8, 2009 Autor Denunciar Share Postado Maio 8, 2009 Estou tentando fazer aqui, não entendi porque da necessidade de um botãoEstou executando o comando SQL via Database Explorer Coloquei a seguinte instrução conforme, citado anteriormenteALTER TABLE BANCOADD DESCRICAO CHAR(80) CHARACTER SET WIN1252COLLATE WIN1252Entretando a operação na pode ser executada, com a seguinte mensagem de erroInvalid modify request.unsuccessful metadata updateSTORE RDB$RELATION_FIELDS failedattempt to store duplicate value (visible to active transactionsin unique index "RDB$INDEX_15"Será que preciso mudar o tamanho do campoAtt, Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Jhonas Postado Maio 8, 2009 Denunciar Share Postado Maio 8, 2009 Coloquei a seguinte instrução conforme, citado anteriormenteALTER TABLE BANCOADD DESCRICAO CHAR(80) CHARACTER SET WIN1252COLLATE WIN1252Entretando a operação na pode ser executada, com a seguinte mensagem de erroInvalid modify request.unsuccessful metadata updateSTORE RDB$RELATION_FIELDS failedattempt to store duplicate value (visible to active transactionsin unique index "RDB$INDEX_15"Será que preciso mudar o tamanho do campoSe já existir o campo, voce deleta ( drop field ) ...ai pode usar dessa maneiraabraço Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 thiago.mac Postado Maio 8, 2009 Autor Denunciar Share Postado Maio 8, 2009 Se já existir o campo, voce deleta ( drop field ) ...ai pode usar dessa maneiraabraçoNão posso deletar o campo !!!, preciso dos dados dele Não tem tipo um alter column ??Vlw Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Jhonas Postado Maio 8, 2009 Denunciar Share Postado Maio 8, 2009 Não posso deletar o campo !!!, preciso dos dados dele Não tem tipo um alter column ??tem ... seria tipo issoALTER TABLE BANCO ALTER COLUMN DESCRICAO TYPE VARCHAR (150) CHARACTER SET WIN1252 COLLATE WIN1252abraço Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 thiago.mac Postado Maio 8, 2009 Autor Denunciar Share Postado Maio 8, 2009 Não posso deletar o campo !!!, preciso dos dados dele Não tem tipo um alter column ??tem ... seria tipo issoALTER TABLE BANCO ALTER COLUMN DESCRICAO TYPE VARCHAR (150) CHARACTER SET WIN1252 COLLATE WIN1252abraçoNão esta aceitando o segundo alter, nem a palavra column, nem typeVi que funciona desta forma em versoes do Interbase 6 ou superiorAqui estou com o IB 4.2E a questao dos dominios como funciona ?Tava vendo sobre isto neste forumhttp://www.activedelphi.com.br/forum/viewt...cdf145b580420f8Thanks Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Jhonas Postado Maio 8, 2009 Denunciar Share Postado Maio 8, 2009 Não esta aceitando o segundo alter, nem a palavra column, nem typeVi que funciona desta forma em versoes do Interbase 6 ou superiorAqui estou com o IB 4.2E a questao dos dominios como funciona ?Desculpe ... o comando que te passei é para o interbase 6.5Se não me engano para o interbase 4.2 é o comando abaixo, mas não tenho certezaALTER TABLE BANCOSET DESCRICAO TYPE VARCHAR (150) CHARACTER SET WIN1252COLLATE WIN1252ou procure na NET o manual para a versão que está usandohttp://www.tecnobyte.com.br/dica9.html#dica208http://www.geocities.com/wallstreet/Exchan...hi/delphi_7.htmhttp://www.arsoft.pt/artur/firebird/files/cl_001.pdfhttp://www.josevalter.com.br/download/banc...s/Interbase.pdfOBS: 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 Citar Link para o comentário Compartilhar em outros sites More sharing options...
Pergunta
thiago.mac
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
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.