Insersion entier dans une base de données Access depuis VB6 [Résolu]

Signaler
Messages postés
11
Date d'inscription
dimanche 4 février 2007
Statut
Membre
Dernière intervention
21 mars 2007
-
Messages postés
11
Date d'inscription
dimanche 4 février 2007
Statut
Membre
Dernière intervention
21 mars 2007
-
Bonjour,

On a une table Access avec un champ StockMag de type numeric.
Nous cherchons à insérer des lignes dans la table depuis VB6.
Notre requete est la suivante:
sql1 = "INSERT INTO stockmagCS120 VALUES ('CS120',#" & Format(date_calcul, "mm/dd/yyyy") & "#,stock)"
Set rsClient = cn.Execute(sql1)

où Stock est de type Integer (Dim Stock As integer)

VB nous affiche un message d'erreur disant que tous les champs ne sont pas renseignés, alors si on remplace Stock par 8 par exemple, ça fonctionne...

Merci d'avance

9 réponses

Messages postés
7741
Date d'inscription
mercredi 1 septembre 2004
Statut
Membre
Dernière intervention
24 septembre 2014
36
Si stock est une variable de ton programme :

sql1 = "INSERT INTO stockmagCS120 VALUES ('CS120',#" & Format(date_calcul, "mm/dd/yyyy") & "#," & stock & ")"

---- Sevyc64  (alias Casy) ----<hr size="2" width="100%" /># LE PARTAGE EST NOTRE FORCE #
Messages postés
7741
Date d'inscription
mercredi 1 septembre 2004
Statut
Membre
Dernière intervention
24 septembre 2014
36
Alors même principe avec une petite subtilité de plus. Il faut encadrer la chaine de " ou de '
Et ma petite phrase fétiche :

Sa ta chaine doit contenir des " elle doit etre encadrée de ', au contraire si elle doit contenir des ' elle doit etre encadrée de "

Ici on va prendre la cas le plus simple et encadrer la chaine de '

sql = "SELECT date_stock_mag FROM stockmag WHERE Mag= ' " & nom_mag & "'"

---- Sevyc64  (alias Casy) ----<hr size ="2" width="100%" /># LE PARTAGE EST NOTRE FORCE #
Messages postés
4822
Date d'inscription
lundi 11 novembre 2002
Statut
Membre
Dernière intervention
15 novembre 2016
12
Salut,

Est-ce que tu passe bien une valeur à stock ?
Insère une MsgBox avant ta requête pour vérifier que Stock contient une valeur...

A+
Exploreur
Messages postés
11
Date d'inscription
dimanche 4 février 2007
Statut
Membre
Dernière intervention
21 mars 2007

Merci

Super ça marche!!
Mais nous avons le même problème pour les string:

Dim nom_mag as string
nom_mag="CS120"
sql = "SELECT date_stock_mag FROM stockmag WHERE Mag=nom_mag"
Set rsClient = cn.Execute(sql)

Le champ de la table stockmag est un texte dans Access
Messages postés
11
Date d'inscription
dimanche 4 février 2007
Statut
Membre
Dernière intervention
21 mars 2007

Bonjour,

Est-ce normal que la syntaxe pour l'insertion d'un réel soit différente de celle pour l'insertion d'un entier??

sql1 = "INSERT INTO stockmagCS120 VALUES ('CS120',#" & Format(date_calcul, "mm/dd/yyyy") & "#," & stock & ")"

Si stock est un réel ça ne marche plus...
Messages postés
7741
Date d'inscription
mercredi 1 septembre 2004
Statut
Membre
Dernière intervention
24 septembre 2014
36
non normalement si les types de variables correspondent ça doit marcher.

Il faut que ton champ dans Access soit déclaré en Réel sinple ou double suivant ce que tu veux. il faut que ta variable Stock corresponde au champ. Single pour un champ réel simple, Double pour un champ réel double.

Il ne doit pas y avoir de soucis.

---- Sevyc64  (alias Casy) ----<hr size="2" width="100%" /># LE PARTAGE EST NOTRE FORCE #
Messages postés
11
Date d'inscription
dimanche 4 février 2007
Statut
Membre
Dernière intervention
21 mars 2007

Nous n'arrivons toujours pas à inserer les valeurs dans la table.

Nous avons créé la table suivante :
sql_create = "Create Table calcul_previsions (date_sortie DATE PRIMARY KEY, Coeff_jour REAL)"
Set rsClient = cn.Execute(sql_create)

La requete d'insertion :
Dim CLun AS Single
sql2 = "INSERT INTO calcul_previsions VALUES (#" & Format(date_boucle1, "mm/dd/yyyy") & "#," & CLun & ");"

Nous avons egalement essayé avec CLun AS Double et Coeff_jour DOUBLE PRECISION

Chaque fois VB nous dit "Le nombre de valeurs dans la requete doit coincider avec le nombre de champs destination"

Nous pensons que cela peut etre dû à une incompatibilité entre les caracteres de separation Access et VB ( un point sous access et une virgule sous vb6) mais on n'arrive pas à le changer

merci d'avance
Messages postés
7741
Date d'inscription
mercredi 1 septembre 2004
Statut
Membre
Dernière intervention
24 septembre 2014
36
Pourtant tes requettes sont correctes. Je les ai essayer sous Access et elles marchent correctement.

Je ne pense pas que ça vienne du point ou de la virgule. Car ils n'intervienne que lorque on utilise la représentation sous forme de chaine du nombre (affichage ou saisie). Ici tout se traite avec nombres eux-mêmes et un nombre sous forme de nombre ne comporte pas de symbole décimal.

A pire va dans les paramètres régionnaux de Windows et modifie le séparateur décimal en "." puis refait un essai pour voir (après avoir relancer VB pour etre sur qu'il a pris en compte le changement).

---- Sevyc64  (alias Casy) ----<hr size="2" width="100%" /># LE PARTAGE EST NOTRE FORCE #
Messages postés
11
Date d'inscription
dimanche 4 février 2007
Statut
Membre
Dernière intervention
21 mars 2007

Nous avons réussi à faire marcher notre requete avec l'instruction:
Dim CLun as Double
CLun = Replace(CStr(CLun), ",", ".")

sql2 = "INSERT INTO calcul_previsions VALUES (#" & Format(date_boucle1, "mm/dd/yyyy") & "#," & CLun & ");"

Si le coefficient CLun est inférieur à 0,1 (avec un 0 après la virgule par ex 0,085), ça ne marche plus....

Merci d'avance