Recupération de variables

Résolu
ddove53 Messages postés 623 Date d'inscription mardi 20 mars 2007 Statut Membre Dernière intervention 15 juin 2010 - 23 mai 2008 à 10:42
ddove53 Messages postés 623 Date d'inscription mardi 20 mars 2007 Statut Membre Dernière intervention 15 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

    Loop
End With

Me.Dat_financeurs.Refresh
Me.Financeurs.MaxRows = Me.Dat_financeurs.Recordset.RecordCount

25 réponses

Renfield Messages postés 17287 Date d'inscription mercredi 2 janvier 2002 Statut Modérateur Dernière intervention 27 septembre 2021 74
23 mai 2008 à 11:17
nettoyé, ton code actuel (erronné) est :

Me.Dat_financeurs.DatabaseName = Bdd
With Db.OpenRecordset("SELECT [Nom Financeur],[codeFinanceur] " & _
"FROM [Financeur] " & _
"WHERE ([Ref reseau]=" & glob_sres & ") " & _
"ORDER BY [codeFinanceur] ")
Do Until .EOF
Me.Dat_financeurs.RecordSource= "SELECT [Financeurs_OP].[code ot]& '-' & [Financeurs_OP].[libellé] AS Macrotâches, " & _
"[Financeurs_OP].[Budget], " & _
"[Financeurs_OP].[Fin1] AS [toto " & .Fields(0) & "], " & _
"(([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] "
"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

Me.Dat_financeurs.Refresh
Me.Financeurs.MaxRows = Me.Dat_financeurs.Recordset.RecordCount
3
Renfield Messages postés 17287 Date d'inscription mercredi 2 janvier 2002 Statut Modérateur Dernière intervention 27 septembre 2021 74
23 mai 2008 à 15:53
si tu veux nommer
Fin1 "toto Albert"
et
Fin2 "essai Jean"


ou Albert et Jean son le nom des deux premiers financeurs


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
sNom1 = .Fields("Nom Financeur")
.MoveNext
sNom2 = .Fields("Nom Financeur")

Me.Dat_financeurs.RecordSource = "SELECT [Financeurs_OP].[code ot]& '-' & [Financeurs_OP].[libellé] AS Macrotâches, " & _
"[Financeurs_OP].[Budget], " & _
"[Financeurs_OP].[Fin1] AS [toto " & sNom1& "], " & _
"(([Financeurs_OP].[Fin1])*100/[Financeurs_OP].[Budget]) AS [Part fin1 en %], " & _
"[Financeurs_OP].[Fin2] AS [essai " & sNom2 & "], " & _
"([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

Me.Dat_financeurs.Refresh
Me.Financeurs.MaxRows = Me.Dat_financeurs.Recordset.RecordCount

---------------------


Après, je vais retenter une question que tu évites a chaque fois:

Pourquoi ne remplis tu pas ta grille par toi même, en remplissant chaque case par toi même.
3
ddove53 Messages postés 623 Date d'inscription mardi 20 mars 2007 Statut Membre Dernière intervention 15 juin 2010
23 mai 2008 à 10:56
Renfield?
0
Renfield Messages postés 17287 Date d'inscription mercredi 2 janvier 2002 Statut Modérateur Dernière intervention 27 septembre 2021 74
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...
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
cs_Jack Messages postés 14006 Date d'inscription samedi 29 décembre 2001 Statut Modérateur Dernière intervention 28 août 2015 79
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)
0
Renfield Messages postés 17287 Date d'inscription mercredi 2 janvier 2002 Statut Modérateur Dernière intervention 27 septembre 2021 74
23 mai 2008 à 11:15
je crois que tu tentes de faire

