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

01/02/2007

0

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

Ciniro

Responder

Posts

05/02/2007

Ciniro

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!


Responder

05/02/2007

Ciniro

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!


Responder

Assista grátis a nossa aula inaugural

Assitir aula

Saiba por que programar é uma questão de
sobrevivência e como aprender sem riscos

Assistir agora

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar