AJUDA! SALVO DATA NO BD, E INVERTE MES E DIA!
[txt-color=#e80000]Estou terminando meu tcc, estou fazendo ele no visual basic com o access como bd D: kkk [/txt-color]
[txt-color=#e80000]Bem, quando estou cadastrando as datas, elas estão sendo salvas com o mês e dia trocados, por exemplo: 05/10/2012 fica -> 10/05/2012.
Quando faço uma consulta por data com, por exemplo, 16/12/2012, aparece na datagridview 12/16/2012 e ainda muda o valor no textbox!
ALGUéM PODE ME AJUDAR?[/txt-color]
[txt-color=#e80000]Bem, quando estou cadastrando as datas, elas estão sendo salvas com o mês e dia trocados, por exemplo: 05/10/2012 fica -> 10/05/2012.
Quando faço uma consulta por data com, por exemplo, 16/12/2012, aparece na datagridview 12/16/2012 e ainda muda o valor no textbox!
ALGUéM PODE ME AJUDAR?[/txt-color]
sim claro que podemos, no access quando o banco é data hora o formato é ingles ou seja mm/dd/yyyy o que causa este problema descrito por você, porém é muito simples de corrigir, veja:
quando for salvar no banco faça assim, ex:
[txt-color=#0000f0]Format(txtdata.Text, [Ô]mm/dd/yyyy[Ô])[/txt-color]
query exemplo:
para pesquisar deve apena sficar atento caso haja uma data que não foi colocada, então este campo fica NULL, para tratar isso use o IIF conforme o exemplo abaixo:
conclusão:
para você exibir a data no formato certo basta usar o format ( Format(RS!Data,[Ô]dd/mm/yyyy[Ô])
quando for salvar no banco faça assim, ex:
[txt-color=#0000f0]Format(txtdata.Text, [Ô]mm/dd/yyyy[Ô])[/txt-color]
query exemplo:
sql = [Ô]insert into tabela (id, nome, data) values ([Ô] & txtid.text & [Ô],[ô][Ô] & txtNome.Text & [Ô][ô],#[Ô] & Format(txtdata.Text, [Ô]mm/dd/yyyy[Ô]) & [Ô]#[Ô]
para pesquisar deve apena sficar atento caso haja uma data que não foi colocada, então este campo fica NULL, para tratar isso use o IIF conforme o exemplo abaixo:
sql = [Ô] SELECT * FROM tabela WHERE data = #[Ô] & format(txtdata.text,[Ô]mm/dd/yyyy[Ô]) & [Ô]#[Ô]
Set RS = cnn.Execute(SQL)
Do While Not RS.EOF
List1.AddItem RS!ID
List1.AddItem RS!Nome
List1.AddItem IIF(Isnull(RS!data) = True, [Ô][Ô],Format(dd/mm/yyyy[Ô])
RS.MoveNext
Loop
conclusão:
para você exibir a data no formato certo basta usar o format ( Format(RS!Data,[Ô]dd/mm/yyyy[Ô])
Não sei porque, mas não tá funcionando :/
posta seu código colega
Não sei tem a ver mas não pode ser a data do sistema operacional que está dessa forma ?
Código do salvar:
varSql = [Ô]insert into Clientes [Ô] & _
[Ô](nome, telefone, celular, dtnascimento, dtcadastro, cpfcliente, rgcliente, sexo, obs, cep, complemento, bairro, cidade, uf, rua, logradouro) values [Ô] & _
[Ô]([ô][Ô] & _
txtnome.Text & [Ô][ô],[ô][Ô] & _
txtfone.Text & [Ô][ô],[ô][Ô] & _
txtcel.Text & [Ô][ô],#[Ô] & _
Format(dtnascimento, [Ô]dd/mm/yyyy[Ô]) & [Ô]#,#[Ô] & _
Format(dtcadastro, [Ô]dd/mm/yyyy[Ô]) & [Ô]#,[ô][Ô] & _
txtcpf.Text & [Ô][ô],[ô][Ô] & _
txtrg.Text & [Ô][ô],[ô][Ô] & _
lblsexo.Text & [Ô][ô],[ô][Ô] & _
txtobs.Text & [Ô][ô],[ô][Ô] & _
txtcep.Text & [Ô][ô],[ô][Ô] & _
txtcomplemento.Text & [Ô][ô],[ô][Ô] & _
txtbairro.Text & [Ô][ô],[ô][Ô] & _
txtcidade.Text & [Ô][ô],[ô][Ô] & _
txtuf.Text & [Ô][ô],[ô][Ô] & _
txtrua.Text & [Ô][ô],[ô][Ô] & _
txtlogradouro.Text & [Ô][ô])[Ô]
drClientes.Close()
cmdClientes.Connection = objConecta
cmdClientes.CommandText = varSql
cmdClientes.ExecuteNonQuery()
E no consulta:
If txtnome.Text <> [Ô][Ô] And txtdtcadastro.MaskCompleted = True Then
varsql = ([Ô]Select * from Clientes where nome like [ô][Ô] & txtnome.Text & [Ô]%[ô] and dtcadastro = #[Ô] & Format(txtdtcadastro.Text, [Ô]dd/mm/yyyy[Ô]) & [Ô]# and lixeira = false[Ô])
end if
Brigadão desde já!
varSql = [Ô]insert into Clientes [Ô] & _
[Ô](nome, telefone, celular, dtnascimento, dtcadastro, cpfcliente, rgcliente, sexo, obs, cep, complemento, bairro, cidade, uf, rua, logradouro) values [Ô] & _
[Ô]([ô][Ô] & _
txtnome.Text & [Ô][ô],[ô][Ô] & _
txtfone.Text & [Ô][ô],[ô][Ô] & _
txtcel.Text & [Ô][ô],#[Ô] & _
Format(dtnascimento, [Ô]dd/mm/yyyy[Ô]) & [Ô]#,#[Ô] & _
Format(dtcadastro, [Ô]dd/mm/yyyy[Ô]) & [Ô]#,[ô][Ô] & _
txtcpf.Text & [Ô][ô],[ô][Ô] & _
txtrg.Text & [Ô][ô],[ô][Ô] & _
lblsexo.Text & [Ô][ô],[ô][Ô] & _
txtobs.Text & [Ô][ô],[ô][Ô] & _
txtcep.Text & [Ô][ô],[ô][Ô] & _
txtcomplemento.Text & [Ô][ô],[ô][Ô] & _
txtbairro.Text & [Ô][ô],[ô][Ô] & _
txtcidade.Text & [Ô][ô],[ô][Ô] & _
txtuf.Text & [Ô][ô],[ô][Ô] & _
txtrua.Text & [Ô][ô],[ô][Ô] & _
txtlogradouro.Text & [Ô][ô])[Ô]
drClientes.Close()
cmdClientes.Connection = objConecta
cmdClientes.CommandText = varSql
cmdClientes.ExecuteNonQuery()
E no consulta:
If txtnome.Text <> [Ô][Ô] And txtdtcadastro.MaskCompleted = True Then
varsql = ([Ô]Select * from Clientes where nome like [ô][Ô] & txtnome.Text & [Ô]%[ô] and dtcadastro = #[Ô] & Format(txtdtcadastro.Text, [Ô]dd/mm/yyyy[Ô]) & [Ô]# and lixeira = false[Ô])
end if
Brigadão desde já!
bom tanto no insert quanto no select o format tem que ser mm/dd/yyyy
em algum lugar do código você exibe o resultado da pesquisa e ai sim você converte para dfd/mm/yyyy
exemplo
txtdata.Text = Format(RS!data,[Ô]dd/mm/yyyy[Ô])
entendeu
em algum lugar do código você exibe o resultado da pesquisa e ai sim você converte para dfd/mm/yyyy
exemplo
txtdata.Text = Format(RS!data,[Ô]dd/mm/yyyy[Ô])
entendeu
Faça seu login para responder