SQL-INTERVALO DE DATAS E IDFORNECEDOR

JOHNSTEVE 17/05/2017 20:44:24
#474029
Boa noite galera, estou com problema no meu SQL. alguem pode me dar uma dica ?

Ja tentei assim
  sql = [Ô]SELECT Compras.[codigo], Compras.[modelo], Compras.[serie], Compras.[NumeroNotaFiscal], Compras.[ChaveNFe], Compras.[DataEmissao], Compras.[DataEntrada], Compras.[Valor_Total_Nota], Compras.[Vrl_Total_Produto], Compras.[Vlr_Total_Desconto], Compras.[Vlr_Total_Frete], Compras.[Vlr_Total_Seguro], Compras.[Vlr_Total_OutrasDesp], Compras.[Vlr_total_bsCal_icms], Compras.[Vlr_total_vlr_icms], Compras.[Vlr_total_bsCal_icmsST], Compras.[modFrete], Compras.[Vlr_total_vlr_icmsST], Compras.[Vlr_total_IPI], Compras.[Indicador_Pagamento] FROM Compras WHERE DataEntrada between[Ô] & mskDIni.Value.Date & [Ô]AND[Ô] & mskDFim.Value.Date & [Ô]order by Compras.codigo=?[Ô]


tbm assim
  sql = [Ô]SELECT Compras.[codigo], Compras.[modelo], Compras.[serie], Compras.[NumeroNotaFiscal], Compras.[ChaveNFe], Compras.[DataEmissao], Compras.[DataEntrada], Compras.[Valor_Total_Nota], Compras.[Vrl_Total_Produto], Compras.[Vlr_Total_Desconto], Compras.[Vlr_Total_Frete], Compras.[Vlr_Total_Seguro], Compras.[Vlr_Total_OutrasDesp], Compras.[Vlr_total_bsCal_icms], Compras.[Vlr_total_vlr_icms], Compras.[Vlr_total_bsCal_icmsST], Compras.[modFrete], Compras.[Vlr_total_vlr_icmsST], Compras.[Vlr_total_IPI], Compras.[Indicador_Pagamento] FROM Compras WHERE DataEntrada between @datainicial and @datafinal order by Compras.codigo=?[Ô] 


nesse For. é onde q quero trazer o resultado do Filtro. pela data inicial e data Final e o ID do fornecedor
   For j = 0 To Dgv_Fornecedor_Bloco0150.Rows.Count - 1
SQL aqui >>

cmd = New OleDbCommand(sql, con)
cmd.Parameters.Add(New OleDb.OleDbParameter([Ô]@codigo[Ô], Dgv_Fornecedor_Bloco0150.Rows(j).Cells([Ô]CodigoFornecedor[Ô]).Value.ToString()))


dr = cmd.ExecuteReader
If dr.HasRows Then
dr.Read()

If Not IsDBNull(dr.Item([Ô]codigo[Ô])) Then COD_PART = dr.Item([Ô]codigo[Ô])
COD_PART = Format(CInt(COD_PART), [Ô]00000[Ô])
COD_PART = [Ô]F[Ô] & COD_PART
If Not IsDBNull(dr.Item([Ô]modelo[Ô])) Then COD_MOD = dr.Item([Ô]modelo[Ô])
If Not IsDBNull(dr.Item([Ô]serie[Ô])) Then SER = dr.Item([Ô]serie[Ô])

End If
Next
KERPLUNK 17/05/2017 21:00:05
#474031
Resposta escolhida
Cara, que confusão, não pela query ser longa, mas você está totalmente confuso quanto à o que são parâmetros...
JOHNSTEVE 17/05/2017 21:06:39
#474032
Kerplunk, então eu tenho como parametros para fazer a consulta

