Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
gente, tenho uma rotina que cria uma tabela no banco ACCESS sem problemas, mas preciso criar um campo de valor (currency) com 4 casas decimais e não estou conseguindo..
segue abaixo um exemplo do meu código:
Dim laco As Integer
Dim CriaTab As TableDef
Dim fldMudou As Field
With bd
For laco = 0 To .TableDefs.Count - 1
If UCase(.TableDefs(laco).Name) = UCase("ReciboVenda") Then
Exit Sub
End If
Next laco
End With
Set CriaTab = bd.CreateTableDef("ReciboVenda")
With CriaTab
Set fldMudou = .CreateField("Ordem", dbText, 5)
fldMudou.Required = False
.Fields.Append fldMudou
.Fields.Refresh
Set fldMudou = .CreateField("DataVenda", dbDate)
fldMudou.Required = False
.Fields.Append fldMudou
.Fields.Refresh
Set fldMudou = .CreateField("Viagem", dbText, 3)
fldMudou.Required = False
.Fields.Append fldMudou
.Fields.Refresh
Set fldMudou = .CreateField("Valunit", dbCurrency)
fldMudou.Required = False
.Fields.Append fldMudou
.Fields.Refresh
Set fldMudou = .CreateField("CodEmpresa", dbLong)
fldMudou.DefaultValue = "1"
fldMudou.Required = False
.Fields.Append fldMudou
.Fields.Refresh
.Properties.Refresh
End With
bd.TableDefs.Append CriaTab
End Sub
velu !!
>
Quando você obriga a ser currency, ele por padrão põe duas casas.
Se quiser trabalhar com mais, use decimal.
E sinceramente, odeio construir tabela por esse método, dá muito erro e tem banco que aceita alguns termos e uns que não aceitam.
Prefiro construir tabela passando a query pela variável de conexão, por exemplo:
cn.execute "create table tabela (cod int identity, valor decimal(6,4))"
ok, mas como sou novo na arte de programação, teria como me dar uma ajuda dentro da lógica que eu passei ?
vlw !
Bom, eu tentei reproduzir seu código aqui mas acredito que por minha versão do office ser superior a 2000, não consegui fazer dar certo.
Nenhuma das formas que coloco para o campo (dbLong, dbCurrency, etc) ele aceita.
Veja se consegue usar o decimal. É o tipo de campo que vai resolver seu problema.
>
Bom, eu tentei reproduzir seu código aqui mas acredito que por minha versão do office ser superior a 2000, não consegui fazer dar certo.
Nenhuma das formas que coloco para o campo (dbLong, dbCurrency, etc) ele aceita.
Veja se consegue usar o decimal. É o tipo de campo que vai resolver seu problema.
Não sei se é o caso (versão) pois tenho a versão 2007 e o código que te passei roda certinho.... mas não aceita dbdecimal.... tive que no final jogar para dbsingle que aceita uma quantidade maior de casas decimais, e bola para frente...
de qq forma, obrigado !
abraços
É, pode ser a versão. Foi o que te disse, não gosto de usar esse método, pois cada banco de dados tem suas limitações quanto ao que pode usar, e nunca achei em lugar nenhum dizendo qual serve para cada um.
Mas que bom que resolveu.
Precisando poste ai.
Abraços.
Quando você obriga a ser currency, ele por padrão põe duas casas.
Se quiser trabalhar com mais, use decimal.
E sinceramente, odeio construir tabela por esse método, dá muito erro e tem banco que aceita alguns termos e uns que não aceitam.
Prefiro construir tabela passando a query pela variável de conexão, por exemplo:
cn.execute "create table tabela (cod int identity, valor decimal(6,4))"