... | ..... | toto Jean | toto Jack | toto Fred | cumul
-----------------------------------------
0
ddove53 Messages postés 623 Date d'inscription mardi 20 mars 2007 Statut Membre Dernière intervention 15 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
0
ddove53 Messages postés 623 Date d'inscription mardi 20 mars 2007 Statut Membre Dernière intervention 15 juin 2010
23 mai 2008 à 11:29
excuz renfield on a posté en mm tps.Je vais essayé ce que tu me donnes.
0
ddove53 Messages postés 623 Date d'inscription mardi 20 mars 2007 Statut Membre Dernière intervention 15 juin 2010
23 mai 2008 à 11:39
Les gars, vous etes les meilleurs.Encore merci Renfield et Jack.
Merci de ta patiente Renfield.
ça fait des jours que je cherche.
0
Renfield Messages postés 17287 Date d'inscription mercredi 2 janvier 2002 Statut Modérateur Dernière intervention 27 septembre 2021 74
23 mai 2008 à 11:41
te faut UNE seule requete....
là, t'as une boucle qui ecrase les valeurs les unes après les autres.

plus simple de remplir la grille toi même que de faire ton Bind
0
ddove53 Messages postés 623 Date d'inscription mardi 20 mars 2007 Statut Membre Dernière intervention 15 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.
??
0
Renfield Messages postés 17287 Date d'inscription mercredi 2 janvier 2002 Statut Modérateur Dernière intervention 27 septembre 2021 74
23 mai 2008 à 12:25
pardon ?
0
ddove53 Messages postés 623 Date d'inscription mardi 20 mars 2007 Statut Membre Dernière intervention 15 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?
0
Renfield Messages postés 17287 Date d'inscription mercredi 2 janvier 2002 Statut Modérateur Dernière intervention 27 septembre 2021 74
23 mai 2008 à 12:37
tu est fort pour te paraphraser ^^
de quelle "première donnée" et "deuxièeme donnée" parles-tu

de quel champ ?
0
ddove53 Messages postés 623 Date d'inscription mardi 20 mars 2007 Statut Membre Dernière intervention 15 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?
0
Renfield Messages postés 17287 Date d'inscription mercredi 2 janvier 2002 Statut Modérateur Dernière intervention 27 septembre 2021 74
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 ?
0
ddove53 Messages postés 623 Date d'inscription mardi 20 mars 2007 Statut Membre Dernière intervention 15 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
           
Me.Dat_financeurs.Refresh
Me.Financeurs.MaxRows = Me.Dat_financeurs.Recordset.RecordCount
Me.Dat_financeurs.Refresh

With Db.OpenRecordset("SELECT [Nom Financeur],[codeFinanceur] " & _
                      "FROM [Financeur] " & _
                      "WHERE ([Ref reseau]=" & glob_sres & ") " & _
                     ORDER BY [codeFinanceur] ")
                
   'Do Until .EOF

       Me.Dat_financeurs.RecordSource = "SELECT [Financeurs_OP].[code ot]& '-' & [Financeurs_OP].[libellé] AS Macrotâches, " & _
                                          "[Financeurs_OP].[Budget], " & _
                          "[Financeurs_OP].[Fin1] AS [toto " & .Fields(0) & "], " & _   "(([Financeurs_OP].[Fin1])*100/[Financeurs_OP].[Budget]) AS [Part fin1 en %], " & _
                                  "[Financeurs_OP].[Fin2] AS [essai " & .Fields(0) & "], " & _
       "([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

''Me.Dat_financeurs.Refresh
''Me.Financeurs.MaxRows = Me.Dat_financeurs.Recordset.RecordCount
0
Renfield Messages postés 17287 Date d'inscription mercredi 2 janvier 2002 Statut Modérateur Dernière intervention 27 septembre 2021 74
23 mai 2008 à 14:26
le nom du deuxieme representant ?
0
ddove53 Messages postés 623 Date d'inscription mardi 20 mars 2007 Statut Membre Dernière intervention 15 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

Me.Dat_financeurs.Refresh
Me.Financeurs.MaxRows = Me.Dat_financeurs.Recordset.RecordCount
0
ddove53 Messages postés 623 Date d'inscription mardi 20 mars 2007 Statut Membre Dernière intervention 15 juin 2010
23 mai 2008 à 15:59
sisi, ce que je faits la c'est juste l'affichage au niveau de mon spread.Aprés je vais insérer des données dans mes tables à partir de mon vaspread.
0
Rejoignez-nous