Précédent   Forum des professionnels en informatique > Logiciels > Microsoft Office > Access > VBA Access
VBA Access Le forum pour les questions relatives au code VBA sous Access, et à son environnement de développement VBE.
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 04/07/2011, 10h08   #1
Membre du Club
 
Inscription : octobre 2005
Messages : 304
Détails du profil
Informations forums :
Inscription : octobre 2005
Messages : 304
Points : 59
Points : 59
Par défaut Chiffre décimal, virgule et point

Bonjour,je fais une appli qui travaille avec des fichiers excel qui contiennent des données numériques décimales.
Sur mon poste tout se passe bien l'appli fonctionne, par contre je l'ai testé sur un autre poste et la ça plante sur une requete à cause de la virgule dans le chiffre.
Explication, sur mon poste les options de configuration font que les chiffres s'affichent avec un point (la pas de probleme). Sur le poste qui pose probleme les chiffres s'affichent avec une virgule et la requete considère que c'est la fin d'un champs donc ça plante....
Qu'est ce que je dois faire ? je ne vais pas demander aux utilisateurs de changer leur options d'affichage des chiffres ? Donc je sais pas trop. Merci de votre aide.
_developpeur_ est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 04/07/2011, 17h52   #2
Rédacteur
 
Avatar de LedZeppII
 
Homme
Maintenance données produits
Inscription : décembre 2005
Messages : 3 939
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France, Yvelines (Île de France)

Informations professionnelles :
Activité : Maintenance données produits
Secteur : Distribution

Informations forums :
Inscription : décembre 2005
Messages : 3 939
Points : 6 278
Points : 6 278
Bonjour,

En SQL le séparateur décimal est le point.
J'utilise la fonction VBA Str pour convertir les nombres à virgules, en chaînes de caractères.
Str converti en mettant un point comme séparateur décimal.

A+
LedZeppII est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 04/07/2011, 21h12   #3
Membre du Club
 
Inscription : octobre 2005
Messages : 304
Détails du profil
Informations forums :
Inscription : octobre 2005
Messages : 304
Points : 59
Points : 59
Citation:
Envoyé par LedZeppII Voir le message
Bonjour,

En SQL le séparateur décimal est le point.
J'utilise la fonction VBA Str pour convertir les nombres à virgules, en chaînes de caractères.
Str converti en mettant un point comme séparateur décimal.

A+
Bonjour, merci pour ta réponse. Ce qui me semble louche c'est qu'on converti un chiffre en cahine de caractere alors que dans la table ce chiffre va dans un champs de type numérique, ça pose pas de problème ? Je suppose que non puisque tu me le dis.
_developpeur_ est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 05/07/2011, 18h07   #4
Rédacteur
 
Avatar de LedZeppII
 
Homme
Maintenance données produits
Inscription : décembre 2005
Messages : 3 939
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France, Yvelines (Île de France)

Informations professionnelles :
Activité : Maintenance données produits
Secteur : Distribution

