AJUDA! SALVO DATA NO BD, E INVERTE MES E DIA!

MARICLAUDINO 11/12/2012 17:46:20
#415819
[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]
MARCELO.TREZE 11/12/2012 19:22:37
#415825
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:

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[Ô])






MARICLAUDINO 12/12/2012 11:28:06
#415854
Não sei porque, mas não tá funcionando :/
MARCELO.TREZE 12/12/2012 11:47:06
#415858
posta seu código colega
ALEVALE 12/12/2012 13:44:40
#415860
Não sei tem a ver mas não pode ser a data do sistema operacional que está dessa forma ?
MARICLAUDINO 12/12/2012 18:52:10
#415881
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á!
MARCELO.TREZE 12/12/2012 19:28:42
#415884
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
Faça seu login para responder