PESQUISAR ENTRE DATAS
Use comandos parametrizados.
Para formatar voce pode fazer assim:
Dim DataInicio, DataFim As String
DataInicio = DateTime.Parse(data1).ToString("dd-MM-yyyy")
DataFim = DateTime.Parse(data2).ToString("dd-MM-yyyy")
docs.microsoft.com/pt-br/dotnet/standard/base-types/custom-date-and-time-format-strings
Outra forma de fazer retirado do site do macoratti :
www.macoratti.net/14/05/sql_pd2d.htm
Dim DataInicio, DataFim As String
DataInicio = DateTime.Parse(data1).ToString("dd-MM-yyyy")
DataFim = DateTime.Parse(data2).ToString("dd-MM-yyyy")
docs.microsoft.com/pt-br/dotnet/standard/base-types/custom-date-and-time-format-strings
Outra forma de fazer retirado do site do macoratti :
Dim dtinicio As String
Dim dtfim As String
Dim tabela As New DataTable
Dim strsql As String
dtinicio = dtpInicio.Value.ToString
dtfim = dtpFim.Value.ToString
strsql = "Select * from Funcionarios Where admissao between @dtInicio And @dtFim order by admissao"
Dim con As New SqlConnection
Dim cmd As New SqlCommand
Try
con.ConnectionString = "Data Source=(LocalDB)\v11.0;Initial Catalog=Cadastro;Integrated Security=True"
con.Open()
cmd.Connection = con
cmd.Parameters.AddWithValue("@dtInicio", dtinicio)
cmd.Parameters.AddWithValue("@dtFim", dtfim)
cmd.CommandText = strsql
Using reader As SqlDataReader = cmd.ExecuteReader()
tabela.Load(reader)
dgvFunci.DataSource = tabela
End Using
Catch ex As Exception
MessageBox.Show("Erro : " & ex.Message, "Consultar Registros")
Finally
con.Close()
End Try
www.macoratti.net/14/05/sql_pd2d.htm
eu observando tenho a sensação q vc não ta entendendo o processo......na verdade q cada um q tentou responder entendeu q vc nao esta entendendo uma parte diferente......
no banco de dados o formato será único, seu caso yyyy-MM-dd (vai de cada banco de dados), vc tem q ajustar no inserir e recuperar a informação ao seu formato.....não importa a data q vc tem na tela do seu programa, site ou o q for, ela entra no banco em yyyy-MM-dd e sai de la no mesmo formato
esse código é c mysql, a query vai mudar conforme o banco de dados usado tmb.....então não se apegue ao q esta escrito, entenda pra poder fazer conforme seu caso.....
no banco de dados o formato será único, seu caso yyyy-MM-dd (vai de cada banco de dados), vc tem q ajustar no inserir e recuperar a informação ao seu formato.....não importa a data q vc tem na tela do seu programa, site ou o q for, ela entra no banco em yyyy-MM-dd e sai de la no mesmo formato
esse código é c mysql, a query vai mudar conforme o banco de dados usado tmb.....então não se apegue ao q esta escrito, entenda pra poder fazer conforme seu caso.....
parametrosValores(1) = Format(dataInicio, "yyyy-MM-dd")
parametrosValores(2) = Format(dataFim, "yyyy-MM-dd")
parametrosValores(3) = CInt(referente)
Dim Sql As String = "select alunos.nome,pagamentos.valor,pagamentos.valorpago,pagamentos.vencimento,pagamentos.pagamento,pagamentos.referente from pagamentos inner join alunos on pagamentos.idaluno=alunos.id where pagamentos.posicao=@situacaopag and pagamentos.pagamento between @inicio and @fim and referente=@referente order by alunos.nome asc"
Então o que deve ser feito é a manipulação na variável dentro do código VB.net, independente do INSERT e do SELECT, se ele entrar DD/MM/AAAA, ele vai ser registrado como AAAA/MM/DD, mas a variavel que tem que ser modificada para quando receber ela do textbox, para o insert ela muda pra aaaa/mm/dd e quando vier o select, dd/mm/aaaa. A questão é mudar essa variável. Chegando em casa vou estudar sobre o que o Kerplunk disse, e ver o que exatamente o JABA e NICKOSOFT postaram. Vai ser tentativa e erro, até acertar isso. Acertando eu posto o resultado, dando os créditos a voces.
é isso mesmo, na tela mostra no nosso formato dd//MM/aaaa, mas qnd for disparar o insert vc deixa pelo código no formato do seu banco de dados, e nas consultas o inverso
Galera, desculpe voltar ao assunto, resolvi ler todas as apostilas possiveis, tentar entender o erro da data. Fui criar um projeto novo, sem o banco de dados, para saber onde esta o erro de conveção. Ao criar o mostrador de data, coloquei um masktext box com a mask ##/##/####. Até ai tudo bem, mas pra ter certeza do que esta sendo mostrado, o textbox recebe a data e a masktextbox coloca a data pra mostrar. A variavel Data esta como Date, mas mesmo ele entrando como Ano/mes/dia, ele apresenta como Dia/Mes/Ano.
Deixei comentado a entrada do 2005/05/20 pra fazer o teste da variavel data mostrar, fiz de tudo mas sempre mostra dia mes ano, e a variavel no sql esta como date tambem.
Citação:Public Class Form1
Dim datamostrar As Date "= #2005/05/20#
Dim dataentrada As String
Private Sub btnMostrar_Click(sender As Object, e As EventArgs) Handles btnMostrar.Click
dataentrada = txtData.Text
datamostrar = CDate(dataentrada)
txtMostrar.Text = datamostrar
End Sub
End Class
Deixei comentado a entrada do 2005/05/20 pra fazer o teste da variavel data mostrar, fiz de tudo mas sempre mostra dia mes ano, e a variavel no sql esta como date tambem.
A foto da Janela do Mostrar data
serio eu ainda não sei o pelo em ovo q vc está procurando.....
tudo em
https://docs.microsoft.com/pt-br/dotnet/visual-basic/language-reference/functions/type-conversion-functions
sendo variavel date, vai assumir e mostrar no formato q estiver seu sistema operacional......seja yyyy-MM-dd seja yyyy/MM/aa seja dd-MM-yyyy seja dd/MM/yyyy
variavel date é date nao importa q lugar do mundo.....mas sera mostrada no formato do seu SO
Dim aDateString, aTimeString As String
Dim aDate, aTime As Date
aDateString = "February 12, 1969"
aTimeString = "4:35:47 PM"
" The following line of code sets aDate to a Date value.
aDate = CDate(aDateString)
" The following line of code sets aTime to Date value.
aTime = CDate(aTimeString)
tudo em
https://docs.microsoft.com/pt-br/dotnet/visual-basic/language-reference/functions/type-conversion-functions
sendo variavel date, vai assumir e mostrar no formato q estiver seu sistema operacional......seja yyyy-MM-dd seja yyyy/MM/aa seja dd-MM-yyyy seja dd/MM/yyyy
variavel date é date nao importa q lugar do mundo.....mas sera mostrada no formato do seu SO
Resolvido
Tópico encerrado , respostas não são mais permitidas