Tutoriais Access

download Tutoriais Access

of 11

Transcript of Tutoriais Access

Retngulos, linhas e bordas em relatriosOs relatrios possuem um mtodo chamadoLine, que nos permite criar formas retangulares, em qualquer posio.O mtodoLinetem a seguinte sintaxe:Line (esquerda, topo)-(esquerda, topo), Cor, BObserve que temos que indicar duas coordenadas para definir a posio e o tamanho do retngulo desejado:Esquerdasignifica o quanto a coordenada dever estar afastada do canto esquerdo do relatrio eToposignifica o quanto dever estar afastada da parte superior do relatrio. A contagem a partir das margens.Exemplo:me.Line (0,0) - (567,1134), vbRed, BO resultado este que voc v na imagem:

O VBA possui uma unidade de medida, chamadaTwip, que equivale a 1/20 de um ponto ou 1/1.440 de uma polegada. Existem567 Twipsem um centmetro. Os valores 567 e 1134 da coordenada acima esto em Twips.Para facilitar a nossa compreenso, podemos trabalhar com valores em centmetros , bastando para isso, multiplicar o valor por 567 Twips. Nosso exemplo acima, fica assim:me.Line (0,0) - (567 *1, 567 *2), vbRed, BOu seja, nossa segunda coordenada tem 1 cm afastada da esquerda e 2cm afastada do topo.Podemos criar diversos retngulos no relatrio. Exemplo de dois retngulos:me.Line (0,0) - (567 *1, 567 *2), vbRed, Bme.Line (567 *0.3, 567 *0.5) - (567 *2.3, 567 *3.5), vbBlue, BVeja o resultado na imagem abaixo! O retngulo azul medindo 2cm x 3cm e afastado 0.3 cm da lateral esquerda e a 0.5 cm do topo.

Podemos alterar a largura da linha, atravs do propriedadeDrawWidth. Este valor medido em Pixel que vai de 1 pixel (padro) a 32767 pixels. Exemplo:me.DrawWidth = 8'pixelsme.Line (0,0) - (567 *1, 567 *2), vbRed, Bme.DrawWidth = 1'pixelme.Line (567 *0.3, 567 *0.5) - (567 *2.3, 567 *3.5), vbBlue, BObserve bem a largura da linha do retngulo vermelho em relao a do Azul:

Para preencher o retngulo, basta acrescentar um F depois do B. Exemplo:me.Line (0,0) - (567 *1, 567 *2), vbRed, BFAgora, veja o resultado:

Podemos criar um retngulo bem estreito, que d para us-lo como linha. Exemplo:Me.Line (567 *1, 567 *1)-(567 *1.02, 567 *4), vbRed, B'linha na verticalMe.Line (567 *2, 567 *2)-(567 *6, 567 *2.03), vbRed, B'linha na horizontalVeja o resultado na figura abaixo:

Existem duas propriedades que nos permitem obter as dimenses do relatrio:Me.ScaleHeightque nos fornece a alturae aMe.ScaleWidthque nos fornece a largura. As medidas so fornecidas em Twips.Ento, fica fcil montarmos um retngulo, nas dimenses do relatrio, formando com isso a nossa borda. Exemplo:me.DrawWidth = 8'pixelsMe.Line (0,0)-(Me.ScaleWidth - 25, Me.ScaleHeight - 25), vbRed, BObserve que diminu o tamanho em 25 twips para que as partes do retngulo da lateral direita e inferior apaream.Temos, como resultado, a imagem abaixo:

O evento que recebe o mtodo Line para a formao da borda externa o "Na pgina", mas tambm pode ser utilizado em outras sees do relatrio. Exemplo do cdigo utilizado em dois eventos de um relatrio:Private Sub Detalhe_Format(Cancel As Integer, PrintCount As Integer) Me.Line (0,0)-(Me.ScaleWidth - 25, Me.ScaleHeight - 25), vbRed, BEnd Sub

----------------------------------------------------------------------------------------------

Private Sub Report_Page() Me.Line (0,0)-(Me.ScaleWidth - 25, Me.ScaleHeight - 25), vbBlack, BEnd SubVeja, na imagem abaixo, o resultado! A borda preta formada no evento "Na pgina(report_page)" e as bordas em vermelho, geradas no evento "Ao Formatar" da seo detalhes.

