ERRO EM CONSULTA SQL

W8.LISBOA 08/05/2015 20:17:53
#446502
Ola pessoal,

Estou com um probleminha aqui, quero fazer uma consulta ao banco access com mais de uma condição, mas me deparei com este erro [Ô] Nenhum valor foi fornecido para um ou mais parâmetros necessários[Ô], acredito não estar usando a instrução corretamente, aguardo uma sugestão.

Segue o código:

  Private Sub carregapagamentos()
Dim datainicio As String
Dim datafinal As String

datainicio = Format(DateTimePicker1.Value, [Ô]MM/dd/yyyy[Ô])
datafinal = Format(DateTimePicker2.Value, [Ô]MM/dd/yyyy[Ô])

Using con As OleDbConnection = GetConnection()
Try
con.Open()
Dim sql As String = [Ô]SELECT ID, Documento, Data, Valor, Situacao, Criado_Por, Alterado_Por FROM Pagamentos WHERE Data >= #[Ô] & datainicio & [Ô]# and Data <= #[Ô] & datafinal & [Ô]# and Situacao = [Ô] & ComboBox2.Text
Dim cmd As OleDbCommand = New OleDbCommand(sql, con)
Dim da As OleDbDataAdapter = New OleDbDataAdapter(cmd)
Dim dt As DataTable = New DataTable
da.Fill(dt)
DataGridView1.DataSource = dt
Catch ex As Exception
MsgBox(ex.Message)
End Try
con.Close()
End Using
End Sub

JABA 08/05/2015 21:01:33
#446503
Resposta escolhida
Quando se usa o [Ô]Using[Ô], não precisa fechar a conexão com [Ô]con.Close()[Ô], pois o [Ô]Using[Ô] já faz isso automaticamente quando passar pelo [Ô]End Using[Ô].

Private Sub carregapagamentos()
Dim datainicio As String
Dim datafinal As String

Dim dt As DataTable = New DataTable
Dim cmd As OleDbCommand
Dim da As OleDbDataAdapter

datainicio = Format(DateTimePicker1.Value, [Ô]MM/dd/yyyy[Ô])
datafinal = Format(DateTimePicker2.Value, [Ô]MM/dd/yyyy[Ô])

Using con As OleDbConnection = GetConnection()
Try
con.Open()
Dim sql As String = [Ô]SELECT ID, Documento, Data, Valor, Situacao, Criado_Por, Alterado_Por FROM Pagamentos WHERE Data >= #[Ô] & datainicio & [Ô]# and Data <= #[Ô] & datafinal & [Ô]# and Situacao = [Ô] & ComboBox2.Text
cmd = New OleDbCommand(sql, con)
da = New OleDbDataAdapter(cmd)
da.Fill(dt)
DataGridView1.DataSource = dt
Catch ex As Exception
MsgBox(ex.Message)
End Try
End Using
End Sub
W8.LISBOA 08/05/2015 21:09:19
#446504
Citação:

:
Quando se usa o [Ô]Using[Ô], não precisa fechar a conexão com [Ô]con.Close()[Ô], pois o [Ô]Using[Ô] já faz isso automaticamente quando passar pelo [Ô]End Using[Ô].



Obrigado pela dica JABA, com relação a consulta, continuo com o mesmo problema, vale relatar que eu já usava essa instrução ate a posição da datafinal, dai quero incrementar mais uma opção de filtro...
JABA 08/05/2015 21:15:04
#446505
Sintaticamente parece correto. Talvez o que esteja pegando é o tipo de dado que você está comparando aqui: & [Ô]# and Situacao = [Ô] & ComboBox2.Text

Esse campo Situação é um Boolean ou um texto?
W8.LISBOA 08/05/2015 21:19:04
#446506
Citação:

:
Sintaticamente parece correto. Talvez o que esteja pegando é o tipo de dado que você está comparando aqui: & [Ô]# and Situacao = [Ô] & ComboBox2.Text

Esse campo Situação é um Boolean ou um texto?



Amigo JABA, é do tipo [Ô]texto curto[Ô]
JABA 08/05/2015 21:21:25
#446507
Então eu acho que você precisará colocar uma aspas simples aí, desta forma: & [Ô]# and Situacao = [ô] [Ô] & ComboBox2.Text & [Ô] [ô] [Ô]
W8.LISBOA 08/05/2015 21:36:54
#446508
Citação:

:
Então eu acho que você precisará colocar uma aspas simples aí, desta forma: & [Ô]# and Situacao = [ô] [Ô] & ComboBox2.Text & [Ô] [ô] [Ô]



Então, tentei sua resposta, mas não me traz nenhum resultado nem mesmo nenhum erro.

Segue o resultado do depurador
  SELECT ID, Documento, Data, Valor, Situacao, Criado_Por, Alterado_Por 
FROM Pagamentos
WHERE Data >= #05/08/1990# and Data <= #05/08/2019# and Situacao = [ô] ABERTO [ô]
JABA 08/05/2015 21:45:19
#446509
Acho que a consulta está funcionando perfeitamente, o que não ta batendo são os dados. Coloque o dado exatamente como está na tabela - use o ctrl+c e ctrl+v na coluna da tabela- e não esqueça de ver se esse dado está dentro dos limites das datas que está no sql.

Ao invés de usar um sinal de =, você poderia usar um [Ô]LIKE[Ô], conforme abaixo:

SELECT ID, Documento, Data, Valor, Situacao, Criado_Por, Alterado_Por
FROM Pagamentos
WHERE Data >= #05/08/1990# and Data <= #05/08/2019# and Situacao Like [ô]ABERTO%[ô]

W8.LISBOA 08/05/2015 22:12:48
#446510
Citação:

:
Acho que a consulta está funcionando perfeitamente, o que não ta batendo são os dados. Coloque o dado exatamente como está na tabela - use o ctrl+c e ctrl+v na coluna da tabela- e não esqueça de ver se esse dado está dentro dos limites das datas que está no sql.

Ao invés de usar um sinal de =, você poderia usar um [Ô]LIKE[Ô], conforme abaixo:

SELECT ID, Documento, Data, Valor, Situacao, Criado_Por, Alterado_Por
FROM Pagamentos
WHERE Data >= #05/08/1990# and Data <= #05/08/2019# and Situacao Like [ô]ABERTO%[ô]



O LIKE pode ser usado assim? and Situacao Like [ô] [Ô] & ComboBox2.Text & [Ô] % [ô] [Ô]
JABA 08/05/2015 22:21:39
#446511
Pode sim. Faça os testes com a porcentagem somente no final, depois somente no inicio, e depois em ambos, ao mesmo tempo. Se funcionar em um deles, tu sabe que o problema são os dados que estão sendo comparados de forma diferente.
W8.LISBOA 08/05/2015 22:44:26
#446512
Citação:

:
Pode sim. Faça os testes com a porcentagem somente no final, depois somente no inicio, e depois em ambos, ao mesmo tempo. Se funcionar em um deles, tu sabe que o problema são os dados que estão sendo comparados de forma diferente.



Opa

Funcionou perfeitamente, valeu!!!
Tópico encerrado , respostas não são mais permitidas