|
|
|
|
Voila je debute sous visual basic 6.0 j'ai fait une peit appli et j'ai bessoin de visualiser des fichier creer avec Crystal Report 10 dans les composant j'ai bien un control ActiveX (CrystalActiveXReportViewer1)
mais comment utiliser ce controle genre :
CrystalActiveXReportViewer1 pour qu'il me charge et affiche mon fichier .RPT
Merci de votre aide
Easy :)
|
Salut :)
|
Yop ;)
|
Bonjour
|
J ai un probleme au nieaux de code je voudrais creer un etat parametrer je programme avec vb6 , j ai une table qui sable Dossier je veux lors je tappe le numero dossier les information de ce denier s'affiche dans crystal data report
|
Je voudrais afficher avec VB6 un état de crystalreport réaliser à partir d'une base de données Access 2000. Cette Base de données contient un mot de passe.
|
Bonjour,
|
Salut!
|
Bonjour,
SQL = "SELECT NroFact,PaysFactur,PJ,MailFactur" _
& "$ FROM FACTURE" _
& "$ WHERE TypFact = 'MENS'" _
& "$ AND PeriodeFact = '" & sPeriodeFact & "'" _
& "$ AND " & sBicWhere _
& "$ AND Ok = 0" _
& "$ ORDER BY NroFact"
Set rs = SqlExecute(SQL)
Set crRepp = crApp.OpenReport(rptfile)
crRepp.DisplayProgressDialog = False
' Fill report parameters
Set crParamDefs = crRepp.ParameterFields
'Passage des paramètres fixes du rapport
For Each crParamDef In crParamDefs
Select Case crParamDef.ParameterFieldName
Case "TypeDocument": crParamDef.SetCurrentValue sFactureTitre
Case "Responsable": crParamDef.SetCurrentValue sResponsable
Case "Telephone": crParamDef.SetCurrentValue sTelephone
Case "email": crParamDef.SetCurrentValue sEmail
End Select
Next
crRepp.EnableParameterPrompting = False
crRepp.Database.Tables(1).SetLogOnInfo "", "", sDbUser, sDbPassword
crRepp.ExportOptions.DestinationType = crEDTDiskFile
crRepp.ExportOptions.FormatType = crEFTPortableDocFormat
crRepp.ExportOptions.PDFExportAllPages = True
Do Until rs.EOF
sNoDoc = rs("NroFact")
sPaysFact = rs("PaysFactur")
sMail = rs("MailFactur")
If sNoDoc <> sPreviousNoDoc Then
sPreviousNoDoc = sNoDoc
End If
SQL = "SELECT FACTURATION.*" _
& " ,FACTURE.ConditionPaie" _
& " FROM FACTURATION" _
& " LEFT JOIN FACTURE" _
& " ON FACTURATION.NroFact = FACTURE.NroFact" _
& " WHERE FACTURATION.NroFact = '" & sNoDoc & "'" _
& " ORDER BY ID"
crRepp.SQLQueryString = SQL
crRepp.ExportOptions.DiskFileName = sPathPJ & rs("PJ")
crRepp.Export (False)
rs.MoveNext
Loop
Code VisualBasic .Net
crReport = New ReportDocument()
crReport.Load(rptfile)
crApp.ReportSource = crReport
crApp.ShowRefreshButton = False
crApp.ShowCloseButton = False
crApp.ShowGroupTreeButton = False
Dim crLogin As CrystalDecisions.Shared.TableLogOnInfo
crLogin = crReport.Database.Tables(1).LogOnInfo
'crLogin.ConnectionInfo.ServerName = sServerName
'crLogin.ConnectionInfo.DatabaseName = "Antennes"
crLogin.ConnectionInfo.UserID = sDbUser
crLogin.ConnectionInfo.Password = sDbPassword
crReport.Database.Tables(1).ApplyLogOnInfo(crLogin)
' Fill report parameters
'Dim crParameters As ParameterFields = crApp.ParameterFieldInfo
'Dim crParam As New ParameterValues()
For Each crParamDef In crReport.DataDefinition.ParameterFields
Select Case crParamDef.Name '.ParameterFieldName
Case "TypeDocument" : SetCurrentValue(sFactureTitre)
Case "Responsable" : SetCurrentValue(sResponsable)
Case "Telephone" : SetCurrentValue(sTelephone)
Case "email" : SetCurrentValue(sEmail)
End Select
Next crParamDef
SQL = "SELECT NroFact,PaysFactur,PJ,MailFactur" _
& "$ FROM FACTURE" _
& "$ WHERE TypFact = 'MENS'" _
& "$ AND PeriodeFact = '" & sPeriodeFact & "'" _
& "$ AND " & sBicWhere _
& "$ AND Ok = 0" _
& "$ ORDER BY NroFact"
rs = SqlExecute(SQL)
Do Until rs.EOF
sNoDoc = rs.Fields("NroFact").Value
sPaysFact = rs.Fields("PaysFactur").Value
sMail = rs.Fields("MailFactur").Value
If sNoDoc <> sPreviousNoDoc Then
sPreviousNoDoc = sNoDoc
End If
sWhere = "{FACTURATION.NroFact} = '" & sNoDoc & "'"
crReport.RecordSelectionFormula = sWhere
'oDiskOpts.DiskFileName = sPathPJ & rs.Fields("PJ").Value
'oExportOptions.ExportDestinationOptions = oDiskOpts
'crReport.Refresh()
'crReport.Export(oExportOptions)
crReport.ExportToDisk(ExportFormatType.PortableDocFormat, sPathPJ & rs.Fields("PJ").Value)
rs.MoveNext()
Loop
crReport.Close()
End Sub
Ceci est est exemple. Il n'est certainement pas parfait, mais il fonctionne ! En VB6 pour 1200 clients il met 10 minutes. En Visual Basic .Net avec CrystalReport 10, il met 2 heures du fait que je n'ai plus pû utiliser la méthode SQLQueryString et que je dois donc ouvrir le rapport à chaque étape de ma boucle. Si quelqu'un à une idée pour générer rapidement les 1200 factures sans passer à une machine plus puissante, je suis intéressé.Cordialement |
J'ai travaillé toute la matinée pour trouver une solution et enfin j'en ai trouvé une.
'******************************************************************************
'* GeneratePDF
'******************************************************************************
Private Sub GeneratePDF()
Dim sNoAntenne As String
Dim sPreviousNoAntenne As String
Dim sPreviousNoDoc As String
Dim sBicWhere As String
Dim sWhere As String
Dim cmd As SqlCommand
Dim rs As ADODB.Recordset
Dim ds As New DataSet
Dim da As New SqlDataAdapter
If bCheckDOM Then
sBicWhere = "BIC <> ''"
rptfile = sCRFactMensDOM
Else
sBicWhere = "BIC = ''"
rptfile = sCRFactMens
End If
crReport = New ReportDocument()
crReport.Load(rptfile)
crApp.ReportSource = crReport
'crRepp = crApp.OpenReport(rptfile)
crApp.ShowRefreshButton = False
crApp.ShowCloseButton = False
crApp.ShowGroupTreeButton = False
Dim crLogin As CrystalDecisions.Shared.TableLogOnInfo
crLogin = crReport.Database.Tables(1).LogOnInfo
'crLogin.ConnectionInfo.ServerName = sServerName
'crLogin.ConnectionInfo.DatabaseName = "Antennes"
crLogin.ConnectionInfo.UserID = sDbUser
crLogin.ConnectionInfo.Password = sDbPassword
crReport.Database.Tables(1).ApplyLogOnInfo(crLogin)
SQL = "SELECT NroFact,PaysFactur,PJ,MailFactur" _
& "$ FROM FACTURE" _
& "$ WHERE TypFact = 'MENS'" _
& "$ AND PeriodeFact = '" & sPeriodeFact & "'" _
& "$ AND " & sBicWhere _
& "$ AND Ok = 0" _
& "$ ORDER BY NroFact"
rs = SqlExecute(SQL)
Do Until rs.EOF
' Fill report parameters
'Dim crParameters As ParameterFields = crApp.ParameterFieldInfo
'Dim crParam As New ParameterValues()
For Each crParamDef In crReport.DataDefinition.ParameterFields
Select Case crParamDef.Name '.ParameterFieldName
Case "TypeDocument" : SetCurrentValue(sFactureTitre)
Case "Responsable" : SetCurrentValue(sResponsable)
Case "Telephone" : SetCurrentValue(sTelephone)
Case "email" : SetCurrentValue(sEmail)
End Select
Next crParamDef
sNoDoc = rs.Fields("NroFact").Value
sPaysFact = rs.Fields("PaysFactur").Value
sMail = rs.Fields("MailFactur").Value
If sNoDoc <> sPreviousNoDoc Then
sPreviousNoDoc = sNoDoc
End If
SQL = "SELECT *" _
& " FROM FACTURATION" _
& " WHERE NroFact = '" & sNoDoc & "'" _
& " ORDER BY ID"
da = New SqlDataAdapter(SQL, cn)
da.Fill(ds, "FACTURATION")
da.Dispose()
SQL = "SELECT *" _
& " FROM FACTURE" _
& " WHERE NroFact = '" & sNoDoc & "'"
da = New SqlDataAdapter(SQL, cn)
da.Fill(ds, "FACTURE")
da.Dispose()
crReport.SetDataSource(ds)
For Each crParamDef In crReport.DataDefinition.ParameterFields
Select Case crParamDef.Name '.ParameterFieldName
Case "TypeDocument" : SetCurrentValue(sFactureTitre)
Case "Responsable" : SetCurrentValue(sResponsable)
Case "Telephone" : SetCurrentValue(sTelephone)
Case "email" : SetCurrentValue(sEmail)
End Select
Next crParamDef
crReport.ExportToDisk(ExportFormatType.PortableDocFormat, sPathPJ & rs.Fields("PJ").Value)
ds.Clear()
rs.MoveNext()
Loop
crReport.Close()
End Sub
'****************************************************************************************************
'* SetCurrentValue()
'****************************************************************************************************
'* Impression des factures mensuelles en un lot (unseul fichier PDF)
'****************************************************************************************************
Public Sub SetCurrentValue(ByVal sText As String)
Dim crField As New ParameterValues
Dim crValue As New ParameterDiscreteValue
crValue.Value = sText
crField.Add(crValue)
crParamDef.ApplyCurrentValues(crField)
'crParamDef.CurrentValues.Add(crValue)
'crParamDef.CurrentValues = crField
End Sub
Le programme a mis jusqu'à 6 minutes pour générer 1365 factures. |