Tipo Numérico e Valor no Firebird 1.5
Olá pessoal, estou com uma pequena dúvida.. estou fazendo um banco de dados em Firebird 1.5 pelo IbExpert.. quando eu coloco um campo do tipo Numeric, ele me da como padrão o Tamanho 15 e a Escala 2. Bom, o q eu gostaria de saber é o seguinte, esse ´Tamanho´, é o número de caracteres que podem ser inseridos, Já q tb uso ele pro VarChar?? isso quer dizer q posso ter um numero assim:
100000000000000 ????
E a escala o q é? Estou usando tipos Numeric somente pra digicar códigos, como por exemplo a Chave Primária das tabelas que serão códigos auto-numeração e as chaves estrangeiras, que as vezes receberão esses códigos... a escala 2 é indicada pra isso?
Bom e a outra dúvida é de q tipo de dados eu uso pra inserir um valor no Firebird, eu quero digitar o preço de um produto, e q na aplicação me apareça certinho, ex.: R$ 2,50... lembro q no access tinha o tipo moeda...
Grato pela ajuda.. :wink:
Allan Elias Ramos :roll:
100000000000000 ????
E a escala o q é? Estou usando tipos Numeric somente pra digicar códigos, como por exemplo a Chave Primária das tabelas que serão códigos auto-numeração e as chaves estrangeiras, que as vezes receberão esses códigos... a escala 2 é indicada pra isso?
Bom e a outra dúvida é de q tipo de dados eu uso pra inserir um valor no Firebird, eu quero digitar o preço de um produto, e q na aplicação me apareça certinho, ex.: R$ 2,50... lembro q no access tinha o tipo moeda...
Grato pela ajuda.. :wink:
Allan Elias Ramos :roll:
Aersoftware
Curtidas 0
Respostas
Bon Jovi
25/07/2004
Esse ´Tamanho´ (na verdade Precisao) é o numero total de digitos incluindo a parte decimal. E escala é o numero de digitos pra parte decimal. NUMERIC(8,2) poderá ter no maximo 999.999,99.
Sobre essa formatação, basta setar a propriedade Currency do TField pra True. Outras formatações podem ser feitas em DisplayFormat no TField, ou ainda usando a funcao FormatFloat se tiver programando manualmente (sem data controls).
Sobre essa formatação, basta setar a propriedade Currency do TField pra True. Outras formatações podem ser feitas em DisplayFormat no TField, ou ainda usando a funcao FormatFloat se tiver programando manualmente (sem data controls).
GOSTEI 0
Aersoftware
25/07/2004
hmmm... entao nao tem problema em eu deixar o campo numerico como (15,2)?? e o preço, eu posso colocar tb como Numeric (15,2)??
Allan Elias Ramos :roll:
Allan Elias Ramos :roll:
GOSTEI 0
Bon Jovi
25/07/2004
Tudo depende do caso. Se o campo nunca terá armazenado aproximadamente 9.999.999.999.999,99 então vc estará ocupando espaço a toa na base, quanto aos dígitos a mais que nunca serão usados.
GOSTEI 0
Aersoftware
25/07/2004
Outra dúvida q surgiu.. no caso do campo ser código e auto-numeração, eu nao preciso colocar a Escala como 2 certo? já q o código não terá vírgula, será um numero inteiro... ou será q eu tenho alguma obrigatoriedade de colocar um número mínimo de Escala???
Allan Elias Ramos :?:
Allan Elias Ramos :?:
GOSTEI 0
Bon Jovi
25/07/2004
eu nao preciso colocar a Escala como 2 certo?
Isso mesmo - NUMERIC(15).Só uns toques... Se na sua aplicação nunca terá a possibilidade de acessar/migrar pra Oracle, então pra numeros inteiros vc pode usar INTEGER e nao NUMERIC. Caso contrario, use NUMERIC pois no Oracle nao existe INTEGER de verdade (só existe um subtipo ´INTEGER´ q na verdade é uma variação do NUMBER (equivalente ao NUMERIC do Interbase).
Isso pq teria problema de incompatibilidade de TFields no Delphi se tiver usando TFields em tempo de design, coisa q não gosto de fazer. Se tb não tiver fazendo assim, poderá colocar como INTEGER sem preocupações futuras.
GOSTEI 0
Aersoftware
25/07/2004
Na verdade nao pretendo migrar pra Oracle.. mas não tem nenhum problema em deixar esse campo de código auto-numeração como Numeric certo? ou o mais aconselhavel é usar o Integer?
Outra coisa.. no campo q criei pra Moeda, eu botei como Numeric(8,2) .. mas esse campo Numeric suporta a vírgula? Na hora de digitar o valor, eu tenho q digitar 200 e ele transformas pra 2,00 ou posso digitar direto 2,00 com a vírgula??
Allan Elias Ramos :?:
Outra coisa.. no campo q criei pra Moeda, eu botei como Numeric(8,2) .. mas esse campo Numeric suporta a vírgula? Na hora de digitar o valor, eu tenho q digitar 200 e ele transformas pra 2,00 ou posso digitar direto 2,00 com a vírgula??
Allan Elias Ramos :?:
GOSTEI 0
Bon Jovi
25/07/2004
Na verdade nao pretendo migrar pra Oracle.. mas não tem nenhum problema em deixar esse campo de código auto-numeração como Numeric certo? ou o mais aconselhavel é usar o Integer?
Tanto faz então, a relativa vantagem do Numeric nesse caso é q vc pode especificar o tamanho que será ocupado, mas no q eu vejo de projetos usando Ib/Fb, se usa sempre Integer nesse caso.Outra coisa.. no campo q criei pra Moeda, eu botei como Numeric(8,2) .. mas esse campo Numeric suporta a vírgula? Na hora de digitar o valor, eu tenho q digitar 200 e ele transformas pra 2,00 ou posso digitar direto 2,00 com a vírgula??
//R$ 200,00
INSERT INTO TABELA (PRECO) VALUES (200)
//R$ 10,50
INSERT INTO TABELA (PRECO) VALUES (10.5)
GOSTEI 0
Afarias
25/07/2004
Esteja atento q::
NUMERIC(15) = Integer de 64Bits
T+
NUMERIC(15) = Integer de 64Bits
T+
GOSTEI 0