VB6 ADO ACCESS E UM CAMPO DECIMAL

SAMUKA 02/04/2011 15:07:48
#370225
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?
TECLA 02/04/2011 16:22:40
#370230
Informe o código que está usando para armazenar o valor.
O problema pode ser no seu CÓDIGO ao invés de BUG.
SAMUKA 02/04/2011 16:26:38
#370231
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.
SAMUKA 02/04/2011 17:52:34
#370238
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.
MARCELO.TREZE 02/04/2011 19:45:33
#370246
Resposta escolhida
acredito que o problema seja o seguinte, vc deve estra tentando salvar no campo um valor com virgula, quando o certo é ponto.

solução


rs.AddNew
rs.Fields([Ô]NomeDoCampo[Ô]).value = Replace(mVar,[Ô],[Ô],[Ô].[Ô])
rs.Update



tente
SAMUKA 02/04/2011 20:00:31
#370247
Por via das duvidas, o valor que estou inserindo é 0

 
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)  

MARCELO.TREZE 02/04/2011 20:20:33
#370248
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
SAMUKA 05/04/2011 10:37:04
#370456
MARCELO-TREZE, a Instrução INSERT funciona, a AddNew não.
MARCELO.TREZE 08/04/2011 20:04:49
#370886
tente

rs.AddNew
rs.Fields([Ô]NomeDoCampo[Ô]) = CDec([Ô]1.00[Ô])
rs.Update


sem o value no fields

SAMUKA 10/04/2011 23:58:21
#371015
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.
MARCELO.TREZE 11/04/2011 10:27:04
#371040
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...)
Página 1 de 2 [11 registro(s)]
Tópico encerrado , respostas não são mais permitidas