Précédent   Forum du club des développeurs et IT Pro > Bases de données > Sybase > Réplications
Réplications Forum d'entraide sur toutes les formes de réplication de Sybase : Replication Server, replicator, SQL remote, ...
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse
 
Outils de la discussion
Publicité
'
Vieux 16/05/2007, 16h49   #1
Thiazung
Invité de passage
 
Inscription : juillet 2004
Messages : 12
Détails du profil
Informations forums :
Inscription : juillet 2004
Messages : 12
Points : 2
Points : 2
Par défaut VBA QueryDefs Temps de mise à jour

Bonjour à tous !

J'ai un p'tit problème, en fait j'ai une liste, pour chaque élément de cette liste je veux mettre à jour une requête puis lancer un état. L'état étant lié à cette requête.
Code :
1
2
3
4
5
6
7
8
9
WITH .QueryDefs("R_DetailsListe")
    FlexGrid_Res.Col = 0
    Filtres = "Chp1 = '" & FlexGrid_Res & "' "
    FlexGrid_Res.Col = 1
    Filtres = Filtres & "AND Chp2 = '" & FlexGrid_Res & "'"
    .SQL = "SELECT * FROM T_test " & _
            "WHERE " & Filtres & " " & _
    .Close
End WITH
Mon problème est simple, pour certains données la mise à jour ne se fait pas, en gros, lorsque mon application lance l'état la requête est toujours enregistrée avec les données précédentes.
Comment faire pour attendre que la requête soit mise à jour ou pour forcer l'état à taper sur la dernière mise à jour de la requête ?

Merci d'avance pour votre aide

Salutations,

T.
Thiazung est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 01/06/2007, 17h30   #2
Thiazung
Invité de passage
 
Inscription : juillet 2004
Messages : 12
Détails du profil
Informations forums :
Inscription : juillet 2004
Messages : 12
Points : 2
Points : 2
Bonjour à tous, je n'ai toujours pas trouvé de solution à mon problème, alors je cherche encore, mon problème étant que je boucle sur une liste, à chaque élément de cette liste, j'utilise les informations pour mettre à jour une requête via queryDefs, puis j'exécute un état en ayant au préalable modifié l'imprimante par défaut par Acrobat PDFWriter pour que la sortie de l'état se fasse dans un fichier pdf, ce qui pose problème c'est que quelque fois, il manque des informations.
Mon état est composé de plusieurs graphiques, chaque graphique étant lié à une requête, qui est une union d'autres requêtes.
Chacune de ces requêtes étant liées à ma requête filtre mise à jour au début.

Si quelqu'un a une solution à mon problème, je serais très heureux de l'apprendre.

Comme vous pouvez le constater j'essaye d'avoir confirmation que ma requête est bien à jour avant de lancer la sortie du pdf, et j'essaye même de vider la mémoire. Mais ça n'a pas l'air de marcher. Sur les vingts fiches que je dois sortir, il peut y en avoir 2 ou 3 à avoir un graphique vide pour faute de données suffisantes (et un ou deux graphiques sur les six)

Merci d'avance, salutations

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
 
    Dim ws AS Workspace
    ' On déclare l'objet permettant de modifier notre requête
    Dim acApp AS DATABASE
    ' On déclare l'objet permettant l'impression de nos fichiers
    Dim MesEtats As Access.Application
 
    Lbl_Infos.Caption = "L'exportation est en cours, veuillez patienter..."
 
    If CheminUser = "" Then
        CheminUser = bGetRegValue(HKEY_CURRENT_USER, "Software\FD", "CheminFichier")
    End If
 
    For i = 1 To FlexGrid_Res.Rows - 1
 
        Set ws = DBEngine.CreateWorkspace("JetTest", "Admin", "")
        DBEngine.Workspaces.Append ws
        Set acApp = ws.OpenDatabase(BaseMaitre)
 
        FlexGrid_Res.row = i
        Filtres = ""
 
        NomFichier = Format(Date, "yyyymmdd")
 
        With acApp
            With .QueryDefs("R_DetailsListe")
                FlexGrid_Res.Col = 0
                NomFichier = NomFichier & "-" & Trim(FlexGrid_Res)
                Filtres = "Chp1= '" & FlexGrid_Res & "' "
                '.SQL = Replace(.SQL, "[monChp1]", "'" & FlexGrid_Res & "'")
                FlexGrid_Res.Col = 1
                NomFichier = NomFichier & "-" & Trim(FlexGrid_Res)
                Filtres = Filtres & "AND  Chp2 = '" & FlexGrid_Res & "'"
                '.SQL = Replace(.SQL, "[monChp2]", "'" & FlexGrid_Res & "'")
                .SQL = "SELECT TOP 1 [RS] & ' ' & Trim([V]) & ' - ' & [E] AS RaS, 'Situtation ' & LEFT([Semaine],4) & ' à fin semaine ' & RIGHT([Semaine],2) AS Annee, T_RMI.Periode, T_RMI.V, T_RMI.E, 'Édité le ' & Date() AS DateduJour, T_CT.S " & _
                        "FROM T_RMI, T_CT " & _
                        "GROUP BY [RS] & ' ' & Trim([V]) & ' - ' & [E], 'Situtation ' & LEFT([Semaine],4) & ' à fin semaine ' & RIGHT([Semaine],2), T_RMI.Periode, T_RMI.V, T_RMI.E, T_CT.S, T_RMI.Semaine " & _
                        "HAVING (((T_RMI.Periode) = 'h') AND " & Filtres & ") " & _
                        "ORDER BY 'Situtation ' & LEFT([Semaine],4) & ' à fin semaine ' & RIGHT([Semaine],2) DESC , T_RMI.Semaine DESC;"
                .Close
            End With
 
        End With
 
        acApp.Close
 
        Set acApp = Nothing
 
        PauseAppli 3
 
        Connection_base BaseMaitre, con
 
        compteur = 1
        While Not EnAttente
            compteur = compteur + 1
            Set rs = lecture_enregistrement("SELECT V, E FROM R_DetailsListe WHERE " & Filtres, con)
            If Not rs.EOF Then
                EnAttente = True
            End If
        Wend
        Debug.Print "Nombre de tentatives : " & compteur & " pour " & Filtres
 
        fermeture_recordset rs
        fermeture_connection_base con
 
        DBEngine.BeginTrans
        DBEngine.CommitTrans dbForceOSFlush
        DBEngine.Idle dbRefreshCache
 
        Set MesEtats = New Access.Application
        MesEtats.OpenCurrentDatabase BaseMaitre, False
 
        EnAttente = False
 
        Set ImprimanteParDefaut = MesEtats.Printer
        Set MesEtats.Printer = MesEtats.Printers("Acrobat PDFWriter")
 
        bSetRegValue HKEY_CURRENT_USER, "Software\Adobe\Acrobat PDFWriter", "PDFFileName", IIf(CheminUser <> "", IIf(Right(CheminUser, 1) <> "\", CheminUser & "\", CheminUser), CheminDefaut) & NomFichier & ".pdf"
 
        MesEtats.DoCmd.OpenReport "Top20_1", acViewNormal
        MesEtats.DoCmd.Close acReport, "Top20_1", acSaveNo
 
        Set MesEtats.Printer = ImprimanteParDefaut
 
        MesEtats.CloseCurrentDatabase
        MesEtats.Quit acQuitSaveNone
 
        Set MesEtats = Nothing
    Next i
Thiazung est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse
Outils de la discussion

Navigation rapide


Fuseau horaire GMT +2. Il est actuellement 05h14.


 
 
 
 
Partenaires

Hébergement Web