Se connecter avec
S'enregistrer | Connectez-vous

Probleme de requete ajout

Dernière réponse : dans Programmation

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
  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

Autres pages sur : probleme requete ajout

Lassé par la pub ? Créez un compte

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?

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??

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 :
  1. "INSERT INTO T_stats_global_regroup ( année, montant, type ) VALUES(""" & d & """," & cInt(varA - varB) & ",'CA_T_20" & d & "');"

varA et varB sont de type string (j'ai aussi essayé Double) vu que je les récupère directement depuis Access
  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

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


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

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 :
  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
  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.

Je crois avoir trouvé l'erreur

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


il voit
  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

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

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


Ben il faut pas de ' autour de ton numérique.
Par contre Zeb pour des chaines de caractères il vaut mieux utiliser cette notation """ & d & """ plutot que celle ci '" & d & "', car si ta chaine contient une apostrophe ta requête plante.
Expert Programmation

Utilise la fonction DoubleForSQL qui transforme un double en chaîne de caractères, avec comme séparateur le point :o 

Hein, elle n'existe pas ? Mais si :

  1. Function DoubleForSQL(n As Double) As String
  2. Dim s As String
  3. Dim v As Integer
  4.  
  5. s = CStr(n)
  6. v = InStr(s, ",")
  7. If v > 0 Then Mid(s, v, 1) = "."
  8. DoubleForSQL = s
  9. End Function
Expert Programmation

Arghhhhhhhhh.

Freeman, tu vas me copier 100 fois "Je respecte le langage SQL".
La norme SQL dit qu'il faut des ', donc il faut mettre des '. Et si le contenu contient une ', il faut la doubler.

En plus, que se passe-t'il avec ta soluce s'il y a un " dans le contenu. CA PLANTE !!!!

Alors, ' + doublage des '.
Lassé par la pub ? Créez un compte