FUNCAO SELECT

MARCIOLOPES1967 22/09/2013 21:15:25
#429146
Estou com um problema em uns codigo em vb.net, preciso pesquisar em dois campos no bd
(um periodo de data 15/09/2013 ate 17/09/2013 e neste intervalo preciso que os dados de um nome sejam pesquisados (neste intervalo de datas há varios nomes, preciso os daos de um só que eu indicarei)

Tentei desta forma mas nao deu certo
cmd4 = New OleDbCommand([Ô]Select * from recebimentos where data_1 BETWEEN #[Ô] & list_per1.Text & [Ô]# AND #[Ô] & list_per2.Text & [Ô]# order by data_1[Ô] And [Ô]SELECT * from compras where nome=@nome[Ô])
cmd4.Connection = cn4
cmd4.Parameters.Add([Ô]@empresa[Ô], OleDbType.VarWChar, 15).Value = listnome.Text

Se puder me ajudar agradeço.
LUISNET10 23/09/2013 09:28:03
#429148
Exite algum campo relacionando a tabela recebimentos com a compras..
id_compra na tabela recebimento?

Select * from recebimentos inner join compras on recebimentos.id_compra = compras.id_compra where data_1 BETWEEN #[Ô] & list_per1.Text & [Ô]# AND #[Ô] & list_per2.Text & [Ô]# and nome = [ô][Ô] & listnome.text & [Ô][ô]

Assim nao precisa passar os parametro, pois vc ja esta usando dados externos na consulta.

KILLER 23/09/2013 09:46:10
#429152
Resposta escolhida
Pelo que entendi tem um erro no seu código SQL. A tabela que contém o nome é a tabela compras mais o que você precisa retornar é o campo que você gravou na tabela recebimentos, por exemplo, você vai pesquisar o nome e você precisa que retorne o campo que está gravado na tabela recebimento por exemplo o código da compra. Sendo assim , o segundo SELECT seria assim

SELECT CodCompra FROM compras WHERE nome=@nome

Se estiver usando o MySQL o SELECT seria assim

[Ô]SELECT * FROM recebimentos WHERE data_1 >[ô][Ô] & list_per1.Text & [Ô][ô] AND data_1 <[ô][Ô] & list_per2.Text & [Ô][ô] AND CodCompra like (SELECT CodCompra FROM compras WHERE nome = @nome) ORDER BY data_1[Ô]

Sobre o formulário, quando você clica duas vezes sobre o sub menu produto, ele te leva ao código, ali você coloca formulario.show
MARCIOLOPES1967 23/09/2013 12:37:09
#429166
Muito Obrigado pelas informações, porem Eu errei em um parametro, por favor me desculpem.
A sentenca devera analisar duas informaçoes da mesma tabela, ou seja, um certo periodo de tempo e a empresa que eu informei que devera estar dentro deste periodo.

fiz algumas modificações na instrução acima, porem nao retornou nenhum valor. a instrucao ficou assim:
[Ô]SELECT * FROM recebimentos WHERE data_1 >[ô][Ô] & list_per1.Text & [Ô][ô] AND data_1 <[ô][Ô] & list_per2.Text & [Ô][ô] AND Codrecebimentos like (SELECT Codrecebimentos FROM recebimentos WHERE empresa = @empresa) ORDER BY data_1[Ô]

Uma duvida na sentenca o que significa [Ô]Codrecebimentos[Ô] ou como no original [Ô]CodCompra[Ô]

A Tabela do BD é a seguinte: Tabela:recebimentos (access)
Codigo Nome Empresa Data_1 Valor_pago Valor_1 Forma_de_Pagamento
5 Luciane CVC 13/09/2013 0 9,65 Crédito
6 Marcio BRDE 13/09/2013 0 10,00 À Vista
7 Luciane CVC 13/09/2013 0 10,00 À Vistao

Assim fica mais facil,
Devo pesquisar o campo data_1 e neste intervalo de datas devo buscar as informações de Marcio, estas informaçoes devo ler em um listview.

A instrução acima deu o seguinte erro: Nenhum valor foi fornecido para um ou mais parâmetros necessários.

Desde já agradeço, qualquer ajuda.
KILLER 23/09/2013 13:39:20
#429170
Bom nesse caso a instrução SQL não irá precisar de dois SELECT[ô]s o CodRecebimento seria o campo chave primária na outra tabela, mais não será necessário nesse caso.

Você somente precisa colocar as condições do filtro que não está correto, as condições quando se pesquisa em apenas uma tabela fica depois do WHERE, e cada AND seria uma nova condição, no seu caso ficaria assim:

WHERE data_1 >[ô][Ô] & list_per1.Text & [Ô][ô] AND data_1 <[ô][Ô] & list_per2.Text & [Ô][ô] AND empresa = @empresa ORDER BY data_1[Ô]

Uma dica, não é aconselhável salvar o nome do cliente ou da empresa, é interessante salvar o código da empresa no sistema, pois como ficaria futuramente se você fosse no cadastro de empresas e alterasse o nome da empresa, esse filtro ficaria incompleto.
MARCIOLOPES1967 23/09/2013 17:54:35
#429180
Funcionou!!!!!
Agradeço a todos, muiito obrigado.

OBS.: funcionou porem tive que ajustar:
cmd = New OleDbCommand([Ô]SELECT * FROM recebimentos WHERE data_1 BETWEEN #[Ô] & list_per1.Text & [Ô]# AND #[Ô] & list_per2.Text & [Ô]# And empresa=@empresa order by data_1[Ô])

Assim, no meu caso, Funcionou muito bem, grato mais uma vez.
Tópico encerrado , respostas não são mais permitidas