GARANTIR DESCONTO

Fórum Problemas com campo Numeric no fb 1.5 e delphi 6 #50149

30/03/2005

0

Bom dia pessoal,

Estou com um problema que já esta me esgotando, tenho em uma tabela um campo denominado EMPDES com a seguinte definição
[b:34c35bb66b]Numeric 6,2[/b:34c35bb66b], para armazer valores em percentuais.

Porem quando estou em meu aplicativo, e abro a Tabela em questão me é retornado o seguinte erro:
[b:34c35bb66b]
Project Pharma.exe raised exception class EDataBaseError with message
´SqlEmpresa: Campo EMPDES não é do tipo esperado, esperando:BCD atual FmtBcdField.[/b:34c35bb66b]

Já tirei o field, o componente, e nada.. o engraçado é que vou no FieldsEditor do SQLDataSet ou no ClientDataSet e o campo esta como BCDField.

Alguém poderia me ajudar? Estou utilizando Delphi 6, Firebird 1.5 acessado via DBExpress.

Fausto[/b]


Faustoalves

Faustoalves

Responder

Posts

30/03/2005

Afarias

Acho q sua conexão está configurada para o Dialeto 1 (ou o dialeto da conexão está diferente do dialeto da base)


T+


Responder

Gostei + 0

30/03/2005

Faustoalves

Acho q sua conexão está configurada para o Dialeto 1 (ou o dialeto da conexão está diferente do dialeto da base) T+


Esta com dialeto 3, e também com o mesmo charset tanto no banco quanto no componente de conexão


Responder

Gostei + 0

30/03/2005

Afarias

Não mencionei Charset, verifique se o DIALETO é o mesmo na conexão e no banco.


T+


Responder

Gostei + 0

30/03/2005

Faustoalves

Não mencionei Charset, verifique se o DIALETO é o mesmo na conexão e no banco. T+


[b:2f74a9d5f5]Esta com dialeto 3,[/b:2f74a9d5f5] [color=red:2f74a9d5f5][b:2f74a9d5f5] E[/b:2f74a9d5f5][/color:2f74a9d5f5] também com o mesmo charset tanto no banco quanto no componente de conexão

Eu quiz dizer em um frase só, que esta com ambos, eu sei que o charset não influência em campos numéricos apenas comentei para evitar os famosos chutes.

Fausto
ps: o engraçado é qdo mudo o campo para Decimal(6,2) funciona..


Responder

Gostei + 0

30/03/2005

Gandalf.nho

Vc está usando o driver DBExpress padrão do Interbase ou um já próprio pro FB?


Responder

Gostei + 0

31/03/2005

Faustoalves

Estou utilizando o driver do Interbase, antes eu estava com o UIB, mas devidos a alguns problemas que este drive tem apresentado eu passei a utilizar o Interbase.

Fausto


Responder

Gostei + 0

14/04/2005

Pmst

Bom dia pessoal, Estou com um problema que já esta me esgotando, tenho em uma tabela um campo denominado EMPDES com a seguinte definição [b:af38cf5fd2]Numeric 6,2[/b:af38cf5fd2], para armazer valores em percentuais. Porem quando estou em meu aplicativo, e abro a Tabela em questão me é retornado o seguinte erro: [b:af38cf5fd2] Project Pharma.exe raised exception class EDataBaseError with message ´SqlEmpresa: Campo EMPDES não é do tipo esperado, esperando:BCD atual FmtBcdField.[/b:af38cf5fd2] Já tirei o field, o componente, e nada.. o engraçado é que vou no FieldsEditor do SQLDataSet ou no ClientDataSet e o campo esta como BCDField. Alguém poderia me ajudar? Estou utilizando Delphi 6, Firebird 1.5 acessado via DBExpress. Fausto[/b]



Fausto isso também aconteceu comigo, me parace que o driver do dbx para interbase (rodando para firebird) não consegue reconhecer corretamente o tipo do dado.

para resolver alterer de numeric(6,2) para numeric(10,2).

na aplicação sempre que você for referincia o campo

campo.ascurrency := varmem

varmem := campo.ascurrency

se você tentar usar : value, asfloat, asdouble, asbcd vai dar erro

que esta por exemplo float e esta esperando tfmtbcd.

resolvi dessa forma, espero que ajude

[]´s
Paulo.


Responder

Gostei + 0

15/04/2005

Faustoalves

Fausto isso também aconteceu comigo, me parace que o driver do dbx para interbase (rodando para firebird) não consegue reconhecer corretamente o tipo do dado. 

para resolver alterer de numeric(6,2) para numeric(10,2). 

na aplicação sempre que você for referincia o campo 

campo.ascurrency := varmem 

varmem := campo.ascurrency 

se você tentar usar : value, asfloat, asdouble, asbcd vai dar erro 

que esta por exemplo float e esta esperando tfmtbcd. 

resolvi dessa forma, espero que ajude 

[]´s 
Paulo.


