PESQUISA SQL
Estou me deparando com um problema que não estou conseguindo resolver, uma pesquisa sql simples que não está funcionando do jeito esperado.
o que estou fazendo é o seguinte:
em uma tabela do banco de dados preciso selecionar todos os pedidos marcados como [Ô]coletado[Ô].
A minha pesquisa está encontrando mais pedidos além dos buscados, outra coisa é que normalmente se o primeiro pedido foi coletado o mesmo não é encontrado.
Estou usando um dbgrid para receber a pesquisa.
---------------------------------------------------------------------------------------------------------------------
Private Sub Command7_Click()
Data1.RecordSource = [Ô]Select * From [Tabela1] Where Estado_da_coleta = text21.text[Ô]
j = Text17.Text
For i = 0 To j
Data4.Recordset.AddNew
Text37.Text = Text24.Text
Text38.Text = Text26.Text
Text39.Text = Text27.Text
Text40.Text = Text28.Text
Text41.Text = Text30.Text
Text42.Text = Text33.Text
Text43.Text = Text34.Text
Text44.Text = Text36.Text
Text22.Text = Text31.Text
Data4.Refresh
On Error Resume Next
Data1.Recordset.MoveNext
Next i
End Sub
------------------------------------------------------------------------------------------------------------------------
O que estou fazendo de errado?
Obrigado pela ajuda.
Olá,
Não seria assim:
[Ô]Select * From [Tabela1] Where Estado_da_coleta = [Ô] & text21.text
Não seria assim:
[Ô]Select * From [Tabela1] Where Estado_da_coleta = [Ô] & text21.text
Se não for assim!!
[Ô]Select * From [Tabela1] Where Estado_da_coleta = [Ô] & text21.text
---------------------------------------------------------------------------------------------
Tente assim
[Ô]Select * FROM [Tabela1] WHERE Estadi_da_coleta=[ô] [Ô] & text21.text & [Ô] [ô] [Ô]
me avise se funcionar.... :o)
[Ô]Select * From [Tabela1] Where Estado_da_coleta = [Ô] & text21.text
---------------------------------------------------------------------------------------------
Tente assim
[Ô]Select * FROM [Tabela1] WHERE Estadi_da_coleta=[ô] [Ô] & text21.text & [Ô] [ô] [Ô]
me avise se funcionar.... :o)
Nino obrigado pela resposta, só pude responder agora.
[Ô]Select * FROM [Tabela1] WHERE Estadi_da_coleta=[ô] [Ô] & text21.text & [Ô] [ô] [Ô]
nessa pesquisa continua aparecendo mais registros do que os procurados.
Uma coisa que notei é que o campo [Ô]Estado_da_coleta[Ô] não está sendo utilizado pela pesquisa. seu eu colocar [Ô]aaa[Ô] ou qualquer outro valor o resultado da pesquisa sempre é o mesmo. To achando muito estranho.
O que poderá ser?
Obrigado outra vez
[Ô]Select * FROM [Tabela1] WHERE Estadi_da_coleta=[ô] [Ô] & text21.text & [Ô] [ô] [Ô]
nessa pesquisa continua aparecendo mais registros do que os procurados.
Uma coisa que notei é que o campo [Ô]Estado_da_coleta[Ô] não está sendo utilizado pela pesquisa. seu eu colocar [Ô]aaa[Ô] ou qualquer outro valor o resultado da pesquisa sempre é o mesmo. To achando muito estranho.
O que poderá ser?
Obrigado outra vez
olha o que me deixa cabreiro é seu código ele ta estranho.
Data1.RecordSource = [Ô]Select * From [Tabela1] Where Estado_da_coleta = text21.text[Ô]
*******praque um select se você vai inserir
j = Text17.Text
***************** pra que serve este laço for sem nada dentro[Ô]
For i = 0 To j
explique onde esta pesquisa deveria exibir o resultado pois não tem nexo vc colocar addnew para fazer pesquisa.
Data1.RecordSource = [Ô]Select * From [Tabela1] Where Estado_da_coleta = text21.text[Ô]
*******praque um select se você vai inserir
j = Text17.Text
***************** pra que serve este laço for sem nada dentro[Ô]
For i = 0 To j
explique onde esta pesquisa deveria exibir o resultado pois não tem nexo vc colocar addnew para fazer pesquisa.
Marcelo,
o que estou tentando fazer é selecionar todos os pedidos coletados em um dbgrid, e passar para um segundo dbgrid. Na verdade quando o pedido for coletado, então automaticamente ele é excluido do dbgrid1 e armazenado no dbgrid2, que sempre irá exibir todos os pedidos que foram coletados. Dessa forma o dbgrid1 só apresenta os pedidos pendentes para entrega, eliminando o que já foi coletado.
O text17 mostra quantos registros existem no banco de dados. Então o que tentei fazer é que ao clicar no botão a pesquisa corre por todo o banco de dados buscando o que foi coletado. realmente está fazendo essa busca só que os resultados estão vindo errados.
Espero ter sido claro, caso contrario posto o que for necessário para esclarecer.
Obrigado
o que estou tentando fazer é selecionar todos os pedidos coletados em um dbgrid, e passar para um segundo dbgrid. Na verdade quando o pedido for coletado, então automaticamente ele é excluido do dbgrid1 e armazenado no dbgrid2, que sempre irá exibir todos os pedidos que foram coletados. Dessa forma o dbgrid1 só apresenta os pedidos pendentes para entrega, eliminando o que já foi coletado.
O text17 mostra quantos registros existem no banco de dados. Então o que tentei fazer é que ao clicar no botão a pesquisa corre por todo o banco de dados buscando o que foi coletado. realmente está fazendo essa busca só que os resultados estão vindo errados.
Espero ter sido claro, caso contrario posto o que for necessário para esclarecer.
Obrigado
como você os pedidos que foram coletados? nos mostra a estrutura da tabela
Pois acho que esta faltando parametro na clausula WHERE
Tipo assim
isso seria um exemplo, pois acho que deve fazer mais um filtro para retornar o que esta querendo!
Pois acho que esta faltando parametro na clausula WHERE
Tipo assim
[Ô]SELECT * FROM [TABELA] WHERE ESTADO_DA_COLETA = [ô][Ô] & text21.Text & [Ô][ô] AND COLETADO = [ô]SIM[ô][Ô]
isso seria um exemplo, pois acho que deve fazer mais um filtro para retornar o que esta querendo!
Não consegui postar a imagem da estrutura da tabela, mas tentei fazer o esquema de outra forma, assim:
If DBGrid1.Columns(7).Text = [Ô]Coletado[Ô] Then
MsgBox [Ô]ok[Ô]
Data4.Recordset.AddNew
Text37.Text = Text24.Text
Text38.Text = Text26.Text
Text39.Text = Text27.Text
Text40.Text = Text28.Text
Text41.Text = Text30.Text
Text42.Text = Text33.Text
Text43.Text = Text34.Text
Text44.Text = Text36.Text
Data4.Refresh
End If
Data1.Recordset.MoveNext
A caixa de mensagem aparece exatamente quando encontra o nome [Ô]Coletado[Ô].
Mas se mandar fazer uma varredura dos 10 itens coletados ele só acha 4.
Alguma luz?
If DBGrid1.Columns(7).Text = [Ô]Coletado[Ô] Then
MsgBox [Ô]ok[Ô]
Data4.Recordset.AddNew
Text37.Text = Text24.Text
Text38.Text = Text26.Text
Text39.Text = Text27.Text
Text40.Text = Text28.Text
Text41.Text = Text30.Text
Text42.Text = Text33.Text
Text43.Text = Text34.Text
Text44.Text = Text36.Text
Data4.Refresh
End If
Data1.Recordset.MoveNext
A caixa de mensagem aparece exatamente quando encontra o nome [Ô]Coletado[Ô].
Mas se mandar fazer uma varredura dos 10 itens coletados ele só acha 4.
Alguma luz?
vou fazer o teste dos comandos, e tentar auxilia-los. mas vc precisa de algo q seja especificamente aquilo q esta na textbox ou algo mais relacionado a pesquisa da textbox? dependendo vc pode altera por exemplo: [Ô]Select * FROM [Tabela1] WHERE Estadi_da_coleta=[ô] [Ô] & text21.text & [Ô] [ô] [Ô] para [Ô]Select * FROM [Tabela1] WHERE Estadi_da_coleta=[ô]% [Ô] & text21.text & [Ô]% [ô] [Ô] ou [Ô]Select * FROM [Tabela1] WHERE Estadi_da_coleta=%[ô] [Ô] & text21.text & [Ô] [ô]% [Ô] não lembro se o comando fica dentro ou fora da aspas simples, mas de qualquer forma, como estou longe do Desktop q guardo estas informações. então fica a dica...
bom colega não é claro o código a sua intenção até entendi.
primeiro você não tem nenhum código que preencha o DBGrid1.
depois vc não mostrou nenhum código que envie o que está o DBGrid1 para o DBgrid2
Derrepentemente você possui um código que inclui dados na tabela, porem nada haver com DBgrid
Data4.Recordset.AddNew
Text37.Text = Text24.Text
Text38.Text = Text26.Text
...
isso é que deixa todo mundo confuso, eu posso informar varias maneiras de se fazer uma select, mas deve haver um jeito de exibir isto em algum lugar.
e isso não tem nexo, pelo menos não pra mim.
primeiro você não tem nenhum código que preencha o DBGrid1.
depois vc não mostrou nenhum código que envie o que está o DBGrid1 para o DBgrid2
Derrepentemente você possui um código que inclui dados na tabela, porem nada haver com DBgrid
Data4.Recordset.AddNew
Text37.Text = Text24.Text
Text38.Text = Text26.Text
...
isso é que deixa todo mundo confuso, eu posso informar varias maneiras de se fazer uma select, mas deve haver um jeito de exibir isto em algum lugar.
e isso não tem nexo, pelo menos não pra mim.
Citação:Private Sub Command7_Click()
Data1.RecordSource = [Ô]Select * From [Tabela1] Where Estado_da_coleta = text21.text[Ô]
j = Text17.Text
For i = 0 To j
Data4.Recordset.AddNew
Text37.Text = Text24.Text
Text38.Text = Text26.Text
...
vou tentar ser o mais claro possÃvel.
No form possuo 1 objeto data (data1), que está vinculado ao banco de dados do access, chamado [Ô]Banco[Ô] e a tabela chamada [Ô]tabela1[Ô], onde se encontra o campo [Ô]Estado_da_coleta[Ô].
O que fiz foi colocar um dbgrid vinculado ao data1.
Quando o form é iniciado, o dbgrid1 é carregado automaticamente com todos os dados do banco de dados, ou seja todos os campos da [Ô]tabela1[Ô] são carregados no dbgrid1.
Depois coloquei outro objeto data (data4), que está vinculado ao mesmo banco de dados, porém em uma tabela chamada [Ô]Entregues[Ô].
Text37.Text = Text24.Text
Text38.Text = Text26.Text
A text37 está vinculada ao campo [Ô]nome do Cliente[Ô] do data1
A text24 está vinculada ao campo [Ô]nome do Cliente[Ô] do data4
Assim por diante.
Foi uma maneira de fazer com que no momento em que eu avançar o registro do data1 as text[ô]s recebam os valores.
Assim consigo receber o valor nas texts do data4 para adicionar com o data4.recordset.addnew no dbgrid2, que por sua vez é vinculado ao data4.
O laço [Ô]for i=0 to j[Ô] foi feito para que eu não precise clicar o botão para ir incrementando até o ultimo registro do banco de dados.
pra isso tenho a [Ô]text17.text[Ô] que mostra a quantidade de registros atual.
então j=text17.text
O text21.text só recebe o nome [Ô]Coletado[Ô] mas não é necessário. [Ô]Coletado[Ô] pode ser colocado direto na pesquisa sql , substituindo essa text21.
A intenção da pesquisa é retirar do dbgrid1 tudo aquilo que já foi entregue e que não interessa mais. Porém eles devem ficar armazenados em um outro local para que possamos ver o que foi entregue durante o perÃodo.
Foi o que imaginei no primeiro momento. Se houver uma outra maneira de fazer isso, estou disposto a aceitar qualquer ajuda, rs.
Se precisarem posso enviar o código fonte.
Agradeço a todos que ajudaram até agora.
No form possuo 1 objeto data (data1), que está vinculado ao banco de dados do access, chamado [Ô]Banco[Ô] e a tabela chamada [Ô]tabela1[Ô], onde se encontra o campo [Ô]Estado_da_coleta[Ô].
O que fiz foi colocar um dbgrid vinculado ao data1.
Quando o form é iniciado, o dbgrid1 é carregado automaticamente com todos os dados do banco de dados, ou seja todos os campos da [Ô]tabela1[Ô] são carregados no dbgrid1.
Depois coloquei outro objeto data (data4), que está vinculado ao mesmo banco de dados, porém em uma tabela chamada [Ô]Entregues[Ô].
Text37.Text = Text24.Text
Text38.Text = Text26.Text
A text37 está vinculada ao campo [Ô]nome do Cliente[Ô] do data1
A text24 está vinculada ao campo [Ô]nome do Cliente[Ô] do data4
Assim por diante.
Foi uma maneira de fazer com que no momento em que eu avançar o registro do data1 as text[ô]s recebam os valores.
Assim consigo receber o valor nas texts do data4 para adicionar com o data4.recordset.addnew no dbgrid2, que por sua vez é vinculado ao data4.
O laço [Ô]for i=0 to j[Ô] foi feito para que eu não precise clicar o botão para ir incrementando até o ultimo registro do banco de dados.
pra isso tenho a [Ô]text17.text[Ô] que mostra a quantidade de registros atual.
então j=text17.text
O text21.text só recebe o nome [Ô]Coletado[Ô] mas não é necessário. [Ô]Coletado[Ô] pode ser colocado direto na pesquisa sql , substituindo essa text21.
A intenção da pesquisa é retirar do dbgrid1 tudo aquilo que já foi entregue e que não interessa mais. Porém eles devem ficar armazenados em um outro local para que possamos ver o que foi entregue durante o perÃodo.
Foi o que imaginei no primeiro momento. Se houver uma outra maneira de fazer isso, estou disposto a aceitar qualquer ajuda, rs.
Se precisarem posso enviar o código fonte.
Agradeço a todos que ajudaram até agora.
Faça seu login para responder