Página 1 de 1

consulta ultilizando ADODB com critérios em planilha excel

Enviado: 03 Abr 2016 às 10:47
por Cristopherfk
Caros Colegas,

Venho aqui novamente solicitar a ajuda de vocês com um problema que me deparei recentemente.

tenho o codigo abaixo me passado pelo nosso colega @Startec em outro tópico, que basicamente traz os dados das colunas selecionadas através de um conexão ADODB .
Código: Selecionar todos
Sub ImportarDadosdeOutraPlanilha()
'  ******  Habilitado a referencia ' Microsoft ActiveX Data Objects X.XX Library'  ******

                '  Rotina que importa dados da Planilha (aba) REDE

    Dim strDB As String
    Dim strSQL As String
    Dim adoRecSet As New ADODB.Recordset
    Dim connDB As New ADODB.Connection
    Dim cmd As ADODB.Command
    Dim i As Long
    Dim uL As Long
    Dim contaDados As Integer
     i = 2
     
    On eror GoTo Erro
    
    With Worksheets("Depositos")
    
   uL = .Cells(Rows.Count, 1).End(xlUp).Offset(1, 0).Row
   .Range("A2:E" & uL).ClearContents     '  Limpa os dados importados anteriormente
   
    End With
    
        '  * * * * * *  AQUI: Habilite e ajuste a linha abaixo e desabilite a linha mais abaixo * * * * * *
 '  strDB = " \\fwscorp\compartilhamento\AquiNomeDaPlanilhaEmRede.xlsx"
    strDB = ThisWorkbook.Path & "\ADODB excel.xlsx"

    connDB.Open ConnectionString:="Provider = Microsoft.ACE.OLEDB.12.0; data source=" & strDB _
                                  & ";Extended Properties=;" & "Excel 12.0 Xml;HDR=YES;IMEX=1;"
                                  
    strSQL = "SELECT  * FROM [REDE$A1:H]"   'Altere aqui de acordo com o nome da sua planilha(aba), mantendo o($) na rede
  
    adoRecSet.Open Source:=strSQL, ActiveConnection:=connDB, CursorType:=adOpenDynamic, LockType:=adLockOptimistic
    

While Not adoRecSet.EOF

With Worksheets("Depositos")

' insere os dados importados na aba depositos
.Range("A" & i) = adoRecSet.Fields(0)
.Range("B" & i) = adoRecSet.Fields(1)
.Range("C" & i) = adoRecSet.Fields(2)
.Range("D" & i) = adoRecSet.Fields(3)
.Range("E" & i) = adoRecSet.Fields(4)
contaDados = contaDados + IIf(adoRecSet.Fields(0) <> "Nulo", 1, 0)
End With

adoRecSet.MoveNext
i = i + 1

Wend

adoRecSet.Close
Set adoRecSet = Nothing
If contaDados > 0 Then MsgBox contaDados & " linha(s) importada(s)", vbDefaultButton1, "Aviso"
Exit Sub

Erro: adoRecSet.Close
Set adoRecSet = Nothing
MsgBox Err.Description

End Sub

A duvida surgiu quando eu estava fazendo alguns testes e me deparei com a necessidade de fazer um "filtro" no recordset do ADODB pesquisei um pouco e cheguei no seguinte codigo:
Fonte do codigo : http://www.macoratti.net/ado_filt.htm

Código original :
Código: Selecionar todos
rs.Filter = "criterio" 
Critérios que preciso:
Código: Selecionar todos
rs.Filter = "DEPOSITO RECURSAL" 
Código: Selecionar todos
rs.Filter = "DEPOSITO JUDICIAL" 
mas não tenho ideia de onde coloca-lo no codigo.
o filtro basicamente teria que trazer para a aba recursal e para a aba judicial os dados tendo como "filtro" o nome na coluna NOME DA VERBA.

Obs: segue em anexo as planilhas.

Obrigado novamente pela atenção.
CristopherFK

Re: CONSULTA UTILIZANDO ADODB COM CRITÉRIOS EM PLANILHA EXCE

Enviado: 03 Abr 2016 às 10:58
por Kledison
Bom dia,

Favor corrigir o título do tópico.

Regra nº 2A:
Os membros devem postar de maneira que seja consistente com a "escrita normal". Os membros não devem usar quantidades excessivas de emoticons, não devem usar CAIXA ALTA EM EXCESSO, ou usar quantidades excessivas de pontuação, seja em posts ou títulos.

Se o título não for corrigido em 24 horas, o tópico será excluído


Att
Moderador

Re: consulta ultilizando ADODB com critérios em planilha e

