Estou enviando a rotina para geração do relatório... o uduário pode escolher entre gerar um access, excel ou relatório crystal 8.5... na minha máquina de desenvolvedor não gera erro somente na máquina do usuário. Obrigado.
Private Sub cmdExecuta_Click()
Dim ct As Integer
Dim CTt As Integer
Dim SqlDatAutoriz As String
Dim LeilComp As String
Dim tabDBn As New ADODB.Recordset
ct = 0
CTt = 0
If Me.CodReinteg = "" Then
MsgBox "Favor informar Reintegradora", vbInformation, "Atenção"
CodReinteg.SetFocus
Exit Sub
End If
If IsNull(Me.CSCPer1) Then
MsgBox "Informe data inicial do Período. Verifique !", 0, "Atenção"
Me.CSCPer1.SetFocus
Exit Sub
End If
If IsNull(Me.CSCPer2) Then
MsgBox "Informe data final do Período. Verifique !", 0, "Atenção"
Me.CSCPer2.SetFocus
Exit Sub
End If
If CDate(Me.CSCPer2) < CDate(Me.CSCPer1) Then
MsgBox "Período inválido. Verifique !", 0, "Atenção"
Me.CSCPer2.SetFocus
Exit Sub
End If
Call TrocaBarraPorPonto(CSCPer1)
auxCSCPer1 = RetBarraPorPonto
Call TrocaBarraPorPonto(CSCPer2)
auxCSCPer2 = RetBarraPorPonto
If Gravacao(0).Value = True Then 'Access
CommonDialog1.DialogTitle = "Crie nome do MDB"
CommonDialog1.FileName = ""
CommonDialog1.DefaultExt = "*.mdb"
CommonDialog1.Filter = "Access (*.mdb)|*.mdb|All (*.*)|*.*"
CommonDialog1.InitDir = "C:"
CommonDialog1.ShowOpen
DoEvents
End If
If Gravacao(1).Value = True Then 'Excel
CrystalReport1.Destination = crptToFile
'CrystalReport1.PrintFileType = crptHTML32Ext 'HTM
'CrystalReport1.PrintFileType = crptWinWord 'DOC
CrystalReport1.PrintFileType = crptExcel50Tab 'XLS
CommonDialog1.DialogTitle = "Crie nome da Planilha Excel"
CommonDialog1.FileName = ""
CommonDialog1.DefaultExt = "*.xls"
CommonDialog1.Filter = "Excel (*.xls)|*.xls|All (*.*)|*.*"
CommonDialog1.InitDir = "C:"
CommonDialog1.ShowOpen
DoEvents
CrystalReport1.Tag = CommonDialog1.FileName
CrystalReport1.PrintFileName = CrystalReport1.Tag
End If
If Gravacao(0).Value = False And Gravacao(1).Value = False And Gravacao(2).Value = False Then
MsgBox "Favor selecionar um tipo de Gravação de Relatório", vbInformation, "Atenção"
Exit Sub
End If
MousePointer = 11
Me.cmdExecuta.Enabled = False
If Gravacao(0).Value = True Then 'Access
Me.lblProc.Caption = "Gerando MDB - Despesas..."
ElseIf Gravacao(1).Value = True Then 'Excel
Me.lblProc.Caption = "Gerando Planilha Excel - Despesas..."
ElseIf Gravacao(2).Value = True Then 'Access
Me.lblProc.Caption = "Gerando Relatório - Despesas..."
End If
Me.lblProc.Refresh
tmpMDB = "Create Table DESPESAS " & _
"( " & _
"SINISTRO CHAR(11), " & _
"SITUACAO CHAR(11), " & _
"CIA CHAR(6), " & _
"DATAUTORIZDESP Char(10), " & _
"QTDKM CHAR(11), " & _
"VALKM Currency, " & _
"VALFRETE Currency, " & _
"VALGUINCHO CURRENCY, " & _
"VALMUNK CURRENCY , " & _
"VALALIMENT Currency, " & _
"VALTRANSP CURRENCY, " & _
"VALHOSPED CURRENCY, " & _
"VALPEDAGIO CURRENCY, " & _
"VALTOTESTADIA CURRENCY, " & _
"RATEIO CHAR(1), " & _
"VALESTADIACIA CURRENCY, " & _
"VALESTADIAPREST CURRENCY, " & _
"VALOUTRASDESP CURRENCY, " & _
"VALTOTDESP CURRENCY " & _
")"
VeriArq = Dir(CommonDialog1.FileName, vbNormal)
If VeriArq <> "" And Gravacao(2).Value = False Then
Kill CommonDialog1.FileName
End If
If Gravacao(2).Value = False And Gravacao(1).Value = False Then
Set ODTn = DBEngine.Workspaces(0).CreateDatabase(CommonDialog1.FileName, dbLangGeneral, dbVersion30)
ODTn.Close
Else
AUX = Dir("C:SLVm.MDB", vbNormal)
If AUX <> "" Then
Kill "C:" & AUX
End If
Set ODTn = DBEngine.Workspaces(0).CreateDatabase("C:SLVm.MDB", dbLangGeneral, dbVersion30)
ODTn.Close
End If
Set OWTn = Workspaces(0)
If Gravacao(2).Value = False And Gravacao(1).Value = False Then
Set ODTn = OWTn.OpenDatabase(CommonDialog1.FileName, False, False, ";")
Else
Set ODTn = OWTn.OpenDatabase("C:SLVm.MDB", False, False, ";")
End If
ODTn.Execute tmpMDB, 0
tmpsql = "SELECT B.NUM_SINISTRO,B.DAT_AUTORIZ_DESP,B.COD_SOLIC,B.COD_EFEITO, " & _
" B.QTD_KM_RECUP,B.VAL_KM_RECUP,B.VAL_FRETE,B.VAL_GUINCHO,B.VAL_MUNK,B.VAL_PEDAGIO, " & _
" B.VAL_ALIMENT_PREST,B.VAL_TRANSP_PREST,B.VAL_HOSPEDAG_PREST,B.VAL_OUTRA_DESPESA, " & _
" B.FLG_RATEIO_DESP,B.VAL_TOTAL_ESTADIA,B.VAL_ESTADIA_CIA,B.VAL_ESTADIA_PREST,B.VAL_TOTAL_DESPESA " & _
" FROM HIST_RECUPERACAO A, DESP_HON_REINTEGR B " & _
" WHERE A.COD_RECUP = " & Me.CodReinteg & " " & _
" AND B.NUM_SINISTRO = A.NUM_SINISTRO " & _
" AND B.COD_SOLIC = A.COD_SOLIC " & _
" AND B.COD_EFEITO = A.COD_EFEITO " & _
" AND B.DAT_AUTORIZ_DESP BETWEEN '" & auxCSCPer1 & "' and '" & auxCSCPer2 & "'"
conexaoMdb.CommandTimeout = 3600
tabDBn.CacheSize = 20000
Set RsRelHon = Conexao.Execute(tmpsql, adOpenForwardOnly, adLockReadOnly)
If RsRelHon.EOF Then
Me.lblProc.Caption = "Não há movimento para esse período. Verifique !"
Me.lblProc.Refresh
ODTn.Close
Me.cmdExecuta.Enabled = True
MousePointer = 0
Exit Sub
End If
OWTn.BeginTrans
Do While Not RsRelHon.EOF
NumSinistro = 0
If RsRelHon!NUM_SINISTRO <> NumSinistro Then
'Pega Contrato, Item Contrato para pegar CIA
tmpsql = "SELECT NUM_CONTRATO, NUM_ITEM_CONTRATO " & _
" FROM SINISTRO " & _
" WHERE NUM_SINISTRO = " & RsRelHon!NUM_SINISTRO & " "
Set RsRelHonCI = Conexao.Execute(tmpsql, adOpenForwardOnly, adLockReadOnly)
'Pega CIA
tmpsql = "SELECT COD_CIA, COD_PESSOA " & _
" FROM ITEM_CONTRATO " & _
" WHERE NUM_CONTRATO = " & RsRelHonCI!NUM_CONTRATO & " " & _
" AND NUM_ITEM_CONTRATO = " & RsRelHonCI!NUM_ITEM_CONTRATO & " "
Set RsRelHonCIA = Conexao.Execute(tmpsql, adOpenForwardOnly, adLockReadOnly)
'Pega TIPO DE RECUPERAÇÃO
tmpsql = "SELECT SIG_TIPO_RECUP FROM recuperacao_roubo " & _
" WHERE NUM_SINISTRO = " & RsRelHon!NUM_SINISTRO & " " & _
" AND COD_EFEITO = " & RsRelHon!COD_EFEITO & " " & _
" AND COD_SOLIC = " & RsRelHon!COD_SOLIC & " "
Set RsRelHonTRec = Conexao.Execute(tmpsql, adOpenForwardOnly, adLockReadOnly)
'Pega Recuperadora
tmpsql = "SELECT COD_RECUP, NME_RECUP" & _
" FROM RECUPERADORA_VEIC " & _
" WHERE COD_RECUP = " & CodReinteg & " " & _
" ORDER BY COD_RECUP "
Set RsRelHonRecup = Conexao.Execute(tmpsql, adOpenForwardOnly, adLockReadOnly)
'Grava MDB
tmpMDB = "insert into DESPESAS (SINISTRO,SITUACAO,CIA,DATAUTORIZDESP,QTDKM,VALKM, " & _
" VALFRETE,VALGUINCHO,VALMUNK,VALALIMENT,VALTRANSP,VALHOSPED, " & _
" VALPEDAGIO,VALTOTESTADIA,RATEIO,VALESTADIACIA,VALESTADIAPREST, " & _
" VALOUTRASDESP,VALTOTDESP) " & _
"values( " & _
"" & RsRelHon!NUM_SINISTRO & ",'" & RsRelHonTRec!SIG_TIPO_RECUP & "','" & RsRelHonCIA!COD_CIA & "'," & _
"'" & RsRelHon!DAT_AUTORIZ_DESP & "','" & RsRelHon!QTD_KM_RECUP & "','" & RsRelHon!VAL_KM_RECUP & "', " & _
"'" & RsRelHon!VAL_FRETE & "','" & RsRelHon!VAL_GUINCHO & "','" & RsRelHon!VAL_MUNK & "','" & RsRelHon!VAL_ALIMENT_PREST & "', " & _
"'" & RsRelHon!VAL_TRANSP_PREST & "','" & RsRelHon!VAL_HOSPEDAG_PREST & "','" & RsRelHon!VAL_PEDAGIO & "','" & RsRelHon!VAL_TOTAL_ESTADIA & "'," & _
"'" & RsRelHon!FLG_RATEIO_DESP & "','" & RsRelHon!VAL_ESTADIA_CIA & "','" & RsRelHon!VAL_ESTADIA_PREST & "','" & RsRelHon!VAL_OUTRA_DESPESA & "', " & _
"'" & RsRelHon!VAL_TOTAL_DESPESA & "')"
If Gravacao(2).Value = False And Gravacao(1).Value = False Then
Set ODTn = OWTn.OpenDatabase(CommonDialog1.FileName, False, False, ";")
Else
Set ODTn = OWTn.OpenDatabase("C:SLVm.MDB", False, False, ";")
End If
ODTn.Execute tmpMDB, 0
ct = ct + 1
If ct = 500 Then
OWTn.CommitTrans
OWTn.BeginTrans
ct = 0
End If
DoEvents
End If
RsRelHon.MoveNext
DoEvents
Loop
OWTn.CommitTrans
RsRelHon.Close
Set RsRelHon = Nothing
RsRelHonCI.Close
Set RsRelHonCI = Nothing
RsRelHonCIA.Close
Set RsRelHonCIA = Nothing
RsRelHonTRec.Close
Set RsRelHonTRec = Nothing
OWTn.Close
Set OWTn = Nothing
Set Conn = New ADODB.Connection
If Gravacao(2).Value = False And Gravacao(1).Value = False Then
With Conn
.Provider = "MSDASQL"
.ConnectionString = "Driver={Microsoft Access Driver (*.mdb)}; Dbq= " & CommonDialog1.FileName & ";Uid=Admin; Pwd=;"
.Open '(Usuário) (Senha) (Caminho e Nome do banco de dados)
End With
tmpsql = "SELECT * FROM DESPESAS"
Set Rst1 = Conn.Execute(tmpsql)
End If
If Gravacao(0).Value = False Then
'Abre relatório
CrystalReport1.Formulas(0) = "PER1 = '" & CSCPer1 & "'"
CrystalReport1.Formulas(1) = "PER2 = '" & CSCPer2 & "'"
CrystalReport1.Formulas(2) = "REINTEGR = '" & RsRelHonRecup!COD_RECUP & "-" & RsRelHonRecup!NME_RECUP & "'"
CrystalReport1.ReportFileName = App.Path & "despesas.rpt"
CrystalReport1.Action = 1
End If
lblProc.Caption = "Gerando o Relatório Despesas... (" & JT & ")"
lblProc.Refresh
RsRelHonRecup.Close
Set RsRelHonRecup = Nothing
lblProc.Caption = "Fim da Geração de Relatórios de Despesas !"
lblProc.Refresh
cmdExecuta.Enabled = True
MousePointer = 0
End Sub