USUÁRIO:      SENHA:        SALVAR LOGIN ?    Adicione o VBWEB na sua lista de favoritos   Fale conosco 

 

  Fórum

  Visual Basic
Voltar
Autor Assunto:  vb6 + access + relatórios + snapshot
meagain
SP
SP - BRASIL
ENUNCIADA !
Postada em 09/03/2010 23:08 hs            
Olá pessoal. Parabéns pelo site, espero ajudar e ser ajudado aqui.
 
Vamos lá:
 
Desenvolvi um programa no VB6, meu banco de dados é Access (na máquina tenho instalado o office 2003. Quanto fui criar o banco eu criei no 2000, converti para 97 e então entendo que meu banco no programa é access 97)
 
Eu faço a conexão com o banco usando jet 4.0 (3.51 dá no win XP, no vista precisou ser 4.0).
 
Me corrijam se falar besteira, sou quase leigo.
 
Então, uso ADO, msflexgrid, etc.
 
Fiz uns relatórios no Crystal Reports XI, ficaram muito bons, mas apanhei muito e não consegui abrir nenhum a partir do meu programa, não acertei o código, olhei livros, apostilas, etc.
 
Então tentei o data report, não consegui modelar os relatórios, pois não me pareceu ter a mesma liberdade como no crystal, com relação a mover itens, redimensionar como quiser, etc, pareceu meio travado, meio quadradão, não gostei.
 
Então criei os mesmos relatórios no access, junto com o meu banco de dados, ficaram excelentes, iguais aos que tinha feito no crystal.
 
Apanhei mas consegui fazer abrir pelo vb, usei aquele famoso código que faz abrir o access, abrir o banco, abrir o relatório, imprimir, fechar o relatório, fechar o banco, fechar o access.
 
Aí surgiram os seguintes problemas:
 
1) sempre está ficando um processo MSACCESS aberto no windows, a cada impressão aumenta um processo aberto até acabar a memória do Windows. E estou usando o set msaccess = nothing (algo assim, pra liberar)
 
2) Não quero depender do meu cliente ter access na máquina, qualquer que seja a versão, quero que funcione mesmo que não tenha, somente com a minha aplicação.
 
3) Um dos relatórios é em A3. Eu fiz o código pra A3, ele está imprimindo em papel A4, mas dá pra ver que o relatório está mesmo no A3, ele corta o que não cabe. Ou seja, acertei o tamanho do relatório mas não o tamanho do papel.
 
4) Tentei implementar o Access Runtime pra não depender de access instalado, mas não consegui fazer / não sei fazer.
 
5) Tentei implementar relatórios snapshot. Exportei um relatório do access para snapshot, extensão .snp, e tentei colocar no meu programa um código para abrir esse snp ao invés de chamar o access, também não consegui.
Caso tivesse conseguido, ele chamaria o mesmo snapshot sempre (com as mesmas informações) ou o snapshot teria os dados atualizados com base no banco de dados? Eu precisaria exportar outra vez para ele estar atualizado ou a cada abertura ele se atualiza, eu mandando filtros, etc. ?
 
Enfim, vejam que apanho bastante do vb, por favor me ajudem no que imaginam ser útil.
 
Só digo que no momento sugerir para eu migrar para VB.net, access 2007, etc, não adianta, quero resolver com as ferramentas que tenho.
 
Vocês que entendem bem disso, me ajudem por favor, ficarei bastante agradecido.
 
Um grande abraço a todos.
 
meagain
 
   
hm1020
CASTELANDIA
GO - BRASIL
ENUNCIADA !
Postada em 10/03/2010 11:12 hs            
Bom dia
 
Voce poderia postar o codigo que faz com que abra os relatorios feito no acces, e voce consegue abrir atraves do vb
 
Grato
 
   
meagain
SP
SP - BRASIL
ENUNCIADA !
Postada em 10/03/2010 12:38 hs            
Claro, segue o código:
 
Private Sub imprimerelatorio(folha As String, filtro2 As String, copias As Integer)
On Error GoTo Erro
'points to the location of the database to open
Dim banco As String
'name of the report to print
Dim relatorio As String
'print type
Dim preview As Long
'filter
Dim filtro As String
'used to story current main recordset
Dim appAccess  As Access.Application
Set appAccess = New Access.Application
banco = caminhocompleto
preview = acPreview 'acNormal
'fazer um case e um for para o par relatorio e filtro
'relatorio = "rel_pastas_capa"
filtro = "id_pasta Between  '" & txt_pasta_inicial & "' And '" & txt_pasta_final.Text & "'"
If filtro2 <> "" Then
filtro = "id_pasta Between  '" & filtro2 & "' And '" & filtro2 & "'"
End If

With appAccess
    '.OpenCurrentDatabase (App.Path & "hsdirectory.mdb")
    .OpenCurrentDatabase filepath:=banco
    'if user wants to preview print Min then show print preview screen
    If preview = acPreview Then
        'alow the user to see the report
       .Visible = True
      
       If folha = "rel_pastas_crec_enc" Or relatorio = "rel_pastas_crec_esv" Then
       .Printer.PaperSize = acPRPSA3
       .Printer.Orientation = acPRORLandscape
       '.Printer.PaperBin = acPRBNLargeFmt
      
       End If
      
        .Printer.ColorMode = acPRCMColor
        .Printer.Copies = copias
        '.Printer.DefaultSize = True
       
       'open report in preview mode
       .DoCmd.OpenReport folha, acViewNormal, , filtro, acWindowNormal
      
       Else
        'open the report
       .DoCmd.OpenReport relatorio
      
    End If
       .DoCmd.Close
       .Visible = False
End With

Sair:
    Exit Sub
Erro:
    Select Case Err.Number
        Case 2501
            MsgBox "A consulta para o relatório não retornou resultado", vbOKOnly, "Erro"
        Case Else
            MsgBox Err.Description, vbOKOnly, "Erro"
    End Select
    Resume Sair
   
    appAccess.CloseCurrentDatabase
    appAccess.DoCmd.Quit acQuitSaveNone
   
    Set appAccess = Nothing
   
End Sub
 
 
   
Tiago
não registrado
ENUNCIADA !
Postada em 23/03/2012 22:02 hs   
Não estou conseguindo imprimir uma Userform no modo paisagem no windows 7, conforme o código abaixo alguém pode me ajudar.


Private Sub UserForm_Click()
  On Error GoTo trata_Erro
printer.Orientation = 2 - -Paisagem

  Exit Sub
trata_Erro:
MsgBox "O Formulário Não Pode Ser Impresso"
  Resume Next
End Sub
   
Página(s): 1/1    


Seu Nome:

Seu eMail:

ALTERAR PARA MODO HTML
Mensagem:

[:)] = 
[:P] = 
[:(] = 
[;)] = 

HTML DESLIGADO

     
 VOLTAR

  



CyberWEB Network Ltda.    © Copyright 2000-2024   -   Todos os direitos reservados.
Powered by HostingZone - A melhor hospedagem para seu site
Topo da página