IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

VB 6 et antérieur Discussion :

lenteur avec Data Report


Sujet :

VB 6 et antérieur

  1. #1
    Membre du Club
    Profil pro
    ingénieur bases de données
    Inscrit en
    Juillet 2006
    Messages
    52
    Détails du profil
    Informations personnelles :
    Localisation : Burkina Faso

    Informations professionnelles :
    Activité : ingénieur bases de données

    Informations forums :
    Inscription : Juillet 2006
    Messages : 52
    Points : 53
    Points
    53
    Par défaut lenteur avec Data Report
    Salut tout le monde!

    Voilà, j'ai une base qui tourne sous postgreSQL 8.2.4, qui est accédée via une appli que j'ai développée sous VB6.

    avec l'appli, aucun problème, ça tourne avec un bon débit.


    j'ai des problèmes de lenteur avec mes états (développés avec datareport/data environnement).

    par exemple j'ai un état des ventes qui fait à peut près 20 secondes minimum.
    c est un état maître-détail (donc j'ai un objet commande qui est relié à un autre objet commande fille).

    l'object commande recupère ses données de deux tables (ventes et vendeurs)=> je veux avoir dans l'état, l'information du vendeur. cet objet à aussi un paramètre (numerovente). j'imprime une seule vente à la fois

    l'objet commande fille récupères ses données des tables produits et ventesproduits.


    les deux objets commandes sont reliés par des colonnes (numero et numerovente).


    contenu de la table ventes => à peu près 80 000 enregistrements;
    contenu de la table ventesproduits => à peu près 200 000
    contenu de la table produits => environ 5 000
    contenu de la table vendeurs => 10


    je sais pas si il y a des paramètres que je dois ajuster au niveau du concepteur.

    Merci d'avance pour vos contributions

  2. #2
    Expert éminent
    Avatar de ThierryAIM
    Homme Profil pro
    Inscrit en
    Septembre 2002
    Messages
    3 673
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Secteur : Industrie

    Informations forums :
    Inscription : Septembre 2002
    Messages : 3 673
    Points : 8 524
    Points
    8 524
    Par défaut
    je n'aime pas particulièrement le dataenvironment et je ne connais pas PostgreSQL
    mais une idée, comme ça, en passant : quel type de curseur utilises-tu pour tes datareport : client ou serveur, dynamique, forward ... ?

  3. #3
    Membre du Club
    Profil pro
    ingénieur bases de données
    Inscrit en
    Juillet 2006
    Messages
    52
    Détails du profil
    Informations personnelles :
    Localisation : Burkina Faso

    Informations professionnelles :
    Activité : ingénieur bases de données

    Informations forums :
    Inscription : Juillet 2006
    Messages : 52
    Points : 53
    Points
    53
    Par défaut type de curseur
    Citation Envoyé par ThierryAIM
    je n'aime pas particulièrement le dataenvironment et je ne connais pas PostgreSQL
    mais une idée, comme ça, en passant : quel type de curseur utilises-tu pour tes datareport : client ou serveur, dynamique, forward ... ?


    J'utilise un jeu d'enregistrement en avant seulement (forward only), avec un curseur côté client

  4. #4
    Expert éminent
    Avatar de ThierryAIM
    Homme Profil pro
    Inscrit en
    Septembre 2002
    Messages
    3 673
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Secteur : Industrie

    Informations forums :
    Inscription : Septembre 2002
    Messages : 3 673
    Points : 8 524
    Points
    8 524
    Par défaut
    as-tu testé avec un curseur coté serveur ?
    suivant ta requête, le rapatriement des données vers le client afin d'effectuer la requête peut être long ...

  5. #5
    Membre du Club
    Profil pro
    ingénieur bases de données
    Inscrit en
    Juillet 2006
    Messages
    52
    Détails du profil
    Informations personnelles :
    Localisation : Burkina Faso

    Informations professionnelles :
    Activité : ingénieur bases de données

    Informations forums :
    Inscription : Juillet 2006
    Messages : 52
    Points : 53
    Points
    53
    Par défaut
    Citation Envoyé par ThierryAIM
    as-tu testé avec un curseur coté serveur ?
    suivant ta requête, le rapatriement des données vers le client afin d'effectuer la requête peut être long ...

    OK. J 'essaie et je te tiens au courant.

    Thanks!

  6. #6
    Membre du Club
    Profil pro
    ingénieur bases de données
    Inscrit en
    Juillet 2006
    Messages
    52
    Détails du profil
    Informations personnelles :
    Localisation : Burkina Faso

    Informations professionnelles :
    Activité : ingénieur bases de données

    Informations forums :
    Inscription : Juillet 2006
    Messages : 52
    Points : 53
    Points
    53
    Par défaut Lenteur dataReport
    Citation Envoyé par mkiba
    J'utilise un jeu d'enregistrement en avant seulement (forward only), avec un curseur côté client



    J obtiens les mêmes temps de réponse avec un curseur côté serveur.

  7. #7
    Membre du Club
    Profil pro
    ingénieur bases de données
    Inscrit en
    Juillet 2006
    Messages
    52
    Détails du profil
    Informations personnelles :
    Localisation : Burkina Faso

    Informations professionnelles :
    Activité : ingénieur bases de données

    Informations forums :
    Inscription : Juillet 2006
    Messages : 52
    Points : 53
    Points
    53
    Par défaut Solution lenteur data report
    Salut à tous!


    J ai trouvé la solution à mon problème, du moins en partie (pour les états simples et maître-détails à un niveau).

    Voici le code. j'ai adapté un code du forum.


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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
    Dim rst As ADODB.Recordset
        
        Set rst = cnn1.Execute("SELECT v.date_vente, TO_CHAR(v.montant, 'FM999 999 999 999 999 999')||' F CFA' as montant," _
        & " v.numero, v.reduction||' %' as reduction, v.soldee," _
        & " (u.prenom||' '||u.nom) as Vendeur" _
        & " FROM ventes v INNER JOIN utilisateurs u ON v.vendeur = u.numero" _
        & " WHERE v.numero=" & id & ";")
    
        If Not rst.EOF Then
            With rptDetailVenteDup
                .Hide
                With .Sections("maitre").Controls
                    .Item("lblNumero").Caption = rst("numero")
                    .Item("lblDate").Caption = rst("date_vente")
                    .Item("lblReduction").Caption = rst("reduction")
                    .Item("lblMontant").Caption = rst("montant")
                End With
            End With
            rst.Close
    
            Set rst = cnn1.Execute("SELECT p.libelle, vp.quantite, vp.prixVente, vp.numeroVente," _
            & " ((1+vp.bic/100::numeric(8, 2))*(1+vp.taxe/100::numeric(8, 2))*(vp.quantite * vp.prixVente)) AS Montant," _
            & " vp.taxe/100::numeric(8, 2) as tva, vp.bic/100::numeric(8, 2) as bic" _
            & " FROM ventesProduits vp INNER JOIN produits p ON vp.numeroProduit = p.numero" _
            & " WHERE vp.numerovente=" & id & ";")
            With rptDetailVenteDup
                .Hide
                Set .DataSource = rst
                .DataMember = ""
                With .Sections("detail").Controls
                    .Item("txtlibelle").DataMember = ""
                    .Item("txtlibelle").DataField = "libelle"
    
                    .Item("txtprixvente").DataMember = ""
                    .Item("txtprixvente").DataField = "prixvente"
    
                    .Item("txtquantite").DataMember = ""
                    .Item("txtquantite").DataField = "quantite"
    
                    .Item("txttaxe").DataMember = ""
                    .Item("txttaxe").DataField = "taxe"
    
                    .Item("txtbic").DataMember = ""
                    .Item("txtbic").DataField = "bic"
    
                    .Item("txtmt").DataMember = ""
                    .Item("txtmt").DataField = "montant"
               End With
               .Refresh
               .Show
               rst.Close
            End With
        End If


    Le principe est que je rempli le data report dans le code.
    Vous pouvez sauver des lignes de code, enb supprimant la partie en rouge et en renseigant directement les propriétés DataField des zones de texte de la section détail de votre data report (c'est ce que j'ai fait).
    Bonne soirée à tous

Discussions similaires

  1. Insertion d'un numéro d'ordre Data report avec Visual Basic 6.0
    Par Limpasse Creative dans le forum Basic
    Réponses: 0
    Dernier message: 26/01/2015, 18h45
  2. [VB.NET] [CR] Probléme avec Crystal Report.
    Par Silvia12 dans le forum Windows Forms
    Réponses: 3
    Dernier message: 15/03/2005, 15h18
  3. Calcul d'un total avec Rave Report
    Par webbulls dans le forum Bases de données
    Réponses: 2
    Dernier message: 19/05/2004, 14h46
  4. grave prob avec rave report et delphi7
    Par kitana dans le forum Bases de données
    Réponses: 4
    Dernier message: 18/05/2004, 22h21
  5. [Débutant] Lenteur avec TComPort
    Par PhDt76 dans le forum C++Builder
    Réponses: 22
    Dernier message: 27/09/2003, 22h43

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo