Ir para conteúdo
Fórum Script Brasil
  • 0

(Resolvido) Exportando (salvando) relatorio em ".xls" Excel.


Danleonhart

Pergunta

Pessoal,

Como posso fazer para salvar (exportar) os dados contidos em um relatório do BD SQL em uma planilha do Excel ?

Os dados são visto no aplicativo VB-6 em uma FlexGrid/DataGrid...então tem a opção de imprimir (pelo Data Report), e ele tem a opção de exportar (txt , html...),menos "xls"...se não for pelo Data Report, pretendo criar um botão extra para fazer esta exportação...

Dicas e opiniões serão bem recebidas ! ^_^

Editado por Danleonhart
Link para o comentário
Compartilhar em outros sites

4 respostass a esta questão

Posts Recomendados

  • 0

Pessoal...

Tenho uma base...só falta o complemento.

Acho que com "For" e "Do While" dá para fazer...porém não sou muito bom em ambos :(

Meu script até o momento:

No General Declarations:

Dim AExcel As Excel.Application ' Aplicação
Dim BExcel As Excel.Workbook    ' Arquivo
Dim CExcel As Excel.Worksheet   ' Planilha
Dim I As Integer
Script em Sub:
Private ImpExcel()

Set AExcel = New Excel.Application               ' Configurando a aplicação Excel
 If Dir(App.Path & "\Impress.xls") = Empty Then
  Set BExcel = AExcel.Workbooks.Add           'Configurando o arquivo
  Set CExcel = BExcel.Sheets(1)                  ' Configurando a Planilha

 With CExcel
            .Cells(1, 1) = "ID :"
            .Cells(1, 2) = "Nome :"        '  Configurando as células iniciais
            .Cells(1, 3) = "Cidade :"
            .Cells(1, 4) = "País :"
End With
      
 End If

      ' Abrindo o BD e criando o RecordSet
abb
rs = New ADODB.Recordset
rs.CursorLocation = adUseServer
rs.Open "select * from base", con, adOpenKeyset, adLockReadOnly

?????????????????????????        ' Onde falta configurar para de acordo com a quantidade de Linhas e Colunas apresentar na planilha Excel.

Pessoal, dicas e opiniões continuam sendo bem vindas :D

Editado por Danleonhart
Link para o comentário
Compartilhar em outros sites

  • 0

se eu entendi o que pretente, usa:

if not rs.eof then  ' Verifica se tem registro no SQL
     rs.movefirst ' Aponta para o primeiro registro
           while not rs.EOF  'executa o loop enquando End Of File for negativo
                  codigo de preenchimento   'Entra seu código de preenchimento
                  rs.moveNext  ' passa para a proxima linha do recordSet
            loop
end if

Link para o comentário
Compartilhar em outros sites

  • 0

:unsure: Pessoal...

Já batí cabeça demais e não conseguí...mudei o script em relação ao do início do tópico e não obtive o resultado esperado...então, venho pedir novamente ajuda a vocês...

Seguinte:

Tenho um projeto onde uso ADO para conectar-se a um BD e carrego um RecordSet (RS)...até aí beleza...

Coloquei uma opção para carregar o "RS" para uma Planilha Excel...carregar até que carrega, porém, se o usuário colocar para recarregar novamente surge um erro:

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

"Run time error '1004'

Method 'Range' of object'_Global' failed"

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

e aponta para a linha do scrip marcada abaixo (segue o novo script que fiz para a tarefa):

Private Sub cmd_T_Click()

Dim sql As String
Dim I As Integer
Dim AplExcel As Excel.Application ' Aplicação
Dim BokExcel As Excel.Workbook    ' Arquivo
Dim ShtExcel As Excel.Worksheet   ' Planilha


 Set AplExcel = New Excel.Application
 Set BokExcel = AplExcel.Workbooks.Add
 Set ShtExcel = BokExcel.Sheets(1)

 'define o cabeçalho das células no excel

Range("A1").Value = "ID:"       <== O ERRO APONTA PARA ESTA LINHA !
Range("B1").Value = "Nome:"
Range("C1").Value = "Cidade:"
Range("D1").Value = "País:"

abb    'Conexão com o banco de dados;

Set rs = New ADODB.Recordset    'define o objeto recordset
sql = "SELECT * from base"    'define a instrução sql
rs.Open sql, con   'gera o recordset para o sql sobre a conexao definida

 ' Preenche o restante das células com dados do RecordSet;
I = 2
If Not rs.EOF Then
     Do Until rs.EOF
        Range("A" & I).Value = rs(0)
        Range("B" & I).Value = rs(1)
        Range("C" & I).Value = rs(2)
        Range("D" & I).Value = rs(3)
        rs.MoveNext

        I = I + 1
     Loop

End If
AplExcel.Visible = True
Set AplExcel = Nothing
Set BokExcel = Nothing
Set ShtExcel = Nothing

End Sub

Detalhes:

- Isso acontece sempre na segunda vez que tenta-se abrir o RS no Excel;

-Notei também que mesmo depois de fechar a Planilha recém aberta, ainda continua no Gerenciador de Tarfefas do Windows (TaskMgr), isso ocupa memória do sistema correto ?!

Até tentei burlar isso utilizando o "Taskkill", mas o problema é que fecha todas as planilhas que estiverem abertas...

Isso tá me tirando o sono pessoal...

a primeira exportação até funciona, mas na segunda... "ERROR" ! :angry:

Link para o comentário
Compartilhar em outros sites

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,3k
    • Posts
      652,4k
×
×
  • Criar Novo...