Type incompatible quand insertion d'une variable dans base Access [Résolu]

Signaler
Messages postés
16
Date d'inscription
mercredi 10 septembre 2003
Statut
Membre
Dernière intervention
2 octobre 2007
-
Messages postés
16
Date d'inscription
mercredi 10 septembre 2003
Statut
Membre
Dernière intervention
2 octobre 2007
-
Bonjour à tous,

Je suis toujours avec mes problèmes de programmation en VB6...

Donc cette fois ci j'ai besoin d'aide pour l'insertion d'une variable numérique dans une table Access.
La table Access a été créée en ligne de code sql via du VB6, elle s'appelle Customer et contient 2 colonnes (Colonne et Colnum [Original non ?])
Petite précision, je suis en settings Américain (L'appli doit être utilisée aux US, donc les chiffres ont ce format 1,000.00)
Voilà le bout de code :

Const adOpenStatic = 3
Const adLockOptimistic = 3
Const adUseClient = 3
Dim oConnection
Dim oRecordset
Dim Titi As Currency

Set oConnection = CreateObject("ADODB.Connection")
Set oRecordset = CreateObject("ADODB.Recordset")

oConnection.Open "DSN=Quickbooks Data;"

oRecordset.CursorLocation = adUseClient
oRecordset.Open "SELECT TxnID, subtotal FROM Invoice ", oConnection, adOpenStatic, adLockOptimistic

Load_Access_Connection
While oRecordset.EOF() = False

Titi = oRecordset.Fields(1).Value

If IsNumeric(Titi) Then
MsgBox (Titi)
Else
MsgBox ("bof")
End If

Access_Connection.Execute ("Insert into Customer(colnum) values ('" + Titi + "')")
oRecordset.MoveNext
End If
Wend

Au début, le type de ma variable n'était pas assigné, donc j'ai testé tous les types, ça change rien.
Dans mon fichier Access, Colnum est bien en numérique.

Voici un bout de code qui marche lui :

Dim Toto
Load_Access_Connection
Toto = "32.3"
Access_Connection.Execute ("Insert into Customer(colnum) values ('" + Toto + "')")

Et je vois pas trop la différence avec mon bout de code... sauf le recordset, c'est vrai...

J'espère que vous pourrez m'aider et je vous en remercie par avance
ça fait 2 jours que je suis bloquée sur ça

Bonne journée,
Céline.

3 réponses

Messages postés
17286
Date d'inscription
mercredi 2 janvier 2002
Statut
Modérateur
Dernière intervention
23 décembre 2019
69
si toto est numérique, ne fais pas
Toto = "32.3"
mais
Toto = 32.3

d'autre part, on ne concatène JAMAIS en utilisant le symbole '+' mais bien en utilisant '&'

Renfield
Admin CodeS-SourceS - MVP Visual Basic
3
Merci

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources 179 internautes nous ont dit merci ce mois-ci

Messages postés
506
Date d'inscription
vendredi 30 juillet 2004
Statut
Membre
Dernière intervention
3 mars 2008
2
Salut :)

ton problème vient des apostrophes autour de ta valeur: ces dernières ne sont utilises que pour les valeurs de type texte ou date.
Dans ton cas tu dois mettre:
Access_Connection.Execute ("Insert into Customer(colnum) values (" + Toto + ")")

Voila :)

Rollerman
Messages postés
16
Date d'inscription
mercredi 10 septembre 2003
Statut
Membre
Dernière intervention
2 octobre 2007

Bonjour,



J'avais déjà essayé sans les simple quote mais ça ne marchait pas

Pour la concaténation, je ne suis pas pro du tout en VB6, merci pour le tuyau



Enfin, j'ai réussi à trouver une solution à mon piti problème :
je rappelle mon souci : J'ai un champ Numérique dans une base Access que je veux renseigner. Je lui mets un chiffre via un recordset, marche pas même avec un CCur() sur la valeur...

Et bien, la solution, c'est justement faire l'inverse de ce que je veux obtenir... Voilà la ligne qui marche sans l'erreur Type Incompatible =>
Access_Connection.Execute ("Insert into Customer(colnum) values ('" & CStr(oRecordset.Fields(1).Value) & "')")

Oui, vous lisez bien, je passe ma variable en texte pour qu'elle soit en Numérique...
Donc plus de messages d'erreurs en faisant ça et surtout, dans ma table Access, les données sont bien enregistrées et sont en format Numérique...

Y'a de quoi perdre des neurones
Bonne journée,
Céline