VERIFY DATA BASE

FERINDAIA 25/09/2009 16:21:59
#323670
Saudações a todos!

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...
ROBIU 25/09/2009 16:41:25
#323672
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
FERINDAIA 29/09/2009 16:51:23
#323996
Oi ROBIU

Bom, não deu certo. Deu erro na linha

Dim Report As New RmCR

Mais precisamente em RMCR....

Sabe o que é?
FERINDAIA 29/09/2009 16:58:55
#323998
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 é?
RODRIGOFERRO 29/09/2009 17:08:11
#323999
Amigao axo que o que voce quer e complicado, aqui na empresa nos temos tres modos de atualizacao...
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
FGSANTOS 29/09/2009 21:44:40
#324018
Eu, na forma que utilizo o Crystal (RDC) usei este comando: Report.Database.Verify

é 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.
ROBIU 30/09/2009 08:34:16
#324029
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
FERINDAIA 30/09/2009 10:01:58
#324038
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ém

Dim 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.
ROBIU 30/09/2009 11:31:09
#324059
Quando trocamos o nome do campo na tabela estamos em modo programação. Devemos tambem atualizar o campo no report com o Verify DataBase.

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.




FERINDAIA 30/09/2009 11:31:58
#324060
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ém

Dim 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.....
FERINDAIA 30/09/2009 17:32:34
#324115
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.
Página 1 de 2 [12 registro(s)]
Tópico encerrado , respostas não são mais permitidas