Pular para o conteúdo principal

Crystal Reports XI - VB6 - Permission Denied - Ou: Carregando imagens dinamicamente no Crystal Reports

(Trying) English version:
Category: Tools
__________________________
If you are trying to dinamically set an image into the control Picture (ICROleObject) and you are getting the error "Permission Denied" when you are using SetOleLocation method, I suggest you try this following code instead of SetOleLocation method:

Private Sub Section1_Format(ByVal pFormattingInfo As Object)
    Dim logofile As String
    logofile = app.Path & "\logo.jpg"

    If Dir$(file) <> "" Then     'File exists...
        Set Picture2.FormattedPicture = LoadPicture(logofile)

        'FormattedPicture method used instead of SetOleLocation...
    Else
        Picture2.Suppress = True 'If does not exist, suppress that control.
    End If
End Sub


That error happens because your code is probably located on wrong event.
It must be placed exactly on "SectionXXX_Format" event where picture object is.

Português:
Categoria: Ferramentas
__________________________


Se você está recebendo a mensagem de erro: "Permission Denied" ao tentar carregar uma imagem dinamicamente usando o método SetOleLocation, certamente está chamando no evento indevido do seu código, no VB6.


A chamada a esse método deve ser feita a partir do evento _Format da seção onde o controle Picture se encontra. Adicionalmente, tente usar o método FormattedPicture ao invés de SetOleLocation, conforme segue:

Private Sub Section1_Format(ByVal pFormattingInfo As Object)
    Dim arquivo As String
    arquivo = app.Path & "\logo.jpg"

    If Dir$(file) <> "" Then     'O arquivo exite...
        Set Picture2.FormattedPicture = LoadPicture(arquivo)

        'FormattedPicture ao invés de SetOleLocation...
    Else
        Picture2.Suppress = True 'Se não existe o arquivo, suprime o controle.
    End If
End Sub




Question: Why VB6?
Answer: just legacy code

See ya!

Até mais!

Diego Sayron
PE, Brasil

Comentários

Postagens mais visitadas deste blog

Passando parâmetros para o Crystal Reports 8.5/11.5. Estrelando: O VB6.

Num cenário onde já se possui o relatório criado no Crystal e é necessário passar parâmetros via código pelo VB sem apresentar a tela de valores do CR e sem muita conversa, segue a solução minerada: Adicionar componentes: Crystal Report Viewer Control Crystal Activex Report Viewer Library 11.5 No Project Explorer, -Add -> Crystal Report Component (Relatório Existente) -Indique seu relatório previamente criado no Crystal -Informe "sim" para as opções de criar/inserir form com visualizador do relatório e alterar opção de start do projeto.(opcional) Não precisa criar fórmula ou parâmetro, basta passar o valor para o campo da tabela, conforme abaixo: Opção 1 de código: Simplesmente definir: Private Sub Form_Load()  CrystalReport1.EnableParameterPrompting = False  'Passando o parâmetro p/ "tabela.campo" - Inclua as chaves{}!  'Se preferir, concatene a uma textbox.text, por exemplo.  CrystalReport1.RecordSelectionFormula = "{compras.nCo...

VB6 x MySQL - SELECT from two databases - Just one connection - (pt-BR: SELECT em dois bancos)

English : Considering that your databases are both on the same server/instance, yes, you can get fields from two or more databases. Remember:  -for this example you are using MyODBC 3.51 like me (MySQL 32bits, so, MyODBC 32bits); -your data source name is "store" and was properly set up; -Reference: Microsoft ActiveX Data Objects 2.5 library Português : SELECT em dois bancos (desde que estejam no mesmo servidor e instância do MySQL) Considere: -Para este exemplo, estou usando o MyODBC 3.51 (MySQL de 32 bits, ODBC de 32bits) -Referenciar: Microsoft ActiveX Data Objects 2.5 library __________________________ Raw/didactic code (please, read this twice) Private Sub getItemDescription(code as string) Dim sql As String sql = "SELECT dbStore.itens.description from dbCentral.itens, dbStore.itens " _     + "WHERE dbStore.itens.BarCode = dbCentral.itens.BarCode " _     + "AND dbStore.itens.BarCode = '" & code &  "';...