Jump to content
Sign in to follow this  
Brav01

Pesquisa por Data/Hora

Recommended Posts

Brav01

Boas pessoal!

Eu estou tentar fazer um formulário de pesquisa de registos em que quero pesquisar através da data, da hora e do nome do empregado mas não sei o passa!

Eu consigo fazer com que mostre os empregados mas quando se trata da data e da hora não consigo fazer com que mostre

aqui está o código:

Código:

Dim procura, instrucao As String
procura = TextBox1.Text
If Raddata.Checked Then
instrucao = " SELECT * FROM registos where [Data] like'%" & procura & "%'"
Else
If Radhora.Checked Then
instrucao = " SELECT * FROM registos WHERE hora like'%" & procura & "%'"
Else
If Radempregado.Checked Then
instrucao = "SELECT * FROM registos WHERE empregado like'%" & procura & "%'"
End If
End If
End If
Me.RegistosTableAdapter.Adapter.SelectCommand.CommandText = instrucao 
Me.RegistosTableAdapter.Fill(Me.PapDataSet.Registos)

podem dizer se está aqui algo de errado?  :P

Share this post


Link to post
Share on other sites
bioshock

As condições devem-se proceder desta forma:

If Radio1.Checked Then
'...
ElseIf Radio2.Checked Then
'...
Else
'...
End if

Depois, qual é o valor que estás a receber da variável "Procura"?

Share this post


Link to post
Share on other sites
Brav01

Na hora e na data não recebe nada em empregados aparece todos os registos com o nome daquele empregado

não sei se era isso que querias crias como resposta....

Share this post


Link to post
Share on other sites
bioshock

Antes de mais altera para como te disse. Depois, o que te perguntei foi o valor que recebes da tua variável "procura" que tens em todas as queries.

Share this post


Link to post
Share on other sites
passado

Procurar datas e horas por LIKE nao me parece muito bem, talvez um BETWEEN ou um =

Share this post


Link to post
Share on other sites
bioshock

Têm vários problemas. Desde o símbolo da % etc.

Mas pode utilizar com a clausula LIKE para apenas filtrar numa determinada altura. No entanto, tem que se perceber de onde vêm a fonte do problema.

Share this post


Link to post
Share on other sites
Brav01

Bioshock eu não sei muito bem mexer nisto quanto as querys porque infelizmente na escola não dei quase nada em relação ao SQL muito menos aqui no visual BASIC por isso desculpa se não perceber bem as coisas!  :P

E passado é assim eu cria que ele mostrasse a data que eu ponho mas quanto a hora eu cria que mostrasse naquela hora mas já mudei o código para:

 instrucao = " SELECT * FROM registos where [Data] =" & procura & ""

mas também não consegui

Eu já tenho um formulário de pesquisa em relação ao stock mas corre tudo bem porque a pesquisa que faço é toda em string

( produto, marca e categoria )

mas neste formulário tenho a data como datatype datetime e hora como nvarchar e não sei porque não me dá resposta na datagridview dos registos

Share this post


Link to post
Share on other sites
Brav01

Bem bioshock tenho isto como dissestes que deveria por agora o que posso fazer mais?

 Dim procura, instrucao As String

        procura = TextBox1.Text

        If Raddata.Checked Then
            instrucao = " SELECT * FROM registos where [Data] =" & procura & ""
        ElseIf Radhora.Checked Then
            instrucao = " SELECT * FROM registos WHERE hora like'" & procura & "'"
        ElseIf Radempregado.Checked Then
            instrucao = "SELECT * FROM registos WHERE empregado like'%" & procura & "%'"

        End If

        Me.RegistosTableAdapter.Adapter.SelectCommand.CommandText = instrucao
        Me.RegistosTableAdapter.Fill(Me.PapDataSet.Registos)
    End Sub

Share this post


Link to post
Share on other sites
bioshock

Troca

instrucao = "SELECT * FROM registos where [Data] =" & procura & ""

por uma data que saibas que exista na base de dados e vê se funciona, ex:

instrucao = "SELECT * FROM registos where [Data] = 2011-04-10"

Btw, tem em atenção os espaços que deixas em branco nas queries. Antes do SELECT tens espaços em branco :P

Share this post


Link to post
Share on other sites
Brav01

Pois experimentei em por a data igual e não dá =S

If Raddata.Checked Then
instrucao = "SELECT * FROM registos where [Data] =24-10-1992"

não mostra nada....

Share this post


Link to post
Share on other sites
Brav01

boa estou bem lixado com isto outra coisa já agora é que o meu programa está a ar um erro que não me dava

na base de dados de stock adiciono um produto guardo e quando faço para adicionar um novo da erro e mostra isto

dbconcurrencyExeption was unhandled

concurrency violation: the update command affected 1 of the expected 0 records

Isto quer dizer oque?

Share this post


Link to post
Share on other sites
Fabio92

as datas eu tambem tive bue problemas na minha bd acabei por definir na tabel como string e como tinha datetimepickers nos forms fazer conversoes de string para date...

Share this post


Link to post
Share on other sites
loonix

Ve este meu exemplo:

tenho uma datagidview e por baixo uma textbox de pesquisa, e Radiobuttons: "nome", "morada", etc..

Este codigo está inserido na tb de pesquisa:

 If procurarmorada.Checked Then
            bs_aluno.Filter = "morada_aluno like '%" & tbprocura.Text & "%'"
        End If
        If procurarsexo.Checked Then
            bs_aluno.Filter = "sexo_aluno like '%" & tbprocura.Text & "%'"
        End If

não te esqueças de definir em cima isto:

Private bs_aluno As New BindingSource

cumpz

Daniel Carneiro

Share this post


Link to post
Share on other sites
Brav01

Desculpa Daniel mas o

Private bs_aluno As New BindingSource

é uma variável?

Share this post


Link to post
Share on other sites
Brav01

Então está aqui uma coisa que não estou a enteder

para a data posso fazer um filtro só para mostrar os registos daquela data isso esta certo mas no entanto não consigo fazer com que mostre

e para a hora eu cria por exemplo meter 18:00 e aparecer das 18:00 as 19:00 agora como posso fazer isto? :S

Senão posso esquecer o da hora porque cria mesmo como principal o da data porque tenho que entregar isto segunda e tenho o programa a dar cada vez mais erros como o que disse mais acima :S

Share this post


Link to post
Share on other sites
Brav01

Tive a recriar a base de dados de registos em que pus codregisto, data, hora e registo

Está a funcionar correctamente a adicionar,guardar e a eliminar

mas na pesquisa apenas estou a concentrar-me na data para não trazer mais problemas mas já me disseram para fazer com "=" com like e between mas não sei qual a melhor

Dim instrucao As String
        Dim procura As String = TextBox1.Text
        Try
            instrucao = "SELECT*FROM registos WHERE data like'" & procura & "'"

            Me.RegistosTableAdapter.Adapter.SelectCommand.CommandText = instrucao
            Me.RegistosTableAdapter.Fill(Me.PapDataSet.Registos)
        Catch ex As Exception
            MessageBox.Show(ex.Message)
        End Try
    End Sub

tenho aqui o código que pus para a pesquisa já alterei a data para nvarchar para armazenar todo o tipo de caracteres mas continua a dar o erro!...

Eu não sou muito bom a mexer nisto não tive ninguém que me pudesse ensinar as coisas como deve de ser e o que sei foi partilhado ou simplesmente aprendi sozinho, por isso não venho aqui pedir que me façam o trabalho mas que tenham um pouco mais de paciência comigo quando não percebo as coisas...

Obrigado!  :)

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
Sign in to follow this  

×
×
  • Create New...

Important Information

By using this site you accept our Terms of Use and Privacy Policy. We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.