PESQUISA SQL

BLACKPIC 16/02/2014 23:09:54
#434881

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.
LCSSP 17/02/2014 08:54:13
#434887
Olá,

Não seria assim:

[Ô]Select * From [Tabela1] Where Estado_da_coleta = [Ô] & text21.text
NINOBRAWJUNIOR 19/02/2014 23:31:20
#435009
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)
BLACKPIC 21/02/2014 20:00:42
#435122
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
MARCELO.TREZE 21/02/2014 20:08:10
#435124
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.

BLACKPIC 21/02/2014 20:32:32
#435125
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
FILMAN 21/02/2014 20:47:22
#435128
como você os pedidos que foram coletados? nos mostra a estrutura da tabela

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!
BLACKPIC 21/02/2014 22:24:47
#435133
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?

MOUSER 22/02/2014 10:36:55
#435144
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...
MARCELO.TREZE 22/02/2014 10:53:19
#435146
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.

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
...


BLACKPIC 22/02/2014 12:43:23
#435147
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.





Página 1 de 2 [13 registro(s)]
Faça seu login para responder