USUÁRIO:      SENHA:        SALVAR LOGIN ?    Adicione o VBWEB na sua lista de favoritos   Fale conosco 

 

  Fórum

  Visual Basic
Voltar
Autor Assunto:  Consulta Sql com 3 Parâmetros
Marcelo(mfc)
RIO DE JANEIRO
RJ - BRASIL
ENUNCIADA !
Postada em 26/11/2006 21:47 hs            
Caros Colegas do Forum..
Venho mais uma vez pedir uma ajuda....
Estou tendo problemas quando estou rodando a rotina de consulta, e está dando esse erro: (Run-Time error "13"  -  Type mismatch ) 
Segue abaixo a rotina:
 
Private Sub AtualizaGradeData()
Dim Parametros As String
Parametros = CboBandeira
    If DTPicker1 > DTPicker2 Then
        MsgBox "Data Início não pode ser maior Data Fim", vbExclamation, "Pesquisa Oferta"
    Else
Set Rs = Banco.OpenRecordset("SELECT Folhetos.CdCamp, Folhetos.CdPlu, Folhetos.NomeDesc,Folhetos.NomeBand,Folhetos.DtInicio, Folhetos.DtFim, Folhetos.PrOferta, Folhetos.PrevisQtd, Folhetos.PrevVlVendas, Folhetos.PrevDemarc, Folhetos.RealQtd, Folhetos.RealVlVendas, Folhetos.RealDemarc FROM Folhetos Where DtInicio BETWEEN #" & Format(DTPicker1.Value, "YYYY/MM/DD") & "# AND #" & Format(DTPicker2.Value, "YYYY/MM/DD") & "#" And "'FOLHETOS.NomeBand ='" & Parametros & "#")
i = 1
If Rs.EOF Then
    LblPrevVD = ""
    LblVLDermPrev = ""
    LblValorReal = ""
    LblVLDermReal = ""
    GrdPesquisa.Clear
    GrdPesquisa.Rows = 2
    MsgBox "Não existe dados para consultar", vbExclamation, "Consulta Oferta"
   
 Else
Do While Not Rs.EOF
With GrdPesquisa
    .Rows = i + 1
    .TextMatrix(i, 0) = Rs![cdcamp]
    .TextMatrix(i, 1) = Rs![CdPlu]
    .TextMatrix(i, 2) = Rs![NomeDesc]
    .TextMatrix(i, 3) = Rs![NomeBand]
    .TextMatrix(i, 4) = Rs![DtInicio]
    .TextMatrix(i, 5) = Rs![DtFim]
    .TextMatrix(i, 6) = Rs![PrOferta]
    .TextMatrix(i, 7) = Rs![PrevisQtd]
    .TextMatrix(i, 8) = Rs![PrevVlVendas]
    .TextMatrix(i, 9) = Rs![PrevDemarc]
    .TextMatrix(i, 10) = Rs![RealQtd]
    .TextMatrix(i, 11) = Rs![RealVlVendas]
    .TextMatrix(i, 12) = Rs![RealDemarc]
End With
    i = i + 1
    SomaPrevVD = SomaPrevVD + Rs!PrevVlVendas
    SomaPrevDerm = SomaPrevDerm + Rs!PrevDemarc
    SomaRealVD = SomaRealVD + Rs!RealVlVendas
    SomaRealDerm = SomaRealDerm + Rs!RealDemarc
    Rs.MoveNext
Loop
    LblPrevVD = Format(SomaPrevVD, "R$ ###,###,###,##0.00")
    LblVLDermPrev = Format(SomaPrevDerm, "R$ ###,###,###,##0.00")
    LblValorReal = Format(SomaRealVD, "R$ ###,###,###,##0.00")
    LblVLDermReal = Format(SomaRealDerm, "R$ ###,###,###,##0.00")
 End If
End If
 
  'End If
   'End If
  'End If
'End If
End Sub
Obrigado
Marcelo Freitas
   
PH1959
Pontos: 2843
SÃO JOSÉ DOS CAMPOS
SP - BRASIL
ENUNCIADA !
Postada em 27/11/2006 11:01 hs            
o debug está parando onde?
 
   
ghost_jlp
Pontos: 2843 Pontos: 2843 Pontos: 2843 Pontos: 2843
SÃO PAULO
SP - BRASIL
ENUNCIADA !
Postada em 27/11/2006 11:23 hs            
Pelo q vejo é qdo vc abre o recordset... vc fechou as aspas depois do "#" <= aspas fechadas... depois vc colocou um "and" sem estar entre aspas... logo o compilador interpreta q é uma comparação lógica dentro do recordset... aí acontece o erro de tipo incompátivel.
 
Ainda mais vc abre o último parâmetro com apóstrofe depois fecha como "#"... ia dar erro ao abrir a tabela tb...
 
Olha mude a sua string para isto:
 
Set Rs = Banco.OpenRecordset("SELECT Folhetos.CdCamp, Folhetos.CdPlu, Folhetos.NomeDesc,Folhetos.NomeBand,Folhetos.DtInicio, Folhetos.DtFim, Folhetos.PrOferta, Folhetos.PrevisQtd, Folhetos.PrevVlVendas, Folhetos.PrevDemarc, Folhetos.RealQtd, Folhetos.RealVlVendas, Folhetos.RealDemarc FROM Folhetos Where DtInicio BETWEEN #" & Format(DTPicker1.Value, "YYYY/MM/DD") & "# AND #" & Format(DTPicker2.Value, "YYYY/MM/DD") & "# And FOLHETOS.NomeBand = '" & Parametros & "'")
 
 
at+
TÓPICO EDITADO
 
Marcelo(mfc)
RIO DE JANEIRO
RJ - BRASIL
Postada em 28/11/2006 00:29 hs            
Ghost_jlp
 
O Sql só funciona quando o parâmetros recebe algum dados.. como eu posso fazer para que quando o parâmetros não receber dados, ai ele tras só os dados das informação por período.
Obrigado pela ajuda.
Marcelo
 
     
ghost_jlp
Pontos: 2843 Pontos: 2843 Pontos: 2843 Pontos: 2843
SÃO PAULO
SP - BRASIL
Postada em 29/11/2006 02:38 hs            
tira a última parte da sql fazer um if...
 
Dim pr as string
 
pr = ""
IF TRIM(parametros) <> "" then
  pr = " And FOLHETOS.NomeBand = '" & Parametros & "'"
Endif
 
Set Rs = Banco.OpenRecordset("SELECT Folhetos.CdCamp, Folhetos.CdPlu, Folhetos.NomeDesc,Folhetos.NomeBand,Folhetos.DtInicio, Folhetos.DtFim, Folhetos.PrOferta, Folhetos.PrevisQtd, Folhetos.PrevVlVendas, Folhetos.PrevDemarc, Folhetos.RealQtd, Folhetos.RealVlVendas, Folhetos.RealDemarc FROM Folhetos Where DtInicio BETWEEN #" & Format(DTPicker1.Value, "YYYY/MM/DD") & "# AND #" & Format(DTPicker2.Value, "YYYY/MM/DD") & "#" & pr)
 
at+
     
Página(s): 1/1    

CyberWEB Network Ltda.    © Copyright 2000-2026   -   Todos os direitos reservados.
Powered by HostingZone - A melhor hospedagem para seu site
Topo da página