VB6 ADO ACCESS E UM CAMPO DECIMAL
Boa tarde Galera!
To com um problema e não to entendendo o que está acontecendo.
Gostaria de saber se alguem já passou por isso, se é um BUG.
Tenho meu sistema desenvolvido em VB6 e o banco é em Access 2003. Acesso ADO 2.8
Normalmente utilizo o tipo Unidade Monetária, qdo vou guardar um determinado valor em reais.
Apenas a titulo de experiencia, mudei o campo para DECIMAL ( Precisão 15, escala 2)
Porém, até o momento não consegui inserir valor no campo. Sempre aparece erro: Tipo IncompatÃvel
é BUG? Não dá pra usar o tipo DECIMAL?
To com um problema e não to entendendo o que está acontecendo.
Gostaria de saber se alguem já passou por isso, se é um BUG.
Tenho meu sistema desenvolvido em VB6 e o banco é em Access 2003. Acesso ADO 2.8
Normalmente utilizo o tipo Unidade Monetária, qdo vou guardar um determinado valor em reais.
Apenas a titulo de experiencia, mudei o campo para DECIMAL ( Precisão 15, escala 2)
Porém, até o momento não consegui inserir valor no campo. Sempre aparece erro: Tipo IncompatÃvel
é BUG? Não dá pra usar o tipo DECIMAL?
Informe o código que está usando para armazenar o valor.
O problema pode ser no seu CÓDIGO ao invés de BUG.
O problema pode ser no seu CÓDIGO ao invés de BUG.
Dim rs as new Recordset
Dim mVar as Currency
....
rs.AddNew
rs.Fields([Ô]NomeDoCampo[Ô]).value = mVar
rs.Update
....
Isso funciona com todos os demais códigos. somente com o Decimal q não.
Dim mVar as Currency
....
rs.AddNew
rs.Fields([Ô]NomeDoCampo[Ô]).value = mVar
rs.Update
....
Isso funciona com todos os demais códigos. somente com o Decimal q não.
Olhem o [ô]mapa[ô] do erro, pra ver se ajuda
Erros(0).SQLState = 3464
Erros(0).Number = -2147217913
Erros(0).Source = Microsoft JET Database Engine
Erros(0).Description = Tipo de dados imcompatÃvel na expressão de critério.
Erros(0).SQLState = 3464
Erros(0).Number = -2147217913
Erros(0).Source = Microsoft JET Database Engine
Erros(0).Description = Tipo de dados imcompatÃvel na expressão de critério.
acredito que o problema seja o seguinte, vc deve estra tentando salvar no campo um valor com virgula, quando o certo é ponto.
solução
tente
solução
rs.AddNew
rs.Fields([Ô]NomeDoCampo[Ô]).value = Replace(mVar,[Ô],[Ô],[Ô].[Ô])
rs.Update
tente
Por via das duvidas, o valor que estou inserindo é 0
também testei assim:
E o erro continua o mesmo.
Se eu utilizar a instrução SQL abaixo, funciona
mVar = 0
rs.AddNew
rs.Fields([Ô]NomeDoCampo[Ô]).value = mVar
rs.Update
também testei assim:
rs.AddNew
rs.Fields([Ô]NomeDoCampo[Ô]).value = [Ô]0.0[Ô]
rs.Update
E o erro continua o mesmo.
Se eu utilizar a instrução SQL abaixo, funciona
INSERT INTO tbMinhaTabela NomeDoCampo VALUES(0)
veja se funciona assim
INSERT INTO tbMinhaTabela NomeDoCampo VALUES(3.8)
se funcionar voce pode tentar assim
INrs.AddNew
rs.Fields([Ô]NomeDoCampo[Ô]).value = CDec([Ô]1.00[Ô])
rs.Update
INSERT INTO tbMinhaTabela NomeDoCampo VALUES(3.8)
se funcionar voce pode tentar assim
INrs.AddNew
rs.Fields([Ô]NomeDoCampo[Ô]).value = CDec([Ô]1.00[Ô])
rs.Update
MARCELO-TREZE, a Instrução INSERT funciona, a AddNew não.
tente
sem o value no fields
rs.AddNew
rs.Fields([Ô]NomeDoCampo[Ô]) = CDec([Ô]1.00[Ô])
rs.Update
sem o value no fields
Boa noite MARCELO-TREZE
Fiz o teste conforme você me passou.
Qdo uso CDec([Ô]1.00[Ô]) no campo grava 10000
Qdo uso CDec([Ô]1,00[Ô]) no campo grava 100
Descobri que esse problema está relacionado com o CursorLocation do objeto Connection
Qdo o cursor é adUseServer ele grava corretamente
Qdo o cursor é adUseClient ele grava errado(não reconhece o ponto.)
Por ser uma aplicação que tenho varias estações cliente, dei preferencia por adUseClient além da vantagem de acesso a algumas propriedade com RecordCount, AbsolutPosition, etc.
Fiz o teste conforme você me passou.
Qdo uso CDec([Ô]1.00[Ô]) no campo grava 10000
Qdo uso CDec([Ô]1,00[Ô]) no campo grava 100
Descobri que esse problema está relacionado com o CursorLocation do objeto Connection
Qdo o cursor é adUseServer ele grava corretamente
Qdo o cursor é adUseClient ele grava errado(não reconhece o ponto.)
Por ser uma aplicação que tenho varias estações cliente, dei preferencia por adUseClient além da vantagem de acesso a algumas propriedade com RecordCount, AbsolutPosition, etc.
SAMUKA, a unica coisa que posso sugerir é que vc altere o campo para texto, assim não terá mais esse problema.
ou começe a utilizar apenas querys (insert into, update, delete, etc...)
ou começe a utilizar apenas querys (insert into, update, delete, etc...)
Tópico encerrado , respostas não são mais permitidas