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 :

Crystal report & VB Problème d'édition d'état


Sujet :

VB 6 et antérieur

  1. #1
    Membre habitué Avatar de Sytchev3
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    433
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2005
    Messages : 433
    Points : 137
    Points
    137
    Par défaut Crystal report & VB Problème d'édition d'état
    Pour imprimer un état crystal report (se remplissant à partir d'une base de données sql server) à partir de vb j'utilise cette procédure et le composant CRVIEWER :

    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
    54
    55
     
    Public Sub editer(ByVal nomChemin As String, ByVal unForm As Form, ByVal uneTable As String, ByVal interv As Boolean)
     
     
    Dim rptReport As New CRAXDRT.Report
    Dim rptRepApp As New CRAXDRT.Application
    Dim rtpViews As CRAXDRT.DatabaseTable
    Dim rstControle As New ADODB.Recordset
     
     
    rstControle.Open "select * from ED_CONTROLE", gConserver
     
    If rstControle("CONTROLE") = 1 Then
     
        Set rptRepApp = New CRAXDRT.Application
        Set rptReport = New CRAXDRT.Report
     
     
        With unForm.apercu
     
        Set rptReport = rptRepApp.OpenReport(App.Path & "\Etats\" & nomChemin, 1)
     
        .ReportSource = rptReport
        .ViewReport
     
     
        End With
     
        rptReport.Database.AddOLEDBSource sChaineConnexion, uneTable
     
        If interv = True Then
     
        rptReport.Database.AddOLEDBSource sChaineConnexion, "ED_INTERVENANT"
     
        End If
     
     
     
        unForm.Top = 0
        unForm.Left = 0
        unForm.Width = Screen.Width - 850
        unForm.Height = Screen.Height - 1200
        unForm.apercu.Top = 0
        unForm.apercu.Left = 0
        unForm.apercu.Width = unForm.Width
        unForm.apercu.Height = unForm.Height
        unForm.apercu.EnableGroupTree = False
     
    rptReport.DiscardSavedData
     
     
    End If
     
     
     End Sub
    Mais j'ai un gros problème, le composant Crystal report Viewer me renvoie une erreur : Logon failed Details ADO error Code 0x80040e4d Source : Microsoft OLE DB... for sql server Description : login failed for user 'sa' SQL State 42000
    Netive Error : 18456, mais je ne vois vraiment d'ou vien le soucis. Si quelqu'un a une idée ou peut m'aider je lui serait grandement reconnaissant.

    Merci d'avance

  2. #2
    Membre éclairé
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    730
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2006
    Messages : 730
    Points : 876
    Points
    876
    Par défaut
    Salut,

    je n'utilise pas .Database.AddOLEDBSource , je ne suis pas sûr de pouvoir t'aider donc, mais qu'en est-il de ta chaîne de connexion sChaineConnexion ? Tu es sûr de tes valeurs ? Et cet user 'sa' ? Il existe bien et possède les doits adéquats dans ta base ?

  3. #3
    Membre habitué Avatar de Sytchev3
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    433
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2005
    Messages : 433
    Points : 137
    Points
    137
    Par défaut
    Si tu as une autre solution à me proposer n'hésite pas, je suis preneur, je suis sur de la chaine de connexion :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Provider=sqloledb.1;Data Source=SRVCOMPTA;Initial Catalog=SMS;User Id=sa;Password=admin;Persist Security Info=True;
    puisque je l'utilise dans mon application avec des jeux d'enregistrements...
    L'utilisateur sa existe puisque c'est le super administrateur de sql server.

    Mais comment t'y prends tu pour remplir les états en ce qui te concerne ???

  4. #4
    Membre éclairé
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    730
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2006
    Messages : 730
    Points : 876
    Points
    876
    Par défaut
    Suivant la complexité des états, je génére une petite base au format Accès en local, comprenant une ou plusieurs tables pré-formatées, que je lie ensuite avec la propriété Report.Database.Tables(Index).Location

    Edit : J'ai laissé tombé la connexion dynamique, cela me posait trop de problèmes, je n'ai jamais réussi à la faire marcher correctement (suivant les cas de figure)

  5. #5
    Membre habitué Avatar de Sytchev3
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    433
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2005
    Messages : 433
    Points : 137
    Points
    137
    Par défaut
    Aurais tu un exemple à me faire parvenir qui utilise la propriété Report.Database.Tables(Index).Location . De plus il y a plusieurs tables dans mon état. ta solution me permettrait donc de la faire.

  6. #6
    Membre éclairé
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    730
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2006
    Messages : 730
    Points : 876
    Points
    876
    Par défaut
    Ben, ça ne marchera pas avec ta base, il n'y a pas d'emplacement physique comme pour une base de type fichier mais une chaîne de connexion.

    Je fais comme ça donc :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Set CRrep = CRapp.OpenReport(chemin_reports & "mon_report.rpt")
        '
    CRrep.Database.Tables(1).Location = chemin_base & "mabase.mdb"
    Si il y a plusieurs tables, je boucle sur l'index de Tables, tout simplement

  7. #7
    Membre habitué Avatar de Sytchev3
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    433
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2005
    Messages : 433
    Points : 137
    Points
    137
    Par défaut
    En utilisant cette procédure, l'état est visible sans que cela me génère d'erreur mais les données affichées ne correspondent pas à ce qui ce trouve dans la base mais aux données précédentes. peut être y a til une erreur ou manque t'il quelquechose.

    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
     
    Public Sub editer(ByVal nomChemin As String, ByVal unForm As Form, ByVal uneTable As String, ByVal interv As Boolean)
     
      Dim CrAppl As New CRAXDRT.Application
      Dim CrRep As New CRAXDRT.Report
      Dim AdoRs As New ADODB.Recordset
      Dim rstControle As New ADODB.Recordset
     
     rstControle.Open "select * from ED_CONTROLE", gConserver
     
     If rstControle("CONTROLE") = 1 Then
     
      'Selection des données (La requête doit être la même que la requête du rapport en ado)
      AdoRs.Open " SELECT * from " & uneTable, gConserver, adOpenStatic, adLockReadOnly
     
      Set CrRep = CrAppl.OpenReport(App.Path & "\Etats\" & nomChemin)
     
      Sleep 500
     
      CrRep.Database.Tables(1).SetDataSource AdoRs, 3
      Screen.MousePointer = vbHourglass
      unForm.apercu.ReportSource = CrRep
       unForm.apercu.ViewReport
      Screen.MousePointer = vbDefault
     
     
      'Plein écran
       unForm.Top = 0
       unForm.Left = 0
       unForm.Width = Screen.Width
       unForm.Height = Screen.Height - 400
       unForm.apercu.Top = 0
       unForm.apercu.Left = 0
       unForm.apercu.Width = unForm.Width
       unForm.apercu.Height = unForm.Height
     
     End If
     
      End Sub

  8. #8
    Membre habitué Avatar de Sytchev3
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    433
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2005
    Messages : 433
    Points : 137
    Points
    137
    Par défaut
    Si quelqu'un possède une source, ou un exple fonctionnant parfaitement je suis preneur, je ne vois vraiement pas où j'ai commis une erreur.

  9. #9
    Membre éclairé
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    730
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2006
    Messages : 730
    Points : 876
    Points
    876
    Par défaut
    Ben ce n'est pas la méthode que je t'ai donné en tout cas (.Location et non .SetDataSource)

    Tu as essayé comme ça ou non ?

  10. #10
    Membre habitué Avatar de Sytchev3
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    433
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2005
    Messages : 433
    Points : 137
    Points
    137
    Par défaut
    Le .Location sert lorsque l'on a une base de données physique sur un poste comme une base accès, et moi j'utilise SQL Server donc le setdatasource

Discussions similaires

  1. Réponses: 6
    Dernier message: 13/07/2011, 18h57
  2. Crystal report = source de problèmes ?
    Par predalpha dans le forum ASP.NET
    Réponses: 1
    Dernier message: 03/03/2008, 15h54
  3. Problème entre Delphi7 et Crystal Report 9
    Par claude dans le forum Bases de données
    Réponses: 5
    Dernier message: 25/11/2004, 16h42
  4. [Crystal Reports 10] Modifier les données d'un état
    Par jidea dans le forum SAP Crystal Reports
    Réponses: 2
    Dernier message: 17/08/2004, 18h16
  5. [Crystal Report] problème de plusieurs tuples à imprimer
    Par Jé_48 dans le forum SAP Crystal Reports
    Réponses: 2
    Dernier message: 19/06/2003, 14h40

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