TRANSFORMAR RELATORIO EM HTML
Bom dia Pessoal!
Estou precisando de uma Ajuda.
Conforme a Figura tenho um relatório no ListView do vb6. Eu quero transformar esse relatório em uma pagma em HTML e salva-la em um diretorio, onde eu possa clicar em um botão no proprio vb ou no Outlook e envia-la por email.
Quem poder me ajudar eu agradeço!
Estou precisando de uma Ajuda.
Conforme a Figura tenho um relatório no ListView do vb6. Eu quero transformar esse relatório em uma pagma em HTML e salva-la em um diretorio, onde eu possa clicar em um botão no proprio vb ou no Outlook e envia-la por email.
Quem poder me ajudar eu agradeço!
Preciso criar uma rotina quando clicar em um botão enviar diretamente para o email informado ou abrir o Outlook com as informaçãoes anexadas, ai eu informo o email a ser enviado. Sem converter no datareport.
Mesmo assim Valeu Nilson2
Mesmo assim Valeu Nilson2
Bom dia
Segue exemplos que podera auxiliar no seu trabalho
Criando um Banco de dados e Gerando HTML
neste exemplo ele criar um html externo que podera ser inserido no seu e-mail, ou caso tenha um pouco mais de paciencia poderá inserir o texto dentro do proprio corpo do e-mail
http://www.macoratti.net/dica55.htm
Gerando arquivos HTML a partir de seu Banco de Dados
http://www.macoratti.net/bdtohtml.htm
Segue exemplos que podera auxiliar no seu trabalho
Criando um Banco de dados e Gerando HTML
neste exemplo ele criar um html externo que podera ser inserido no seu e-mail, ou caso tenha um pouco mais de paciencia poderá inserir o texto dentro do proprio corpo do e-mail
http://www.macoratti.net/dica55.htm
Gerando arquivos HTML a partir de seu Banco de Dados
http://www.macoratti.net/bdtohtml.htm
Boa Tarde Pessoal!
De acordo com a imagem acima e a rotina abaixo, consegui fazer a pesquisa diretamente no banco de dados e gerando o relatório em HTML e salvando na unidade C do computador, depois chamando o OUTLOOK com o arquivo anexado o qual estava no C.
A minha dúvida é como gerar esse relatório diretamente no corpo do email do outlook sem salvar o relatório na unidade C do computador?
Quem poder me ajudar eu agradeço.
Dim Cabecalho As String
Dim Rodape As String
Dim DataString As String
Dim Salva As String
Set rsCliente = New ADODB.Recordset
sSQL = [Ô]SELECT i.codigo_aparelho, i.descricao, i.fabricante, i.valor_item [Ô]
sSQL = sSQL & [Ô]FROM cliente c [Ô]
sSQL = sSQL & [Ô]INNER JOIN ordemservico o [Ô]
sSQL = sSQL & [Ô]ON c.codigo = o.codigo_cliente [Ô]
sSQL = sSQL & [Ô]INNER JOIN item i [Ô]
sSQL = sSQL & [Ô]ON o.num_ordem = i.ordem [Ô]
sSQL = sSQL & [Ô]WHERE num_ordem=[Ô] & lblNumOrdem & [Ô] [Ô]
sSQL = sSQL & [Ô]ORDER BY num_item [Ô]
rsCliente.CursorLocation = adUseServer
rsCliente.Open sSQL, con, adOpenForwardOnly, adLockReadOnly
rsCliente.MoveFirst
While Not rsCliente.EOF
With rsCliente
DataString = DataString & [Ô]<FONT FACE=[Ô][Ô]VERDANA[Ô][Ô] SIZE=[Ô][Ô]-1[Ô][Ô]>[Ô] & .Fields([Ô]codigo_aparelho[Ô]) & [Ô]</FONT></TD><TD> [Ô] _
& [Ô]<FONT FACE=[Ô][Ô]TAHOMA[Ô][Ô] SIZE=[Ô][Ô]-1[Ô][Ô]>[Ô] & .Fields([Ô]descricao[Ô]) & [Ô] </FONT></TD><TD> [Ô] _
& [Ô]<FONT FACE=[Ô][Ô]TAHOMA[Ô][Ô] SIZE=[Ô][Ô]-1[Ô][Ô]>[Ô] & .Fields([Ô]fabricante[Ô]) & [Ô] </FONT></TD><TD> [Ô] _
& [Ô]<FONT FACE=[Ô][Ô]TAHOMA[Ô][Ô] SIZE=[Ô][Ô]-1[Ô][Ô]>[Ô] & Format(.Fields([Ô]valor_item[Ô]), [Ô]###,##0.00[Ô]) & [Ô] </FONT></TD></TR><TR><TD> [Ô]
.MoveNext
End With
Wend
Cabecalho = [Ô]<HTML><TITLE>Criando um Banco de dados e Gerando HTML</TITLE>[Ô]
Cabecalho = Cabecalho & [Ô]<h3 align=center>Orçamento Ordem de Serviço</h3>[Ô]
Cabecalho = Cabecalho & [Ô]<h5 align=right><TD></TD>Vendedor: [Ô] & cmbvendedor & [Ô]</h5>[Ô]
Cabecalho = Cabecalho & [Ô]<h4 align=left>Numero O.S: [Ô] & UCase(lblNumOrdem) & [Ô]</h5>[Ô]
Cabecalho = Cabecalho & [Ô]<BODY><BR><BR>Cliente: [Ô] & lblNomeCliente & [Ô]<BR><BR><TABLE BORDER=1 WIDTH=400>[Ô]
Cabecalho = Cabecalho & [Ô]<TR><TD><B>Código</B></TD>[Ô]
Cabecalho = Cabecalho & [Ô]<TD><B>Descrição</B></TD>[Ô]
Cabecalho = Cabecalho & [Ô]<TD><B>Fabricante</B></TD><TD><B>[Ô]
Cabecalho = Cabecalho & [Ô]Valor</B></TD></TR><TR><TD>[Ô]
Rodape = [Ô]<TD></TD><TD>Total</TD><TD>[Ô] & lblvalortotal & [Ô]</TD></FONT></TABLE><BR><BR><A HREF=[Ô][Ô]mailto:[Ô][Ô]></A></BODY></HTML>[Ô]
rsCliente.Close
Salva = [Ô]c:elatorio.html[Ô]
Open Salva For Output As #1
Print #1, Cabecalho
Print #1, DataString
Print #1, Rodape
Close 1
Dim Ret As Long
EmailEnv = [Ô] txtemail[Ô]
ShellExecute Me.hWnd, [Ô]Open[Ô], _
[Ô]mailto:[Ô] & EmailEnv & [Ô]?subject=[Ô] & Salva & [Ô]&body=Arquivo Anexado[Ô], _
vbNullString, vbNullString, vbNormalFocus
While Ret = 0
DoEvents
Ret = FindWindow(vbNullString, Salva)
Wend
SendKeys [Ô]%ia[Ô] & Salva & [Ô]{TAB}{TAB}{ENTER}[Ô]
De acordo com a imagem acima e a rotina abaixo, consegui fazer a pesquisa diretamente no banco de dados e gerando o relatório em HTML e salvando na unidade C do computador, depois chamando o OUTLOOK com o arquivo anexado o qual estava no C.
A minha dúvida é como gerar esse relatório diretamente no corpo do email do outlook sem salvar o relatório na unidade C do computador?
Quem poder me ajudar eu agradeço.
Dim Cabecalho As String
Dim Rodape As String
Dim DataString As String
Dim Salva As String
Set rsCliente = New ADODB.Recordset
sSQL = [Ô]SELECT i.codigo_aparelho, i.descricao, i.fabricante, i.valor_item [Ô]
sSQL = sSQL & [Ô]FROM cliente c [Ô]
sSQL = sSQL & [Ô]INNER JOIN ordemservico o [Ô]
sSQL = sSQL & [Ô]ON c.codigo = o.codigo_cliente [Ô]
sSQL = sSQL & [Ô]INNER JOIN item i [Ô]
sSQL = sSQL & [Ô]ON o.num_ordem = i.ordem [Ô]
sSQL = sSQL & [Ô]WHERE num_ordem=[Ô] & lblNumOrdem & [Ô] [Ô]
sSQL = sSQL & [Ô]ORDER BY num_item [Ô]
rsCliente.CursorLocation = adUseServer
rsCliente.Open sSQL, con, adOpenForwardOnly, adLockReadOnly
rsCliente.MoveFirst
While Not rsCliente.EOF
With rsCliente
DataString = DataString & [Ô]<FONT FACE=[Ô][Ô]VERDANA[Ô][Ô] SIZE=[Ô][Ô]-1[Ô][Ô]>[Ô] & .Fields([Ô]codigo_aparelho[Ô]) & [Ô]</FONT></TD><TD> [Ô] _
& [Ô]<FONT FACE=[Ô][Ô]TAHOMA[Ô][Ô] SIZE=[Ô][Ô]-1[Ô][Ô]>[Ô] & .Fields([Ô]descricao[Ô]) & [Ô] </FONT></TD><TD> [Ô] _
& [Ô]<FONT FACE=[Ô][Ô]TAHOMA[Ô][Ô] SIZE=[Ô][Ô]-1[Ô][Ô]>[Ô] & .Fields([Ô]fabricante[Ô]) & [Ô] </FONT></TD><TD> [Ô] _
& [Ô]<FONT FACE=[Ô][Ô]TAHOMA[Ô][Ô] SIZE=[Ô][Ô]-1[Ô][Ô]>[Ô] & Format(.Fields([Ô]valor_item[Ô]), [Ô]###,##0.00[Ô]) & [Ô] </FONT></TD></TR><TR><TD> [Ô]
.MoveNext
End With
Wend
Cabecalho = [Ô]<HTML><TITLE>Criando um Banco de dados e Gerando HTML</TITLE>[Ô]
Cabecalho = Cabecalho & [Ô]<h3 align=center>Orçamento Ordem de Serviço</h3>[Ô]
Cabecalho = Cabecalho & [Ô]<h5 align=right><TD></TD>Vendedor: [Ô] & cmbvendedor & [Ô]</h5>[Ô]
Cabecalho = Cabecalho & [Ô]<h4 align=left>Numero O.S: [Ô] & UCase(lblNumOrdem) & [Ô]</h5>[Ô]
Cabecalho = Cabecalho & [Ô]<BODY><BR><BR>Cliente: [Ô] & lblNomeCliente & [Ô]<BR><BR><TABLE BORDER=1 WIDTH=400>[Ô]
Cabecalho = Cabecalho & [Ô]<TR><TD><B>Código</B></TD>[Ô]
Cabecalho = Cabecalho & [Ô]<TD><B>Descrição</B></TD>[Ô]
Cabecalho = Cabecalho & [Ô]<TD><B>Fabricante</B></TD><TD><B>[Ô]
Cabecalho = Cabecalho & [Ô]Valor</B></TD></TR><TR><TD>[Ô]
Rodape = [Ô]<TD></TD><TD>Total</TD><TD>[Ô] & lblvalortotal & [Ô]</TD></FONT></TABLE><BR><BR><A HREF=[Ô][Ô]mailto:[Ô][Ô]></A></BODY></HTML>[Ô]
rsCliente.Close
Salva = [Ô]c:elatorio.html[Ô]
Open Salva For Output As #1
Print #1, Cabecalho
Print #1, DataString
Print #1, Rodape
Close 1
Dim Ret As Long
EmailEnv = [Ô] txtemail[Ô]
ShellExecute Me.hWnd, [Ô]Open[Ô], _
[Ô]mailto:[Ô] & EmailEnv & [Ô]?subject=[Ô] & Salva & [Ô]&body=Arquivo Anexado[Ô], _
vbNullString, vbNullString, vbNormalFocus
While Ret = 0
DoEvents
Ret = FindWindow(vbNullString, Salva)
Wend
SendKeys [Ô]%ia[Ô] & Salva & [Ô]{TAB}{TAB}{ENTER}[Ô]
Use o Crystal Report, é um programa de geração de relatórios.
Nele há a opção do usuário exportar o relatório para outros tipos de arquivo, como: XML, DOC, PDF, HTML e outros...
CR Developer 8.5 recomendo, leve e fácil de usar;
Nele há a opção do usuário exportar o relatório para outros tipos de arquivo, como: XML, DOC, PDF, HTML e outros...
CR Developer 8.5 recomendo, leve e fácil de usar;
Usar o Crystla é legal, mas lembre-se.
[Ô]A LICENÇA DELE é MUTIO CARA![Ô]
[Ô]A LICENÇA DELE é MUTIO CARA![Ô]
O melhor é transformar usar o método getstring:
dim Tabela as string
Public Function ConverteRsParaHTML(Rs as ADODB.Recordset) as string
Tabela = Tabela & [Ô]<TABLE><TR>[Ô]
For each f in rs.Fields
Tabela = Tabela & [Ô]<TH><B>[Ô] & f.Name & [Ô]</B></TH>[Ô]
Next
Tabela = Tabela & [Ô]</TR>[Ô]
Tabela = Tabela & [Ô]<TR><TD> </TD></TR>[Ô]
sAns = _
rs.GetString( , , [Ô]</TD><TD>[Ô], [Ô]</TD></TR><TR><TD>[Ô], [Ô] [Ô])
Tabela = Tabela & [Ô]<TR><TD>[Ô] & Left(sAns, Len(sAns) - 8)
Tabela = Tabela & [Ô]</TABLE>[Ô]
end function
Para usar:
set rs = new ADODB.Recordset
rs.open [Ô]Select xxx from tabela where xxx = yyy[Ô], SUA_CONEXAO
dim table as string
table = ConverteRsParaHTML(rs)
Depois disso, pode até salvar esse HTML para arquivo:
open [Ô]C:\minhatabela.html[Ô] for output as #1
print #1, table
close #1
dim Tabela as string
Public Function ConverteRsParaHTML(Rs as ADODB.Recordset) as string
Tabela = Tabela & [Ô]<TABLE><TR>[Ô]
For each f in rs.Fields
Tabela = Tabela & [Ô]<TH><B>[Ô] & f.Name & [Ô]</B></TH>[Ô]
Next
Tabela = Tabela & [Ô]</TR>[Ô]
Tabela = Tabela & [Ô]<TR><TD> </TD></TR>[Ô]
sAns = _
rs.GetString( , , [Ô]</TD><TD>[Ô], [Ô]</TD></TR><TR><TD>[Ô], [Ô] [Ô])
Tabela = Tabela & [Ô]<TR><TD>[Ô] & Left(sAns, Len(sAns) - 8)
Tabela = Tabela & [Ô]</TABLE>[Ô]
end function
Para usar:
set rs = new ADODB.Recordset
rs.open [Ô]Select xxx from tabela where xxx = yyy[Ô], SUA_CONEXAO
dim table as string
table = ConverteRsParaHTML(rs)
Depois disso, pode até salvar esse HTML para arquivo:
open [Ô]C:\minhatabela.html[Ô] for output as #1
print #1, table
close #1
O artigo abaixo mostra como enviar um e-mail pelo OUTLOOK.
Como automatizar o Outlook com o Visual Basic
Como automatizar o Outlook com o Visual Basic
Valeu Tecla pela ajuda, só que estou usando o Outlook Express do Windows. No VB não encontrei referência para ele.
Obrigado!
Obrigado!
Tópico encerrado , respostas não são mais permitidas