Este fórum está sendo desativado

Depois de 9 anos, este fórum será desativado. Mas calma.... estamos migrando para uma comunidade no DISCORD. Junte-se a nós.

ENTRAR PARA DISCORD

Tópicos relacionados a códigos VBA, gravação de macros, etc.
Por FelipeArruda
Posts
#21421
Prezados, boa noite!

Tenho uma planilha que utiliza uma função em VBA onde conecto no banco Oracle, porém ao executar o sql e passar para o resultset não vem nenhum valor.
Código: Selecionar todos
Sub autImportados()
    Dim linhaI As Integer
    Dim colunaI As Integer
    Dim linhaF As Integer
    Dim colunaF As Integer
    Dim sql As String
    
    Dim cn As ADODB.Connection
    Dim rs As New ADODB.Recordset
    
    'DEFINE A LINHA E COLUNA QUE IRA COMECAR
    linhaI = 1
    colunaI = 8
    
    linhaF = 1
    colunaF = 10
    
    On Error Resume Next
    
    'DEFINE A CONEXAO COM O BANCO DE DADOS
    Set cn = New ADODB.Connection
    'DEFINE UM NOVO RECORDSET
    Set rs = New ADODB.Recordset
  
    cn.CursorLocation = adUseClient
    'ABRE A CONEXAO COM O BANCO
       cn.Open "Provider=OraOLEDB.Oracle;Data Source=(DESCRIPTION=(CID=GTU_APP)(ADDRESS_LIST=(ADDRESS=(PROTOCOL=TCP)(HOST=OMITIDO)(PORT=1521)))(CONNECT_DATA=(SID=OMITIDO)(SERVER=DEDICATED)));User Id=OMITIDO;Password=OMITIDO;"
           
    sql = "SELECT X.NM_USUARIO, X.dt_digitacao solicitacao, X.tipo, COUNT(*) QTDE FROM ( "
        sql = sql & "SELECT u.NM_USUARIO, "
        sql = sql & "TRUNC(s.dt_digitacao) dt_digitacao, "
        sql = sql & "DECODE(s.tp_solicitacao, 0, 'SADT', 1, 'Internação', 2, 'Consulta') tipo "
        sql = sql & "FROM   autsc2_solicitacoes s, autsc2_usuarios u "
        sql = sql & "WHERE  s.cd_usuario_criador = u.cd_usuario "
        sql = sql & "AND    (u.CD_GRUPO = 98 OR u.CD_GRUPO = 3) "
        sql = sql & "AND    s.nr_versao > 0 "
        sql = sql & "AND    s.dt_digitacao >= to_date('" & Cells(linhaI, colunaI).Value & "') "
        sql = sql & "AND    trunc(s.dt_digitacao) <= to_date('" & Cells(linhaF, colunaF).Value & "')) X "
    sql = sql & "GROUP  BY X.NM_USUARIO, X.dt_digitacao, X.tipo "
    sql = sql & "ORDER  BY X.dt_digitacao, X.tipo"
         
    rs.Open sql, cn
    
    Range("A1").Value = "NOME USUÁRIO"
    Range("B1").Value = "DATA"
    Range("C1").Value = "TIPO"
    Range("D1").Value = "QTDE"

    i = 2
    If Not rs.EOF Then
        Range("A" & i) = rs(0)
        i = i + 1
        rs.MoveNext
    End If
    
    'FECHA A CONEXÃO
    cn.Close
End Sub
A consulta acima roda normalmente no Oracle.

Coloquei OMITIDO na conexão.
Código: Selecionar todos
SELECT *
    FROM PREST
O com o select acima (simples) eu consigo trazer os dados e popular na planilha.



Existe outra forma de recuperar os dados do select?

Att.

Felipe Arruda
Por FelipeArruda
Posts
#21477
Solução: no SELECT tive que alterar para o padrão abaixo incluindo o INNER JOIN.
Código: Selecionar todos
sql = "SELECT X.NM_USUARIO, X.dt_digitacao solicitacao, X.tipo, COUNT(*) QTDE FROM ( "
        sql = sql & "SELECT u.NM_USUARIO, "
        sql = sql & "TRUNC(s.dt_digitacao) dt_digitacao, "
        sql = sql & "DECODE(s.tp_solicitacao, 0, 'SADT', 1, 'Internação', 2, 'Consulta') tipo "
        sql = sql & "FROM   autsc2_solicitacoes s "
        sql = sql & "INNER JOIN autsc2_usuarios u"
       sql = sql & "on  s.cd_usuario_criador = u.cd_usuario"
        sql = sql & "WHERE (u.CD_GRUPO = 98 OR u.CD_GRUPO = 3)  "
        sql = sql & "AND    s.nr_versao > 0 "
        sql = sql & "AND    s.dt_digitacao >= to_date('" & Cells(linhaI, colunaI).Value & "') "
        sql = sql & "AND    trunc(s.dt_digitacao) <= to_date('" & Cells(linhaF, colunaF).Value & "')) X "
    sql = sql & "GROUP  BY X.NM_USUARIO, X.dt_digitacao, X.tipo "
    sql = sql & "ORDER  BY X.dt_digitacao, X.tipo"
long long title how many chars? lets see 123 ok more? yes 60

We have created lots of YouTube videos just so you can achieve [...]

Another post test yes yes yes or no, maybe ni? :-/

The best flat phpBB theme around. Period. Fine craftmanship and [...]

Do you need a super MOD? Well here it is. chew on this

All you need is right here. Content tag, SEO, listing, Pizza and spaghetti [...]

Lasagna on me this time ok? I got plenty of cash

this should be fantastic. but what about links,images, bbcodes etc etc? [...]

Estamos migrando para uma comunidade no Discord