- 16 Mar 2017 às 20:57
#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.
Coloquei OMITIDO na conexão.
Existe outra forma de recuperar os dados do select?
Att.
Felipe Arruda
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
A consulta acima roda normalmente no Oracle.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
Coloquei OMITIDO na conexão.
Código: Selecionar todos
O com o select acima (simples) eu consigo trazer os dados e popular na planilha.SELECT *
FROM PREST
Existe outra forma de recuperar os dados do select?
Att.
Felipe Arruda