Existe tambm o mtodo para a criao de crculos (Circle) e que vou deixar para voc pesquisar no help do Access. Bom estudo!

Boleto Bancrio do Ita - Cdigo de barras sem OCXEstava precisando montar um aplicativo no Access que gerasse boletos do banco Ita. A nica pedra no sapato desse projeto era o fato de que eu tinha que utilizar um arquivo OCX para gerar o cdigo de barras e isso em verses de 64 bits poderia no funcionar.A soluo para escapar do uso de arquivo OCX seria tentar trazer para o Access a idia de um projeto feito em ASP, que usava imagens das barras, devidamente enfileiradas para montar o cdigo de barras.Cdigo de barras com imagens:So utilizadas quatro barras como padro, sendo duas pretas e duas brancas. Duas, na largura de 1 pixele as outras duas,na largura de 3 pixels.Observe na figura abaixo as 4 barras:

O mtodoPicturefoi usado para carregar as imagens (barras) nos Controles de Imagens.Me!CampoImagem.Picture = CurrentProject.Path & "\imagens_boleto\3b.gif O desafio no AccessPara ajustar a largura do Controle de Imagem, precisamente na largura das barras (1 pixel ou 3 pixels) utilizada a propriedadeWidth.'1 pixel equivale a 15 Twips (medida do VBA)Const px1 = 15 '1 pixelConst px3 = 45 '3 pixelsMe!CampoImagem.Width = px1 (ou px3)Tendo a largura de cada Controle de Imagem (1 pixel ou 3 pixels), basta ir somando e acumulando tais mdias para obter o posicionamento esquerda do Controle de Imagem seguinte, conseguindo assim, o alinhamento sequencial das barras. Observe na imagem abaixo:

O posicionamento esquerda da terceira barra a soma da primeira barra em relao a margem (A), mais a largura da primeira barra (B), mais a largura da segunda barra (C).Me!CampoImagem.Left = PosioEsquerda'armazenando a posio para o prximo Controle de ImagemPosioEsquerda = PosioEsquerda + px1 (ou px3) O cdigo gerador do boleto possui 44 nmeros, conforme exemplo sequencial abaixo:34191595300000015001741000000169555033350000Cada nmero da sequncia representado por 5 barras, o que nos d um total de 220 barras (44 x 5)So utilizadas ainda, mais 4 barras para identificar o incio da leitura e mais 3 barras para identificar o fim da leitura, totalizando 227 barras.Ento, duzentos e vinte e sete foi o nmero necessrio de Controles de Imagens que tive que criar para a montagem do cdigo de barras. Veja na imagem abaixo:

O CdigoAnalise o cdigo utilizado no evento "Ao formatar" do boleto, que ajusta a largura e a posio esquerda de cada Controle de Imagem:Const px1 = 15 '1 pixelConst px3 = 45 '3 pixels

'posio esquerda da primeira barra, em relao a margemPosioEsquerda = 115.2

smyI25 = fncI25Encode(cod_barra)bBar = TrueFor ipos = 1 To Len(smyI25) If (bBar) Then sgif = Mid(smyI25, ipos, 1) & "b.gif" Else sgif = Mid(smyI25, ipos, 1) & "s.gif" End If 'Ajustando a largura do Controle de Imagem, de acordo com a largura da barra Me("img" & ipos).Width = IIf(Left(sgif, 1) = "3", px3, px1) 'Ajustando a posio esquerda do Controle de Imagem Me("img" & ipos).Left = PosioEsquerda 'Armazenando a prxima posio esquerda PosioEsquerda = PosioEsquerda + IIf(Left(sgif, 1) = "3", px3, px1) 'Carregando a imagem da barra, no Controle de Imagem Me("img" & ipos).Picture = CurrentProject.Path & "\imagens_boleto\" & sgif bBar = Not bBarNextVeja na imagem abaixo, o resultado do cdigo de barras, devidamente montado:

Gerando o Boleto no aplicativo exemploAo rodar o aplicativo, ser exibida a seguinte tela, mostrando o formulrio Controle de Aluguis:

Selecione o senhorio > selecione o inquilino > Clique no boto "Gerar novo boleto" para o inquilino selecionado.O formulrio de preenchimento de boleto ser exibido, conforme imagem abaixo:

Basta preencher a data do documento, a data do vencimento e relacionar os itens dos campos de instrues aos seus respectivos valores. Ento, ao trmino do preenchimento, ao clicar em "Imprimir Boleto" ser visualizado o boleto para a impresso.Uso do mtodo LINE em vez das imagens (24/07/2013)Um colega de frum chamou a minha ateno para o fato de que eu poderia utilizar o mtodo LINE, ao invs das imagens, pois desta forma, dispensaria o uso dos Controles de Imagens. Resolvi pr em prtica o LINE e o resultado foi timo, tornando tanto a montagem como a programao, bem mais simples.Para quem quiser saber a fundo sobre o uso do LINE,clique aquie veja o meu artigo.Observe o cdigo modificado como ficou:Const px1 = 15 '1 pixelConst px3 = 45 '3 pixels

'posio esquerda da primeira barra, em relao a margemPosioEsquerda = 115.2

smyI25 = fncI25Encode(cod_barra)bBar = TrueFor ipos = 1 To Len(smyI25) If (bBar) Then sgif = Mid(smyI25, ipos, 1) & "b.gif" Else sgif = Mid(smyI25, ipos, 1) & "s.gif" End If'Montando a barra com o LINE Me.Line (PosioEsquerda,14175)-(PosioEsquerda + IIf(Left(sgif,1)="3",px3,px1),14927), _ IIf(bbar = True, vbBlack, vbWhite), BF 'Armazenando a prxima posio esquerda PosioEsquerda = PosioEsquerda + IIf(Left(sgif, 1) = "3", px3, px1) bBar = Not bBarNextO uso do LINE est no relatriorltBoletoIta_linedo arquivo exemplo.DownloadPara entrar no modo estrutura, mantenha pressionada a tecla SHIFT na inicializao.Para visualizar o Painel de Controle, utilize a tecla F11.BoletoItau.zipNota:O exemplo aqui oferecido para boleto sem registro. Caso necessite elaborar o seu boleto com registro e remessa, faa o download abaixo do arquivo do Ita, que segue as instrues da Fenabran 240 de abril de 2013.Cobranca_cnab240.zipBom estudo e sucesso!

Boleto Caixa Econmica no formato PDF para envio por emailEm um dos meus tutoriais foi apresentada a tcnica de gerar oCdigo de Barras, utilizando o mtodoLINEdo objeto relatrio. A grande vantagem de utilizar o mtodoLINE a compatibilidade entre as verses do Access, sejam elas de 32 ou 64 bits. Foi utilizado, como exemplo prtico, a gerao de boletos referente aoBANCOITA.Clique aquipara ter acesso ao tutorial e conhecer as tcnicas empregadas neste processo.Boleto Caixa Econmica FederalCom a documentao especfica da Caixa Econmica em mos ficou relativamente simples adaptar a gerao de boleto do Banco Ita para o da Caixa Econmica. A principal alterao foi na seqncia de montagem do cdigo que pode ser comparada abaixo:'--------Itau ------------'codigo_sequencia = banco & moeda & fator & valorSeq & Carteira & NossoNumero & _ dv_nossonumero & Agencia & Conta & Dv_conta & "000"'--------------------------'

'--------Caixa------------'codigo_sequencia = banco & moeda & fator & valorSeq & NossoNumero & Agencia & _ Operacao & String(8 - Len(Conta), "0") & Conta'-------------------------'Gerando o boleto em PDF e enviando pelo OutookPara incrementar o projeto foi acrescentado o cdigo que gera o PDF do boleto e o envia por email, utilizando o Outlook. A base para o cdigo gerador do PDF foi utilizadadeste meu tutorial, que ensina a utilizar o comandoDocmd.OutPutTo.

Ao clicar no boto"Enviar boleto por Email", toda a estrutura do email montada e exibida no Outlook, conforme voc pode observar na imagem abaixo:Para enviar o email de forma automtica, sem esta prvia visualizao, basta alterar a linhaobjmail.Displayparaobjmail.send.DownloadSegue abaixo o aplicativo exemplo. Foi includa a documentao especfica da Caixa Econmica Federal, caso haja a necessidade de alguma modificao.BoletoCaixa.zipSucesso!