Base de données access

[Résolu]
Signaler
Messages postés
623
Date d'inscription
mardi 20 mars 2007
Statut
Membre
Dernière intervention
15 juin 2010
-
Messages postés
623
Date d'inscription
mardi 20 mars 2007
Statut
Membre
Dernière intervention
15 juin 2010
-
Slt,
j'ai essayé de faire une requete avec "PIVOT" pour transformer des
lignes en colonnes mais j'ai une erreur.Pouvez-vous m'aider?
Voici ma requete:
sql_glob_rs = "TRANSFORM Sum([Financeurs macrotache].[Montant Financeur]) AS [SommeDeMontant Financeur]"
sql_glob_rs
= sql_glob_rs & "SELECT [Financeurs macrotache].[Ref reseau],
[Financeurs macrotache].[Code OT], [Financeurs macrotache].LibOT"
sql_glob_rs = sql_glob_rs & "From [Financeurs macrotache]"sql_glob_rs sql_glob_rs & "Where ((([Financeurs macrotache].[Ref reseau]) 3))"
sql_glob_rs
= sql_glob_rs & " GROUP BY [Financeurs macrotache].[Ref reseau],
[Financeurs macrotache].[Code OT], [Financeurs macrotache].LibOT"
sql_glob_rs = sql_glob_rs & "PIVOT [Financeurs macrotache].[Nom Financeur];"
Me.Dat_financeurs1.RecordSource = sql_glob_rs
Me.Dat_financeurs1.Refresh
Me.Financeurs1.MaxRows = Me.Dat_financeurs1.Recordset.RecordCount

5 réponses

Messages postés
14008
Date d'inscription
samedi 29 décembre 2001
Statut
Modérateur
Dernière intervention
28 août 2015
80
Salut
Je ne connais pas la fonction TRANSFORM en SQL; je ne pourrait donc pas te dire si cette syntaxe est correcte programmaticalement parlant.

Une chose me saute aux yeux : Dans ta syntaxe, tu écris :
   Var = "toto"
   Var = Var & "juju"
Cette ligne va donner la chaine "totojuju" sans espace !
Donc, insère un espace à la fin de chaque ligne, sinon SQL ne saura pas reconnaitre la syntaxe.

Pour te simplifier la vie, utilise plutôt le symbole de coupure de ligne programme _ en fin de ligne plutôt que de rappeler la variable à chaque fois :
   Var = "toto " & _
         "juju " & _
         "kiki "
Seule restriction : On n'a le droit qu'à 25 _ par ligne de commande (suffisant, en général)

+ Evite les surcharges inutiles de parenthèses (dans le Where), ça rend difficile la lecture + risque d'erreur.
+ Dans la mesure où tu ne travailles qu'avec une seule table, tu n'es pas obligé de rappeler son nom devant chaque champ : ça allège la syntaxe

Ta syntaxe corrigée et remise en forme devrait donner :
sql_glob_rs = _
   "TRANSFORM Sum([Montant Financeur]) AS [SommeDeMontant Financeur] " & _
   "SELECT [Ref reseau], " & _
   "       [Code OT], " & _
   "       LibOT " & _
   "  From [Financeurs macrotache] " & _
   " Where [Ref reseau] = 3 " & _
   " GROUP BY [Ref reseau], " & _
   "          [Code OT], " & _
   "          LibOT " & _
   " PIVOT [Nom Financeur];"

Vala
Jack, MVP VB
NB : Je ne répondrai pas aux messages privés

<hr />Le savoir est la seule matière qui s'accroit quand on la partage (Socrate)
Messages postés
623
Date d'inscription
mardi 20 mars 2007
Statut
Membre
Dernière intervention
15 juin 2010

Merci, c'est bien ce que je voulais.
Messages postés
623
Date d'inscription
mardi 20 mars 2007
Statut
Membre
Dernière intervention
15 juin 2010

j'ai une autre question par rapport à cette meme requete.Dans mon vaSpread mes données s'affichent comme je veux mais si j'écris une valeur par exemple dans mon vaSpread, la valeur ne s'enrégistre pas dans ma table (base de données).
Pouvez-vous me dire pourquoi?
Voici ce que j'ai fait:
sql_glob_rs = _
  "TRANSFORM Sum([Montant Financeur]) AS [Montant/Financeur] " & _
   "SELECT [Ref reseau]& '-' & [Code OT] & '-' & LibOT as Macrotaches " & _
   "  From [Financeurs macrotache] " & _
   " Where [Ref reseau] = " & glob_sres & _
   " GROUP BY [Ref reseau], " & _
   "          [Code OT], " & _
   "          LibOT " & _
   " PIVOT [Nom Financeur];"
  
Me.Dat_financeurs1.RecordSource = sql_glob_rs
Me.Dat_financeurs1.Refresh
Me.Financeurs1.MaxRows = Me.Dat_financeurs1.Recordset.RecordCount
Messages postés
14008
Date d'inscription
samedi 29 décembre 2001
Statut
Modérateur
Dernière intervention
28 août 2015
80
Re
vaSpread : connais pô.
Tu es sûr d'être sous VB6 ou plutôt sous le VBA de Access, non ?
Dans ce cas, désolé, connais pas assez Access

Vala
Jack, MVP VB
NB : Je ne répondrai pas aux messages privés

<hr />Le savoir est la seule matière qui s'accroit quand on la partage (Socrate)
Messages postés
623
Date d'inscription
mardi 20 mars 2007
Statut
Membre
Dernière intervention
15 juin 2010

vaSpread c comme Datagrid.