VERIFY DATA BASE
Preciso de uma ajuda, eu tenho um sistema que possui mais de 100 relatórios, e quando altero algum campo do meu banco de dados e chamo um relatório que utiliza a tabela que contenha esse campo aparece uma mensagem para o usuário dizendo que o banco de dados foi alterado, para resolver isso, eu preciso abrir o relatório no crystal reports e executar o comando VERIFY DATABASE e salvar novamente o relatório, gostaria de saber, se tem alguma forma de fazer isso direto pelo vb6 para que poupasse o usuário da mensagem. Meu crystal reports é o 11.
Desde ja sou infinitamente agradecido a ajuda dos colegas...
Um abraço a todos...
Option Explicit
Dim Report As New RmCR
Dim Rs As ADODB.Recordset
Private Sub Form_Load()
Set Rs = New ADODB.Recordset
Sql = [Ô]Select * From Tabela[Ô]
Rs.Open Sql, Bd, adOpenKeyset, adLockPessimistic
Report.Database.SetDataSource Rs
[ô]Essas Linhas são incluidas pelo crystal. Neste caso é o crystal 9.1
[ô]Screen.MousePointer = vbHourglass
[ô]CRViewer91.ReportSource = Report
[ô]CRViewer91.ViewReport
[ô]CRViewer91.Zoom 98
[ô]Screen.MousePointer = vbDefault
End Sub
Para o crystal fora do vb6 Click neste link para vê um tutorial
Bom, não deu certo. Deu erro na linha
Dim Report As New RmCR
Mais precisamente em RMCR....
Sabe o que é?
Citação:ROBIU escreveu:
Para o crystal dentro do vb6, tente isso:Option Explicit
Dim Report As New RmCR
Dim Rs As ADODB.Recordset
Private Sub Form_Load()
Set Rs = New ADODB.Recordset
Sql = [Ô]Select * From Tabela[Ô]
Rs.Open Sql, Bd, adOpenKeyset, adLockPessimistic
Report.Database.SetDataSource Rs
[ô]Essas Linhas são incluidas pelo crystal. Neste caso é o crystal 9.1
[ô]Screen.MousePointer = vbHourglass
[ô]CRViewer91.ReportSource = Report
[ô]CRViewer91.ViewReport
[ô]CRViewer91.Zoom 98
[ô]Screen.MousePointer = vbDefault
End Sub
Para o crystal fora do vb6 Click neste link para vê um tutorial
=======================================================================================================================================
Oi ROBIU
Bom, não deu certo. Deu erro na linha
Dim Report As New RmCR
Mais precisamente em RMCR....
Sabe o que é?
Banco
Programa
Relatorios
Todos os tres modos tem versoes diferentes (logico) entao quando atualizamos o banco... tb atualizamos os relatorios..
aquela atualizacao pela web..
Abracos
é até dispensável se o campo novo da tabela nao for utilizado...
Mas como disse, a forma que construo meus rps, o próprio crystal tem o select dos campos e se o campo novo nao faz parte do rpt nao tem problema algum.
Citação:Dim Report As New RmCR
Esse código é inserido pelo crystal e só mudamos quando mudamos o nome do relatorio. Quando criamos o primeiro relatório por dentro do vb6, o cristal report insere um CrystalReport1 e um Form1. Dentro deste form já tem a codificação básica, inclusive com esta linha:
Dim Report as New CrystalReport1
quando mudamos o nome do relatório, devemos mudar esta linha também
Dim Report as New NovoNomeDoReport
Segue algumas imagens, anexo
Citação:ROBIU escreveu:
Dim Report As New RmCR
Esse código é inserido pelo crystal e só mudamos quando mudamos o nome do relatorio. Quando criamos o primeiro relatório por dentro do vb6, o cristal report insere um CrystalReport1 e um Form1. Dentro deste form já tem a codificação básica, inclusive com esta linha:Dim Report as New CrystalReport1
quando mudamos o nome do relatório, devemos mudar esta linha tambémDim Report as New NovoNomeDoReport
Segue algumas imagens, anexo
Ola carinha,
consegui inserindo as seguintes linhas...
Set TBRelatorio = bd.openrecordset([Ô]SELECT * from usuarios)
Report.database.setdatasource TBusuarios
Maravilha......
Só que ai eu resolvi criar um campo novo na minha tabela chamado TESTE e adicionei o campo no relatório, quando mudei o nome do campo para TESTA ele abriu uma janela de mapping, informando que o nome do campo foi alterado, dai eu tenho que selecionar o campo TESTA e clicar em map... só que.....
pesquisando na net eu achei a seguinte linha de código
Report.FieldMappingType = crAutoFieldMapping
Adicionando essa linha não aparece a tela de mapeamento de campos, só que também não aparece o campo no relatório... por um acaso você sabe como fazer para resolver isso???
Ultima pergunta... a linha Report.database.setdatasource TBusuarios executa o comando verify database do crystal ou ele simplesmente ignora as alterações da tabela no banco de dados????
por enquanto é só.. um abraço.
Citação:Report.FieldMappingType = crAutoFieldMapping
Neste código, você pode está evitando que o cristal verifique a exixtencia do campo. Como o campo não existe, não vai aparecer nenhum valor.
Citação:Report.database.setdatasource TBusuarios
Nesta linha, estamos definindo o banco e a tabela via código. Para tanto, os campos devem ser correspondentes. Neste caso o Verify Database não vai funcionar. Isso é importante pois podemos mudar o caminho do banco e ainda assim o reporter vai localizá-lo, pois você sempre vai abrir a conexão com o banco antes.
Citação:FERINDAIA escreveu:
ROBIU escreveu:
Dim Report As New RmCR
Esse código é inserido pelo crystal e só mudamos quando mudamos o nome do relatorio. Quando criamos o primeiro relatório por dentro do vb6, o cristal report insere um CrystalReport1 e um Form1. Dentro deste form já tem a codificação básica, inclusive com esta linha:Dim Report as New CrystalReport1
quando mudamos o nome do relatório, devemos mudar esta linha tambémDim Report as New NovoNomeDoReport
Segue algumas imagens, anexo
Ola carinha,
consegui inserindo as seguintes linhas...
Set TBRelatorio = bd.openrecordset([Ô]SELECT * from usuarios)
Report.database.setdatasource TBusuarios
Maravilha......
Só que ai eu resolvi criar um campo novo na minha tabela chamado TESTE e adicionei o campo no relatório, quando mudei o nome do campo para TESTA ele abriu uma janela de mapping, informando que o nome do campo foi alterado, dai eu tenho que selecionar o campo TESTA e clicar em map... só que.....
pesquisando na net eu achei a seguinte linha de código
Report.FieldMappingType = crAutoFieldMapping
Adicionando essa linha não aparece a tela de mapeamento de campos, só que também não aparece o campo no relatório... por um acaso você sabe como fazer para resolver isso???
Ultima pergunta... a linha Report.database.setdatasource TBusuarios executa o comando verify database do crystal ou ele simplesmente ignora as alterações da tabela no banco de dados????
por enquanto é só.. um abraço.
Ola a todos....
pesquisando [Ô]AINDA MAIS[Ô] na internet achei o seguinte:
Explanation of FieldMappingType:
[ô] 0 - crAutoFieldMapping - Remove all report fields which do not have the same
[ô] name in the new database
[ô] 1 - crPromptFieldMapping - Display a dialog box to get the user to manually
[ô] map the fields
[ô] 2 - crEventFieldMapping - Cause the Report_FieldMapping event to be triggered
[ô] (see event code for CrystalReport1 in this sample)
m_Report.FieldMappingType = crEventFieldMapping
[ô] Verifying the database or using SetLocation will trigger the Field Mapping event
ReportDB.Verify
Ou seja, cheguei a conclusao que tenho que usar o a opção 2 (fieldmappingtype) só que mesmo assim não da certo, alguem conhece esse recurso????
POR FAVOR.....
Citação:ROBIU escreveu:
Quando trocamos o nome do campo na tabela estamos em modo programação. Devemos tambem atualizar o campo no report com o Verify DataBase.
Ola amigo
O meu problema é exatamente este,,,, quando troco o nome do campo na tabela, eu gostaria de não precisar atualizar o relatório no crystal reports com o verify database, eu gostaria de automatizar isso pelo vb6, pois meu sistema tem mais de 100 relatórios. E eu tenho mais de 20 clientes, ou seja eu iria ganhar muita produtividade se conseguisse uma forma de automatizar esse procedimento.