ddove53
Messages postés623Date d'inscriptionmardi 20 mars 2007StatutMembreDernière intervention15 juin 2010
-
23 mai 2008 à 10:42
ddove53
Messages postés623Date d'inscriptionmardi 20 mars 2007StatutMembreDernière intervention15 juin 2010
-
23 mai 2008 à 16:20
Slt, je veux recupérer la variable var(k).J'ai mis en rouge ou je veux l'affecter.Pouvez-vous m'aider?
Me.Dat_financeurs.DatabaseName = Bdd
With Me.Dat_financeurs.Recordset
Dim var(1 To 20)
For k = 1 To 20
var(k) = ""
NextSet Me.Dat_financeurs.Recordset Db.OpenRecordset("SELECT Financeur.[Nom Financeur] From Financeur Where (((Financeur.[Ref reseau])" & glob_sres & ")) ORDER BY Financeur.[codeFinanceur]")
Set rs3 = Me.Dat_financeurs.Recordset
rs3.MoveFirst
k = 1
Do Until rs3.EOF
var(k) = rs3![Nom Financeur]
rs3.MoveNext
k = k + 1
sql_glob_rs = "SELECT [Financeurs_OP].[code ot]& '-' & [Financeurs_OP].[libellé] AS Macrotâches, Financeurs_OP.Budget,Financeurs_OP.Fin1 AS [toto " & var(k) & "],((Financeurs_OP.Fin1)*100/Financeurs_OP.Budget) as [Part fin1 en %], Financeurs_OP.Fin2,(Financeurs_OP.Fin1+Financeurs_OP.Fin2)as [Total Montant],(Financeurs_OP.Budget)-(Financeurs_OP.Fin1+Financeurs_OP.Fin2)as [Reste Budget]"
sql_glob_rs = sql_glob_rs & " From Financeurs_OP INNER JOIN Financeur ON Financeur.[Ref reseau]=Financeurs_OP.[Code Sres] WHERE (((Financeurs_OP.[Code Sres])=" & glob_sres & "))"
Me.Dat_financeurs.RecordSource = sql_glob_rs
Renfield
Messages postés17287Date d'inscriptionmercredi 2 janvier 2002StatutModérateurDernière intervention27 septembre 202174 23 mai 2008 à 11:08
tu fais ton k=k+1 avant de te servir de k en lecture, comme indice du tableau var
a voir si l'utilisation d'un tableau est justifiée....
un truc qui me chifonne, également, c'est que tu modifies ton recordset Me.Dat_financeurs.RecordSource pour chaque 'Financeur' , mais cela ne cumule pas les données...
Vous n’avez pas trouvé la réponse que vous recherchez ?
cs_Jack
Messages postés14006Date d'inscriptionsamedi 29 décembre 2001StatutModérateurDernière intervention28 août 201579 23 mai 2008 à 11:10
Salut
C'est pas RenField (déçu ?)
Sur le principe :
Tu fais une requète, puis tu veux utiliser les résultats de cette requète pour en créer une autre. Soit.
Mais une fois que tu as préparé ta nouvelle requète, il faudrait l'exécuter, sinon, elle sera écrasée lors du LOOP suivant !
Ta syntaxe SQL est bizarre.
Comme on n'est pas des profs, mets au propre avant de nous le présenter, on n'est pas très fort en déchiffrage.
Le symbole & ne peut pas être utilisé dans une syntace SQL : Tu as oublié de ressortir de VB ? Que veux-tu faire avec ton symbole '-' en plein milieu ?
Pour une question de lisibilité, utile le symbole _ pour couper une ligne de programme.
Exemple :
sql_glob_rs = _
"SELECT Toto " & _
" From maTable & _
" Where Toto = 'ddove53'"
C'est beaucoup plus facile à lire ET on voit tout de suite les erreurs
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)
ddove53
Messages postés623Date d'inscriptionmardi 20 mars 2007StatutMembreDernière intervention15 juin 2010 23 mai 2008 à 11:26
Pour répondre à jack, non je suis pas déçu (lol) et le symbole '-' permet de mettre un "tiré" entre les mots.
Renfield tu as tout compri c'est ça que j'essaie de faire, mais je n'y arrive pas:
.. | ..... | toto Jean | toto Jack | toto Fred | cumul
ddove53
Messages postés623Date d'inscriptionmardi 20 mars 2007StatutMembreDernière intervention15 juin 2010 23 mai 2008 à 12:15
encore un petit détail:
"[Financeurs_OP].[Fin1] AS [toto " & .Fields(0) & "], " & _ 'là j'ai ma première donnée du champ
"[Financeurs_OP].[Fin2] AS [essai " & .Fields(0) & "], " & _'là j'ai toujours ma première donnée du champ qui est concaténée alors que je veux la deuxième donnée du champ.
??
ddove53
Messages postés623Date d'inscriptionmardi 20 mars 2007StatutMembreDernière intervention15 juin 2010 23 mai 2008 à 12:31
la 1ère ligne de code recupère bien la 1ère donnée du champ.
Au niveau de la 2eme ligne de code, je veux recupérer la 2ème donnée du champ au lieu de la 1ère.
Tu as compris ce que je veux dire?
ddove53
Messages postés623Date d'inscriptionmardi 20 mars 2007StatutMembreDernière intervention15 juin 2010 23 mai 2008 à 12:41
Si tu regarde le code plus haut,
je veux recupérer la 1ère donnée du champ [Non Financeur], ça c'est fait avec le code suivant:
"[Financeurs_OP].[Fin1] AS [toto " & .Fields(0) & "], " & _
aprés je veux recupérer la deuxième donnée du meme champ.
Tu vois ce que je veux dire?
Renfield
Messages postés17287Date d'inscriptionmercredi 2 janvier 2002StatutModérateurDernière intervention27 septembre 202174 23 mai 2008 à 12:52
tu n'emploie pas les bon terme, je ne comprend pas ce que tu cherches a faire.
ta requete ne convient pas, de toute facon. je ne l'ai pas corrigée, je l'ai simplifié visuellement.
pourquoi ne remplis tu pas directement la grille, ce serait plus simple, non ?
ddove53
Messages postés623Date d'inscriptionmardi 20 mars 2007StatutMembreDernière intervention15 juin 2010 23 mai 2008 à 14:24
Si je reprends ce que j'avais dit au début, c'est var(k) que je veux mettre dans
[toto " & .....& "]
pour que la valeur dans le champ [Nom Financeur] change selon la valeur de k.
With Me.Dat_financeurs.Recordset
Dim var(1 To 20)
For k = 1 To 20
var(k) = ""
NextSet Me.Dat_financeurs.Recordset Db.OpenRecordset("SELECT Financeur.[Nom Financeur] From Financeur Where (((Financeur.[Ref reseau])" & glob_sres & ")) ORDER BY Financeur.[codeFinanceur]")
Set rs3 = Me.Dat_financeurs.Recordset
rs3.MoveFirst
k = 1
Do Until rs3.EOF
var(k) = rs3![Nom Financeur]
rs3.MoveNext
k = k + 1
ddove53
Messages postés623Date d'inscriptionmardi 20 mars 2007StatutMembreDernière intervention15 juin 2010 23 mai 2008 à 14:43
c'est ça l'idée: recupération de la 1ère valeur de [Nom Financeur] qui est à la 1ère position et l'affecte à Fin1, recupération de la 2eme valeur de [Nom Financeur] qui est à la 2eme position et l'affecte à Fin1.J'espère que je suis clair.
Me.Dat_financeurs.DatabaseName = Bdd
With Db.OpenRecordset("SELECT [Nom Financeur],[codeFinanceur] " & _
"FROM [Financeur] " & _
"WHERE ([Ref reseau]=" & glob_sres & ") " & _
"ORDER BY [codeFinanceur] ")
Dim tableau(1 To 20)
ReDim Preserve tableau(1 To .RecordCount)
Do Until .EOF
tableau(.AbsolutePosition) = .Fields("Nom Financeur")
.MoveNext
Me.Dat_financeurs.RecordSource = "SELECT [Financeurs_OP].[code ot]& '-' & [Financeurs_OP].[libellé] AS Macrotâches, " & _
"[Financeurs_OP].[Budget], " & _
"[Financeurs_OP].[Fin1] AS [toto " & .AbsolutePosition & "], " & _
"(([Financeurs_OP].[Fin1])*100/[Financeurs_OP].[Budget]) AS [Part fin1 en %], " & _
"[Financeurs_OP].[Fin2] AS [essai " & .AbsolutePosition & "], " & _
"([Financeurs_OP].[Fin1]+[Financeurs_OP].[Fin2]) AS [Total Montant], " & _
"([Financeurs_OP].[Budget])-([Financeurs_OP].[Fin1]+[Financeurs_OP].[Fin2]) As [Reste Budget] " & _
"FROM [Financeurs_OP] INNER JOIN [Financeur] " & _
"ON [Financeur].[Ref reseau]=Financeurs_OP.[Code Sres] " & _
"WHERE ((([Financeurs_OP].[Code Sres])=" & glob_sres & "))"
.MoveNext
Loop
End With