Notifications
Clear all

Erro ao executar SQL no metodo do excel

10 Posts
3 Usuários
0 Reactions
1,748 Visualizações
(@nlsouza)
Posts: 8
Active Member
Topic starter
 

Colega, boa noite.
A consulta abaixo, quando executo no access, funciona corretamente, mas quando executo no codigo abaixo, referenciando o campo [Descr Primeiro Det] que esta na planilha listaMestra.xls, da a mensagem de "tipos incompativeis", se eu tiro [Descr Primeiro Det], retorna o nome, ou seja funciona.
Podem me ajudar?

@Preciso usar o [Descr Primeiro Det] em meu projeto.

strSql = "SELECT [Registro], [Nome do Empregado],[Descr Primeiro Det]" _
        & " FROM [Banco$]" _
        & " GROUP BY [Registro], [Nome do Empregado],[Descr Primeiro Det]" _
        & " HAVING [Registro]='501.735/1' AND [Descr Primeiro Det] = 'FALTA'"


Function querySql(codigoSql As String) As ADODB.Recordset
On Error GoTo Err_querySql

Dim oConn As ADODB.Connection
Dim oCmd As ADODB.Command
Dim caminho, arquivo, diretorio As String
'Dim oRS As ADODB.Recordset

arquivo = "listaMestra.xls"
diretorio = ThisWorkbook.Path
caminho = ThisWorkbook.Path & "" & arquivo

' abre uma conexao com a planilha excel
Set oConn = New ADODB.Connection
oConn.Open "Provider=Microsoft.Jet.OLEDB.4.0;" & _
                     "Data Source=" & caminho & ";" & _
                     "Extended Properties=""Excel 8.0;HDR=Yes;"";"                
    
 ' cria o objecto command e define a conexao ativa
Set oCmd = New ADODB.Command
oCmd.ActiveConnection = oConn

' abre a planilha
oCmd.CommandText = codigoSql

' cria o recordset com os dados
Set querySql = New ADODB.Recordset
querySql.Open oCmd, , adOpenKeyset, adLockOptimistic     
  

Exit_querySql:
    Set db = Nothing
    Exit Function

Err_querySql:
    MsgBox "Erro SQL: " & codigoSql, Err.Description
    
    Set querySql = Nothing
    Resume Exit_querySql

End Function
 
Postado : 07/03/2016 7:37 pm
(@robo8268)
Posts: 73
Trusted Member
 

nlsouza, se eu não me engano, as consultas access não funcionam com aspas simples ('), mas sim com aspas duplas ""

tente substiuí-las na cláusula HAVING

 
Postado : 08/03/2016 6:51 am
Fernando Fernandes
(@fernandofernandes)
Posts: 43750
Illustrious Member
 

Que tipo de dado é esperado em [Descr Primeiro Det] ?
Pode disponibilizar modelo/exemplo??

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

 
Postado : 08/03/2016 6:58 am
(@nlsouza)
Posts: 8
Active Member
Topic starter
 

O dado é uma string, no exemplo dado disse: Descr Primeiro Det] = 'FALTA'
Nesta coluna, tem os dados , FERIAS, FALTA, FOLGA, ou seja, somente texto.

 
Postado : 08/03/2016 10:17 am
(@nlsouza)
Posts: 8
Active Member
Topic starter
 

nlsouza, se eu não me engano, as consultas access não funcionam com aspas simples ('), mas sim com aspas duplas ""

tente substiuí-las na cláusula HAVING

Não é access, é excel. O no access vba com com aspas simples.

E estranho que fiz um outro exemplo, e as variaveis crt1 ,crt12, são do tipo integer, mas da tipo incompativel, se eu fizer

BETWEEN " 1 AND 2 "

, passando o numero direto, não da o erro.

O saida com os valores guardados em crt1 e ctr2 é a seguinte:

SELECT SUM(Banco$.TExec) AS TExec,SUM(Banco$.TInter) AS TInter,SUM(Banco$.TDISP) AS TDISP,Banco$.dia FROM  [Banco$] GROUP BY [Banco$.Dia] HAVING Banco$.dia BETWEEN 2 AND 3 

, ou seja, o mesmo que passar o numero direto no sql. Que coisa estranha!!


   strSql = "SELECT SUM(Banco$.TExec) AS TExec,SUM(Banco$.TInter) AS TInter,SUM(Banco$.TDISP) AS TDISP,Banco$.dia FROM " _
                & " [Banco$] GROUP BY [Banco$.Dia] HAVING Banco$.dia BETWEEN " & crt1 & " AND " & crt2 & " "
    
    Set Db2 = OpenDatabase(ThisWorkbook.Path & "" & ThisWorkbook.Name, False, False, "Excel 8.0")
    Set RSt2 = Db2.OpenRecordset(strSql)
 
Postado : 08/03/2016 10:43 am
(@nlsouza)
Posts: 8
Active Member
Topic starter
 

Conforme pedido,
em anexo a planilha de exemplo.
Desde ja muito obrigado.

 
Postado : 08/03/2016 10:54 am
(@robo8268)
Posts: 73
Trusted Member
 

Ao invés de Beteween "1 and 2", tente Between "1" And "2"

Eu já tive esse problema conectando um excel com uma base Access, e trocando as aspas simples por aspas duplas resolveu o meu problema...

 
Postado : 08/03/2016 11:40 am
(@nlsouza)
Posts: 8
Active Member
Topic starter
 

Não deu certo

 
Postado : 08/03/2016 11:46 am
Fernando Fernandes
(@fernandofernandes)
Posts: 43750
Illustrious Member
 

Considerando o modelo que enviou, a única discrepância encontrada:
O nome do quarto campo contem ponto na sua decrição e assim não é aceito na "passagem da instrução SQL.
Alterado de D1=Descr. Primeiro Det. para D1=Descr Primeiro Det; assim rodou/executou a instrução sem erro algum

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

 
Postado : 08/03/2016 1:34 pm
(@nlsouza)
Posts: 8
Active Member
Topic starter
 

Muito obrigadado.

 
Postado : 08/03/2016 3:31 pm