Informations forums :
Inscription : décembre 2005
Messages : 3 939
Points : 6 278
Points : 6 278
Bonjour,
Citation:
Envoyé par _developpeur_ Voir le message
Bonjour, merci pour ta réponse. Ce qui me semble louche c'est qu'on converti un chiffre en cahine de caractere alors que dans la table ce chiffre va dans un champs de type numérique, ça pose pas de problème ? Je suppose que non puisque tu me le dis.
Je ne sais pas exactement ce que tu fais, mais tu parles de problème au niveau d'une requête.
Une requête est une instruction SQL, et cette instruction est du texte.
Comme en VBA, il y a des conventions pour typer les valeurs :
Le point comme séparateur décimal pour les valeurs numériques.
Les dates encadrées par des dièses (#) et au format mois/jour/année.
Les chaînes de caractères encadrées par des guillemets doubles ou simples.
True/False ou -1/0 pour les valeurs booléennes.

A+
LedZeppII est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 07/07/2011, 10h04   #5
Membre du Club
 
Inscription : octobre 2005
Messages : 304
Détails du profil
Informations forums :
Inscription : octobre 2005
Messages : 304
Points : 59
Points : 59
Citation:
Envoyé par LedZeppII Voir le message
Bonjour,

Je ne sais pas exactement ce que tu fais, mais tu parles de problème au niveau d'une requête.
Une requête est une instruction SQL, et cette instruction est du texte.
Comme en VBA, il y a des conventions pour typer les valeurs :
Le point comme séparateur décimal pour les valeurs numériques.
Les dates encadrées par des dièses (#) et au format mois/jour/année.
Les chaînes de caractères encadrées par des guillemets doubles ou simples.
True/False ou -1/0 pour les valeurs booléennes.

A+
Bonjour,
exemple :
Code :
1
2
3
4
5
 
dim sql as string
dim somme as integer
 
sql="INSERT INTO Table ('Somme') VALUES (" & somme & ")"
Le champs somme dans la table est de type numérique. C'est pour ça que je ne met pas de cote:
Code :
1
2
 
sql="INSERT INTO Table ('Somme') VALUES ('" & somme & "')"
Si je fais ça :
Code :
1
2
 
sql="INSERT INTO Table ('Somme') VALUES (" & Cstr(somme) & ")"
Je convertis une variable de type numérique en chaine alors que somme dans la table est de type numérique, c'est cela que je ne comprends pas en fait ?

Merci
_developpeur_ est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 07/07/2011, 18h41   #6
Rédacteur
 
Avatar de LedZeppII
 
Homme
Maintenance données produits
Inscription : décembre 2005
Messages : 3 939
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France, Yvelines (Île de France)

Informations professionnelles :
Activité : Maintenance données produits
Secteur : Distribution

Informations forums :
Inscription : décembre 2005
Messages : 3 939
Points : 6 278
Points : 6 278
Bonjour,
Citation:
Envoyé par _developpeur_ Voir le message
Je convertis une variable de type numérique en chaine alors que somme dans la table est de type numérique, c'est cela que je ne comprends pas en fait
Tu es dans le cas de figure instruction SQL. Du texte.
D'ailleurs ta variable sql est typée texte (type String).

Tu peux faire l'essai sur un PC configuré avec la virgule comme séparateur décimal.
Tu crée ta requête avec Access avec une valeur numérique 123,456.
Puis tu changes le mode d'affichage en mode SQL.
Tu verra que dans l'instruction SQL (qui est du texte) la virgule est remplacée par un point (123.456).
Tu changes à nouveau le mode d'affichage en mode création.
La virgule est toujours là (123,456).

A+
LedZeppII est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 08/07/2011, 13h16   #7
Membre du Club
 
Inscription : octobre 2005
Messages : 304
Détails du profil
Informations forums :
Inscription : octobre 2005
Messages : 304
Points : 59
Points : 59
Citation:
Envoyé par LedZeppII Voir le message
Bonjour,

Tu es dans le cas de figure instruction SQL. Du texte.
D'ailleurs ta variable sql est typée texte (type String).

Tu peux faire l'essai sur un PC configuré avec la virgule comme séparateur décimal.
Tu crée ta requête avec Access avec une valeur numérique 123,456.
Puis tu changes le mode d'affichage en mode SQL.
Tu verra que dans l'instruction SQL (qui est du texte) la virgule est remplacée par un point (123.456).
Tu changes à nouveau le mode d'affichage en mode création.
La virgule est toujours là (123,456).

A+
merci, j'ai implémenté le st(chiffre) a chaque fois que je travaille avec des chiffres qui peuvent contenir des virgules, je l'ai fait au moment de construire ma requete, et la virgule est bien remplacé par un point.
Merci
_developpeur_ est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 23h08.


 
 
 
 
Partenaires

Hébergement Web