[txt-color=#e80000] cmd.Parameters.AddWithValue([Ô]@datainicial[Ô], mskDIni.Value.Date)
cmd.Parameters.AddWithValue([Ô]@datafinal[Ô], mskDFim.Value.Date)
cmd.Parameters.Add(New OleDb.OleDbParameter([Ô]@CodigoFornecedor[Ô], Dgv_Fornecedor_Bloco0150.Rows(j).Cells([Ô]CodigoFornecedor[Ô]).Value.ToString()))
[/txt-color]


acabei de mudar aqui o SQL, porem so esta me retornando os dados repetidos.

  sql = [Ô]SELECT Compras.[codigo], Compras.[modelo], Compras.[serie], Compras.[NumeroNotaFiscal], Compras.[ChaveNFe], Compras.[CodigoFornecedor], Compras.[DataEmissao], Compras.[DataEntrada], Compras.[Valor_Total_Nota], Compras.[Vrl_Total_Produto], Compras.[Vlr_Total_Desconto], Compras.[Vlr_Total_Frete], Compras.[Vlr_Total_Seguro], Compras.[Vlr_Total_OutrasDesp], Compras.[Vlr_total_bsCal_icms], Compras.[Vlr_total_vlr_icms], Compras.[Vlr_total_bsCal_icmsST], Compras.[modFrete], Compras.[Vlr_total_vlr_icmsST], Compras.[Vlr_total_IPI], Compras.[Indicador_Pagamento] FROM Compras WHERE DataEntrada between @datainicial and @datafinal and CodigoFornecedor[Ô] 
KERPLUNK 17/05/2017 21:08:23
#474033
CodigoFornecedor está na query, mas está sem parâmetro. deveria ser:

sql = [Ô]SELECT Compras.[codigo], Compras.[modelo], Compras.[serie], Compras.[NumeroNotaFiscal], Compras.[ChaveNFe], Compras.[CodigoFornecedor], Compras.[DataEmissao], Compras.[DataEntrada], Compras.[Valor_Total_Nota], Compras.[Vrl_Total_Produto], Compras.[Vlr_Total_Desconto], Compras.[Vlr_Total_Frete], Compras.[Vlr_Total_Seguro], Compras.[Vlr_Total_OutrasDesp], Compras.[Vlr_total_bsCal_icms], Compras.[Vlr_total_vlr_icms], Compras.[Vlr_total_bsCal_icmsST], Compras.[modFrete], Compras.[Vlr_total_vlr_icmsST], Compras.[Vlr_total_IPI], Compras.[Indicador_Pagamento] FROM Compras WHERE DataEntrada between @datainicial and @datafinal and CodigoFornecedor = @CodigoFornecedor[Ô]
JOHNSTEVE 17/05/2017 21:10:21
#474034
uuufffa consertei kerplunk, veja no final do SQL.. eu esqueci de por > [txt-color=#e80000] =? [/txt-color]

JOHNSTEVE 17/05/2017 21:12:54
#474035
eu fiz assim e deu certo Kerplunk

  WHERE DataEntrada between @datainicial and @datafinal and CodigoFornecedor=?[Ô] 


e nos parametros

   cmd.Parameters.AddWithValue([Ô]@datainicial[Ô], mskDIni.Value.Date)
cmd.Parameters.AddWithValue([Ô]@datafinal[Ô], mskDFim.Value.Date)
cmd.Parameters.Add(New OleDb.OleDbParameter([Ô]@CodigoFornecedor[Ô], Dgv_Fornecedor_Bloco0150.Rows(j).Cells([Ô]CodigoFornecedor[Ô]).Value.ToString()))



Vlw pela atenção acho que ja posso Fechar o topico e lhe pontuar é claro
KERPLUNK 17/05/2017 21:15:46
#474036
Use parâmetros nomeados. Como você está passando os nomes deles nos parâmetros, melhor colocar os nomes deles na query também, assim não fica confuso.
JOHNSTEVE 17/05/2017 23:22:07
#474038
Citação:

:
Use parâmetros nomeados. Como você está passando os nomes deles nos parâmetros, melhor colocar os nomes deles na query também, assim não fica confuso.



Boa ideia Kerplunk vlw
Tópico encerrado , respostas não são mais permitidas