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.Updatetente
                    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.Updatesem 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