Paulo, antes de tudo obrigado pela atenção, eu resolvi este problema criando o campo com Decimal(6,2), mas supondo que eu resolva adorar a solução proposta por vc, como eu faria para limitar a digitação em 999.99, ou seja 3 digitos com duas casas decimais?
Mais uma pergunta, esta foge um pouco do tópico que estamos discutindo, estou migrando do Paradox para o FB, e estou tendo um trabalho massante para desenvolver as telas de pesquisa, como vc faz este procedimento? vc tem uma pesquisa para cada tabela ? ex:
Tabela fornecedores: No contas a pagar eu necessito do código do mesmo, então estou criando um form para pesquisar o fornecedor e devolver o código, o mesmo estou fazendo para as tabelas de clientes, vendedores, produtos.. etc.. vc também faz desta forma?

Desde já agradeço a atenção
Fausto


Responder

Gostei + 0

15/04/2005

Pmst

Fausto isso também aconteceu comigo, me parace que o driver do dbx para interbase (rodando para firebird) não consegue reconhecer corretamente o tipo do dado. 

para resolver alterer de numeric(6,2) para numeric(10,2). 

na aplicação sempre que você for referincia o campo 

campo.ascurrency := varmem 

varmem := campo.ascurrency 

se você tentar usar : value, asfloat, asdouble, asbcd vai dar erro 

que esta por exemplo float e esta esperando tfmtbcd. 

resolvi dessa forma, espero que ajude 

[]´s 
Paulo.
Paulo, antes de tudo obrigado pela atenção, eu resolvi este problema criando o campo com Decimal(6,2), mas supondo que eu resolva adorar a solução proposta por vc, como eu faria para limitar a digitação em 999.99, ou seja 3 digitos com duas casas decimais? Mais uma pergunta, esta foge um pouco do tópico que estamos discutindo, estou migrando do Paradox para o FB, e estou tendo um trabalho massante para desenvolver as telas de pesquisa, como vc faz este procedimento? vc tem uma pesquisa para cada tabela ? ex: Tabela fornecedores: No contas a pagar eu necessito do código do mesmo, então estou criando um form para pesquisar o fornecedor e devolver o código, o mesmo estou fazendo para as tabelas de clientes, vendedores, produtos.. etc.. vc também faz desta forma? Desde já agradeço a atenção Fausto


Fausto, para limitar a digitação faça o seguinte, para campos do tipo tedit
use maskedit, e no campo editmask coloque a mascara #.00

na 2a. questão, para cadastros eu tenho um unico form com um dbgrid e um edit.

trabalho sempre com o [u:0e2d941dab]trio[/u:0e2d941dab] (sqlquery+datasetprovider+clientdataset).

onde :
AUXILIAR = SQLQuery
dspAUXILIAR = DataSetProvider
cdsAUXILIAR = ClientDataSet
dsAUXILIAR = DataSource

var
Campo : TField;
PCODFOR : Integer;

with DM do
begin

AUXILIAR.Fields.Clear;
AUXILIAR.FieldDefs.Clear;

Campos := TStringField.Create(Self);
Campos.FieldName := ´NOMFOR´;
Campos.Name := AUXILIAR.Name+Campos.FieldName;
Campos.DisplayLabel := ´NOMFOR´;
Campos.DisplayWidth := 40;
Campos.FieldKind := fkdata;
Campos.Size := 40;
Campos.DataSet := AUXILIAR;

Campos := TIntegerField.Create(Self);
Campos.FieldName := ´CODFOR´;
Campos.Name := AUXILIAR.Name+Campos.FieldName;
Campos.DisplayLabel := ´CODFOR´;
Campos.DisplayWidth := 10;
Campos.FieldKind := fkdata;
Campos.DataSet := AUXILIAR;

cdsAUXILIAR.Active := False
with AUXILIAR do
begin
Close;
SQL.Clear;
SQL.Add(´Select NOMFOR,CODFOR with TABELA Order by NOMFOR´);
Open;
end;
cdsAUXILIAR.Active := True;
if cdsAUXILIAR.RecordCount > 0 Then
begin
Try
F_MOSTRATAB := TF_MOSTRATAB.Create(Application);
F_MOSTRATAB.ShowModal;
NOMFORx.Text := DataModulo.cdsAUXILIAR[´NOMFOR´];
PCODFOR := DataModulo.cdsAUXILIAR[´CODFOR´]
AUXILIAR.Close;
Finally
F_MOSTRATAB.Release;
F_MOSTRATAB := Nil;
end;
end;
AUXILIAR.Fields.Clear;
AUXILIAR.FieldDefs.Clear;
end;

no form MOSTRATAB, o grid está ligado ao dsAUXILIAR, quando dá um duplo click fecho o form e mostro o resultado num edit (NOMFORx.Text) e guardo o cod. do fornecedor em PCODFOR


para consultas propriamente ditas, uma para cada, usuando sempre que possivel o [u:0e2d941dab]trio[/u:0e2d941dab] (sqlquery+datasetprovider+clientdataset).

espero que ajude,

[ ]´s
Paulo.


Responder

Gostei + 0

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

Aceitar