Notifications
Clear all

Executar Consulta com Função Access

4 Posts
2 Usuários
0 Reactions
792 Visualizações
(@orbite)
Posts: 2
New Member
Topic starter
 

Pessoal

Seguinte,
Tenho uma função no Access para torna meus Join Case Sensitive, segue abaixo:
************************************************************************************************
Option Compare Database
Function compara_texto(texto1 As String, texto2 As String) As Integer

compara_texto = StrComp(texto1, texto2, 0)

End Function
*********************************************************************************************
Quando coloco em uma consulta no Access, ela roda normal, mas ao tentar executar pelo Excel(VBA), ele não devolve nenhum resultado.
Segue abaixo Macro do Excel:

*********************************************************************************************

Dim rs As ADODB.Recordset
Dim cn As ADODB.Connection
Dim strDB As String
Dim strSQL As String
Set cn = New ADODB.Connection
Set rs = New ADODB.Recordset

strDB = "C:UsersEuDesktopDB_Emrpesa_Boletim.accdb"
cn.ConnectionString = _
"Provider=Microsoft.ACE.OLEDB.12.0;" & _
"Data Source=" & strDB & ";"
cn.Open

Sql = ("SELECT TMP.DATA, TMP.HORA, TMP.STATUS, TMP.ORIGEM, TMP.DESQ, Count(TMP.ID) AS ContarDeID " & _
" FROM (SELECT DISTINCT TA.[Data de criação] AS DATA, FORMAT(TA.[Hora de criação],'HH') AS HORA, TC.[Data de criação] AS DATA_ATV " & _
" , TA.[Status do lead] AS STATUS, TA.[Origem do lead] AS ORIGEM, TA.[Motivo da desqualificação] AS DESQ, TA. " & _
" , TA.[Id Principal] AS ID FROM ((TB_BOLETIM_5_LEAD AS TA " & _
" INNER JOIN TB_BOLETIM_6_ATV_LEAD AS TB ON TA.[Id Principal]=TB.[Id Principal]) " & _
" INNER JOIN TB_BOLETIM_3_ATV AS TC ON TB.[ID da atividade]=TC.[ID da atividade]) " & _
" WHERE TA.[Data de criação]=#" & Format(data, "m/d/yyyy") & "# AND TC.[Papel Atribuído] like '%TP%' " & _
" AND TA.[Convertido] = 0 " & _
" AND TA.[produto] <> 'Desqualificado' " & _
" AND compara_texto(TA.[Id Principal],TB.[Id Principal]) " & _
" AND compara_texto(TB.[ID da atividade],TC.[ID da atividade])) AS TMP " & _
" GROUP BY TMP.DATA, TMP.HORA, TMP.STATUS, TMP.ORIGEM, TMP.DESQ;")
Set rs = cn.Execute(Sql),
cn.Close

************************************************************************************************

 
Postado : 01/12/2016 9:18 am
Fernando Fernandes
(@fernandofernandes)
Posts: 43750
Illustrious Member
 

troque rs.execute, por

rs.Open Sql , cn

Existem mil maneiras de preparar Neston. Invente a sua!
http://www.youtube.com/ExpressoExcel

 
Postado : 01/12/2016 12:23 pm
(@orbite)
Posts: 2
New Member
Topic starter
 

Não Funcionou :|

 
Postado : 01/12/2016 12:37 pm
Fernando Fernandes
(@fernandofernandes)
Posts: 43750
Illustrious Member
 

Troque:

Set rs = cn.Execute(Sql),

por:

rs.open sql, cn, adOpenKeyset, adLockOptimistic, adCmdText

Existem mil maneiras de preparar Neston. Invente a sua!
http://www.youtube.com/ExpressoExcel

 
Postado : 01/12/2016 8:06 pm