Enviado: 04 Abr 2016 às 10:06
por Reinaldo
Faltaram as planilhas, então carece de testes:
Pode fazer a seleção/filtro ja no inicio:
Código: Selecionar todos
strSQL = "SELECT  * FROM [REDE$A1:H] Where NomeseuCampo='DEPOSITO'"
ou ainda na "gravação"
Código: Selecionar todos
While Not adoRecSet.EOF
if adorecset.fields(?)="DEPOSITO" then   'Substitua ? pelo numero do campo com o valor desejado
With Worksheets("Depositos")

' insere os dados importados na aba depositos
.Range("A" & i) = adoRecSet.Fields(0)
.Range("B" & i) = adoRecSet.Fields(1)
.Range("C" & i) = adoRecSet.Fields(2)
.Range("D" & i) = adoRecSet.Fields(3)
.Range("E" & i) = adoRecSet.Fields(4)
contaDados = contaDados + IIf(adoRecSet.Fields(0) <> "Nulo", 1, 0)
End With
end if
adoRecSet.MoveNext
i = i + 1....

Re: consulta ultilizando ADODB com critérios em planilha e

Enviado: 04 Abr 2016 às 13:01
por Startec
Exemplificando o que o colega Reinaldo colocou:
Veja o anexo.:

consulta ultilizando ADODB com critérios em planilha excel

Enviado: 04 Abr 2016 às 21:24
por Cristopherfk
ola meus caros,

primeiro agradeço ao nosso amigo @Reinaldo e novamente ao nosso amigo @Startec pela ajuda e atenção
OBS: re-upei os arquivos para que possam analisá-los

Basicamente o arquivo que nosso amigo @Startec passo acima. Porém, eu necessitava que o ADO fosse feito automaticamente e nao precisa-se selecioná-lo. necessito disso pois estou trabalhando em um sistema com Excel e Access

Sobre os códigos que nosso amigo @Reinaldo posso ,testei aqui como o exemplo abaixo e infelizmente nao funcionaram mais agradeço.

strSQL = "SELECT * FROM [REDE$A1:H] Where NOME DA VERBA='DEPOSITO RECURSAL'"

se puderem me ajudar com mais essa ficarei mt grato +D

Re: consulta ultilizando ADODB com critérios em planilha e

Enviado: 05 Abr 2016 às 08:01
por Startec
Sobre os códigos que nosso amigo @Reinaldo posso ,testei aqui como o exemplo abaixo e infelizmente nao funcionaram mais agradeço.
strSQL = "SELECT * FROM [REDE$A1:H] Where NOME DA VERBA='DEPOSITO RECURSAL'"
Para este caso do seu campo "NOME DA VERBA" com palavra composta é necessario o uso de "[ ]" -> [NOME DA VERBA], para não gerar erros.
Basicamente o arquivo que nosso amigo @Startec passo acima. Porém, eu necessitava que o ADO fosse feito automaticamente e nao precisa-se selecioná-lo. necessito disso pois estou trabalhando em um sistema com Excel e Access
Para integrar o Excel ao Access, praaticamente muda-se pouca coisa ao referenciar o provedor, por exemplo:
Código: Selecionar todos
StrDB = ThisWorkbook.Path & "\SeuBd_Access.accdb"

strConnection = "Provider=Microsoft.ce.OLEDB.12.0;" & _
    "Data Source=" & StrDB 
Por favor, poste sua planilha ou um exemplo com alguns dados ficticios, para que possamos ajuda-lo .

consulta ultilizando ADODB com critérios em planilha excel

Enviado: 05 Abr 2016 às 20:00
por Cristopherfk
Segue em anexo as planilhas

o ADODB com o codigo que nosso amigo @Startec me passou esta funcionando perfeitamente.

Mas, se reparar coloquei uma coluna a mais que é a nome da verba porem quando executo o ele vai trazer ele completa.

gostaria de fazer o filtro como ja foi citado anteriormente. para que todos que contiverem o status DEPOSITO RECURSAL na coluna NOME DA VERBA fossem enviados para a planilha RECURSAL e todos que contiverem o status DEPOSITO JUDICIAL fossem enviados para a planilha JUDICIAL.

Tudo automaticamente pois esse ADODB sera colocado em um projeto em que os usuários nao terão acesso para utilizar as planilhas somente acesso aos forms. alem de necessitar dessa divisão para realizar uma consulta que traz os dados para um forme.

Desde ja agradeço.
Att,
Cristopher.

Re: consulta ultilizando ADODB com critérios em planilha e

Enviado: 06 Abr 2016 às 12:30
por Startec
Para este caso nao apliquei o filtro "where" do ex que postei anteriormente, apenas distribui os registros para as suas respect. abas.