ERRO EM CONSULTA SQL
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
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
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...
Esse campo Situação é um Boolean ou um texto?
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[Ô]
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 [ô]
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%[ô]
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 & [Ô] % [ô] [Ô]
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!!!