Array
(
)

Crystal Traduzido de VB6 para VB.NET, como fica?...

Ciniro
   - 01 fev 2007

Como ficaria essa rotina em VB.NET????
Não quero usar objetos do ADO nem a biblioteca Crystal ActiveX Design and Runtimes 10.0 do VB6. Preciso usar o Crystal Reports 11 no Visual Studio .NET 2005.

Public Sub Imprime_Preview_Sub(strSQL As String, strNameRPT As String, strNomeFormula() As String, strValores() As String, strSubReport() As String, Optional strTitulo As String)

Dim rptCheque As New CRAXDRT.Report
Dim tabCheque As CRAXDRT.DatabaseTable
Dim crwCheque As New CRAXDRT.Application
Dim regDados As ADODB.Recordset

intFormDinamico = intFormDinamico + 1
ReDim frmNovo(intFormDinamico)

Set frmNovo(intFormDinamico) = New frmImprime
´Set crvCrystal = frmNovo(intFormDinamico).Controls(0)

´Set crwCheque = Nothing

Open_Recordset regDados, strSQL, adOpenStatic, True, adLockReadOnly

If regDados.EOF Then
Mensagem ´Não existem registros para estas seleções´, Informacao
Exit Sub
End If

Set rptCheque = crwCheque.OpenReport(App.Path & ´\´ & strNameRPT & ´.rpt´)

rptCheque.Database.SetDataSource regDados

If strSubReport(1) <> ´´ Then
For i = 1 To UBound(strSubReport)
rptCheque.OpenSubreport strSubReport(i)
rptCheque.Database.SetDataSource regDados
Next
End If

If strNomeFormula(1) <> ´´ Then
For i = 1 To UBound(strNomeFormula)
rptCheque.FormulaFields.GetItemByName(strNomeFormula(i)).Text = strValores(i)
Next
End If

If Not strTitulo = ´´ Then
frmNovo(intFormDinamico).Caption = strTitulo
End If

frmNovo(intFormDinamico).Show
frmNovo(intFormDinamico).crvImpressao.ReportSource = rptCheque
frmNovo(intFormDinamico).crvImpressao.ViewReport

End Sub

Meu email é ciniro@gmail.com

Ciniro
   - 05 fev 2007

Como ninguém respondeu, eu vou postar a solução que achei caso alguem tenha o mesmo problema: Essa função retorna um objeto relatório, é só jogar esse dentro de um CristalVisualizer.DataSource, e dar um .SHOw() no form onde ele se encontra:

Public Function CriarRel027(ByVal dts As DataTable, ByVal strNomeFormula() As String, ByVal strValores() As String, ByVal strSubReport() As String) As rel027
Dim rpt As New rel027
rpt.SetDataSource(dts)

If strSubReport(1) <> ´´ Then
For i As Integer = 1 To UBound(strSubReport)
rpt.OpenSubreport(strSubReport(i))
rpt.SetDataSource(dts)
´rpt.Subreports.Item(strSubReport(i)).SetDataSource(dts)
Next
End If

If strNomeFormula(1) <> ´´ Then
For i As Integer = 1 To UBound(strNomeFormula)
rpt.DataDefinition.FormulaFields(strNomeFormula(i)).Text = strValores(i)
´rptCheque.FormulaFields.GetItemByName(strNomeFormula(i)).Text = strValores(i)
Next
End If
Return rpt
End Function

Valeu Pessoal!

Ciniro
   - 05 fev 2007

Como ninguém respondeu, eu vou postar a solução que achei caso alguem tenha o mesmo problema: Essa função retorna um objeto relatório, é só jogar esse dentro de um CristalVisualizer.DataSource, e dar um .SHOw() no form onde ele se encontra:

Public Function CriarRel027(ByVal dts As DataTable, ByVal strNomeFormula() As String, ByVal strValores() As String, ByVal strSubReport() As String) As rel027
Dim rpt As New rel027
rpt.SetDataSource(dts)

If strSubReport(1) <> ´´ Then
For i As Integer = 1 To UBound(strSubReport)
rpt.OpenSubreport(strSubReport(i))
rpt.SetDataSource(dts)
´rpt.Subreports.Item(strSubReport(i)).SetDataSource(dts)
Next
End If

If strNomeFormula(1) <> ´´ Then
For i As Integer = 1 To UBound(strNomeFormula)
rpt.DataDefinition.FormulaFields(strNomeFormula(i)).Text = strValores(i)
´rptCheque.FormulaFields.GetItemByName(strNomeFormula(i)).Text = strValores(i)
Next
End If
Return rpt
End Function

Valeu Pessoal!