FORUM Tom's Hardware » Programmation » VB / VBA / VBS » Probleme de requete ajout
 

Probleme de requete ajout

Overclocking & Tuning : fifi2191 et 84 utilisateurs inconnus
Ajouter une réponse



 Mot :   Pseudo :  
 
Bas de page
Auteur
 Sujet : Probleme de requete ajout
 
Plus d'informations

Bonjour,
Ma table contient 4champs (année,OPPO, montant et type) et j'ei ai besoin que de la remplir avec trois valeurs que je fais manuellement.
Apperement ma syntaxe n'est pas bonne  

Code :
  1. SQL3 = "INSERT INTO T_stats_global_regroup ( année, montant, type ) SELECT """ & d & """ AS année," & VarA - VarB & " as montant, ""CA_T_20" & d & """ as type FROM Temp;"


Si quelqu'un veut bien me la corriger le je remercie d'avance


Message édité par darkspoilt le 01-06-2007 à 08:58:50

Profil : Pointeur
Plus d'informations

il ?


---------------
Da Bidz Triad©®™: Bidz Interceptor
.:: Smileyz version 4.2 [050625]::. -- Code source disponible sous licence GPL.
[u
Plus d'informations

Voyons voir :  

Code :
  1. SQL3 = "INSERT INTO T_stats_global_regroup ( année, montant, type ) SELECT """ & d & """ AS année," & VarA - VarB & " as montant, 'CA_T_20'""" & d & """ as type FROM Temp;"


 
Ca doit être bon cela ;)


---------------
S'il n'y a pas de solution c'est qu'il n'y pas de problème
Plus d'informations

ce n'est pas exactement cela je pense car tes ' remplace les "" donc j'avais essayé avec les "" mais je vois pas comment faire.

Plus d'informations

Tu concatène CA_T20 et l'année? Oui logique suis je bête :P
 
"INSERT INTO T_stats_global_regroup ( année, montant, type ) SELECT """ & d & """ AS année," & varA - varB & " as montant, 'CA_T_20" & d & "' as type FROM Temp;"
 
Par contre d doit être une chaine de caractère.
par contre varA et varB sont ils des réels ou des entiers?


Message édité par Freeman23 le 01-06-2007 à 09:50:01

---------------
S'il n'y a pas de solution c'est qu'il n'y pas de problème
Plus d'informations

varA et varB sont des Réel mais je compte les convertir en entiers avec la fonction CInt() pendant la requete.

Plus d'informations

Je pense avoir résolu le probleme mais ma table contient 4champs année, OPPO, montant et type j'en ai besoin que d'ajouter des valeurs sur trois des quatre champs que trois.
Mais il me génère une erreur qui me dit " le nombre de valeurs de la requête doit coïncider avec le combre de champs destination."
Sinon a la place d'un SELECT je peux pas utiliser un VALUE ?? si oui quel est la syntaxe??


Message édité par darkspoilt le 01-06-2007 à 10:23:38
Plus d'informations

Justement cette erreur provient surement du fait d'avoir des réels. Car suivant les paramètres linguistique de la machine il se peut que le séparateur des décimaux soit la virgule donc ca pose problème.
 
C'est vrai que le select te sert à rien donc values ca parait mieux.
 
la synthaxe est la même :  

Code :
  1. "INSERT INTO T_stats_global_regroup ( année, montant, type ) VALUES(""" & d & """," & cInt(varA - varB) & ",'CA_T_20" & d & "');"


---------------
S'il n'y a pas de solution c'est qu'il n'y pas de problème
Plus d'informations

Il me met une erreur dépassement de la capacité a quoi correspond t'elle??

Plus d'informations

Problème de type de donnée en général, dans une conversion ou un calcul donc certainement du au calcul de la différence.
varA et varB sont de quels types?


---------------
S'il n'y a pas de solution c'est qu'il n'y pas de problème
Plus d'informations

varA et varB sont de type string (j'ai aussi essayé Double) vu que je les récupère directement depuis Access

Code :
  1. VarA=Range("K12" ).value

(c'est ecrit a la va vite la) et que si justement je les met en integer ca colle pas vu que apparement c'est des doubles
J'ai créer aussi  
 

Code :
  1. Dim varC as Long
  2. varC = CLng(varA - varB)


 
pour me simplifier les choses pourtant mes valeurs dépassent pas le millard


Message édité par darkspoilt le 01-06-2007 à 11:08:48
zeb
Profil : Modérateur libre
Plus d'informations

Bon, on arrête les conneries.

 

Soit le champs OPPO a une valeur par défaut, soit il faut lui en donner une.

 

Création d'une table avec valeur par défaut pour le champ :

Code :
  1. CREATE TABLE table (
  2.     champ1 type ... DEFAULT valeur_par_défaut,
  3.     ...
  4. )
 

Lors d'une requête d'ajour, si aucune valeur n'est précisée pour ce champ, c'est la valeur valeur_par_défaut qui sera affectée.

 

Si la table n'a pas été créée avec des valeurs par défaut, il est toujours possible de faire un ALTER TABLE.

 

Sinon, il faut être exhaustif et donner une valeur à TOUS les champs de la table

Code :
  1. INSERT INTO Table (Champ1, Champ2, .. ChampN) VALUES (Valeur1, Valeur1, Valeur1, .. ValeurN)


Cela ne vous paraît pas logique ?

 

Quand on ne sait pas quoi donner comme valeur à un champ, NULL est une bonne idée.


Message édité par zeb le 01-06-2007 à 11:10:13

---------------
Règlement du forum / Règlement de Programmation / Règlement du Monde de Linux euh, n'y en a pas...
Plus d'informations

j'ai tou mis en double
 
il me met erreur de syntaxe
 

Code :
  1. SQL3 = "INSERT INTO T_stats_global_regroup ( année, montant, type ) VALUE (""" & d & """," & VarC & ", 'CA_T_20" & a & "')"


Plus d'informations

C'est un probleme de conversion maintenant Zeb puisque avec des vairbles en dur cela fonctionne parfaitement
 

Code :
  1. VarA=14 349 840 403,89
  2. VarB=392 936 904,19


 
Donc les deux sont en double et j'aimerais avoir l'arrondi dans VarC
voila tout


Message édité par darkspoilt le 01-06-2007 à 11:27:24
Plus d'informations

Je crois avoir trouvé l'erreur
 

Code :
  1. SQL3 = "INSERT INTO T_stats_global_regroup ( année, montant, type ) VALUE (""" & d & """," & VarC & ", 'CA_T_20" & a & "')"


 
il voit

Code :
  1. SQL3 = "INSERT INTO T_stats_global_regroup ( année, montant, type ) VALUE (" 2007 ", 13504654653,7 , 'CA_T_2007')"


 
ma varC sabs les guillemet ou les cote mais je vois pas la syntaxe


Message édité par darkspoilt le 01-06-2007 à 11:34:29
Plus d'informations

Il me met erreur de syntaxe.  
Je ne comrpends pas et je dois avouer que je suis perdu.
 

Code :
  1. SQL3 = "INSERT INTO T_stats_global_regroup ( année, montant, type ) VALUE (""" & d & """,""" & VarC & """, ""CA_T_20" & a & """ )"

zeb
Profil : Modérateur libre
Plus d'informations

Tu vas arrêter de mettre des guillemets " là où il faut des '.


---------------
Règlement du forum / Règlement de Programmation / Règlement du Monde de Linux euh, n'y en a pas...
Plus d'informations

J'ai trouver l'arrondi
Je voudrais avoir la bonne syntaxe car apparement celle ci n'est pas bonne  
 

Code :
  1. SQL3 = "INSERT INTO T_stats_global_regroup ( année, montant, type ) VALUE ('" & d & "','" & VarC & "', CA_T_20" & a & "')"

Message cité 1 fois
Message édité par darkspoilt le 04-06-2007 à 09:55:26
Plus d'informations

Quand tu calcules la variable tu récupères la partie entière de la valeur avec la fonction Clng() si tu veux arrondir c la fonction round. Fais le dans code avant d'appeler la requête.


---------------
S'il n'y a pas de solution c'est qu'il n'y pas de problème
Plus d'informations

C'est bon pour l'arrondi mais lors de l'exécution il me met qu'il y a une erreur dans la syntaxe et même en mettant des valeurs en dur.

Plus d'informations

C'est juste un probleme en sur j'ai oublier un "S' a "VALUES"

Plus d'informations