Manhoso Posted November 8, 2007 at 02:40 PM Report Share #146101 Posted November 8, 2007 at 02:40 PM Boas. Eu não se será aqui o sitio indicado para a minha dúvida, mas cá vai: Eu estou a tentar ler uma data de uma bd em access, que introduzi via vb.net. Agora, quando a leio se o dia for mais pequeno do que 12 ele reconhece o dia como mês e vice-versa. Por exemplo, introduzi a data 1 de Novembro de 2007 (1/11/2007) e quando leu, devolveu o seguinte: 11 de Janeiro de 2007 (11/1/2007). Pelo que pude ver por uma pesquisa aqui no pap isto tem a haver com a cultura, certo? A cena é que a cultura do meu prog tá em pt-PT 🙂 Sendo assim, alguém me pode ajudar?? Hasta Link to comment Share on other sites More sharing options...
wing Posted November 8, 2007 at 02:47 PM Report Share #146103 Posted November 8, 2007 at 02:47 PM Viva o problema e' que o soft grava sempre em MM/DD/YYYY, se sabes que é assim transformas antes de guardar. Para leres tb sabes que é assim. Ao atribuires a uma variavel do tipo data ele fica logo com esta no teu regional setting... Sem stress... Wing Link to comment Share on other sites More sharing options...
Manhoso Posted November 8, 2007 at 09:58 PM Author Report Share #146237 Posted November 8, 2007 at 09:58 PM A cena toda está é que é só se o dia for menor que doze. Para maior que doze funca na boa. Link to comment Share on other sites More sharing options...
Tiago Salgado Posted November 9, 2007 at 09:31 AM Report Share #146275 Posted November 9, 2007 at 09:31 AM Podes forçar a gravação e a leitura usando um provider. ex. DateTime.Now.ToString("yyyy-MM-dd") Link to comment Share on other sites More sharing options...
Asgorath Posted November 9, 2007 at 11:32 AM Report Share #146294 Posted November 9, 2007 at 11:32 AM Dim culturename As String = Application.CurrentCulture.Name Dim myCIintl As New System.Globalization.CultureInfo(Application.CurrentCulture.Name) Application.CurrentCulture = myCIintl "The Dark Side Clouds Everthing. Impossible To See The Future Is."My rig: Intel Core 2 Quad Q9450 | abit IP35P | 4G Kingston 800 Mhz | XFX GeForce 9800 GX2 1G ddr3 | 2X WD5000AAJS 500Gb Sata 2 | PSU 600W || Caixa El-Diablo | Creative XMod Link to comment Share on other sites More sharing options...
wing Posted November 10, 2007 at 07:13 PM Report Share #146613 Posted November 10, 2007 at 07:13 PM Será pq existem 12 meses ? Link to comment Share on other sites More sharing options...
vbtipo Posted November 10, 2007 at 08:35 PM Report Share #146635 Posted November 10, 2007 at 08:35 PM Na base de dados tens que ver se o teu campo data como está configurada, ou seja, se não a modificaste ela deve estar com esta configuração MM/DD/YYYY (Mês/Dia/Ano). Deve ser aí que reside o teu problema... Lema: Se eu não saber de alguma coisa não se preocupem porque tento sempre ajudar alguma coisita, nem que seja, por palpites/sugestões. Link to comment Share on other sites More sharing options...
Manhoso Posted November 12, 2007 at 03:28 PM Author Report Share #146891 Posted November 12, 2007 at 03:28 PM Será pq existem 12 meses ? No s***.... Na base de dados tens que ver se o teu campo data como está configurada, ou seja, se não a modificaste ela deve estar com esta configuração MM/DD/YYYY (Mês/Dia/Ano). Deve ser aí que reside o teu problema... continua na mm. :S Link to comment Share on other sites More sharing options...
Asgorath Posted November 12, 2007 at 04:20 PM Report Share #146897 Posted November 12, 2007 at 04:20 PM Mesmo usando a sugestão do Tiago, devia dar. "The Dark Side Clouds Everthing. Impossible To See The Future Is."My rig: Intel Core 2 Quad Q9450 | abit IP35P | 4G Kingston 800 Mhz | XFX GeForce 9800 GX2 1G ddr3 | 2X WD5000AAJS 500Gb Sata 2 | PSU 600W || Caixa El-Diablo | Creative XMod Link to comment Share on other sites More sharing options...
Manhoso Posted November 12, 2007 at 04:59 PM Author Report Share #146898 Posted November 12, 2007 at 04:59 PM Mesmo usando a sugestão do Tiago, devia dar. pois deveria,mas como disse o vbtipo, o problema está na própria bd. Usando a sugestão do Tiago, teria de mudar o tipo de dados da variável que guarda a data lida/escrita na bd, ou então mudar o tipo de dados do campo da bd. Se bem que a bd ainda só tem dados de teste, sempre me ensinaram que não é boa coisa alterar a bd de acordo com a aplicação... Alterar o tipo de dados da aplicação não resolve nada, pelo que expliquei acima (bd). É que só me falta resolver este bug para este projecto ver a luz do dia... Link to comment Share on other sites More sharing options...
Asgorath Posted November 12, 2007 at 05:18 PM Report Share #146900 Posted November 12, 2007 at 05:18 PM Mas não modificas a tabela continuas com datetime. lê os dados da bd para variáveis datetime e fazes a conversão e apresentas os dados num controlo qualquer. "The Dark Side Clouds Everthing. Impossible To See The Future Is."My rig: Intel Core 2 Quad Q9450 | abit IP35P | 4G Kingston 800 Mhz | XFX GeForce 9800 GX2 1G ddr3 | 2X WD5000AAJS 500Gb Sata 2 | PSU 600W || Caixa El-Diablo | Creative XMod Link to comment Share on other sites More sharing options...
Manhoso Posted November 12, 2007 at 05:27 PM Author Report Share #146903 Posted November 12, 2007 at 05:27 PM Mas não modificas a tabela continuas com datetime. lê os dados da bd para variáveis datetime e fazes a conversão e apresentas os dados num controlo qualquer. É isso que tenho: Private Sub contactList_SelectedIndexChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles contactList.SelectedIndexChanged Dim aux As String = "" c = New Contacto() If contactList.SelectedIndices.Count <> 0 Then telfList.Items.Clear() emailList.Items.Clear() delete_btn.Enabled = True alter_btn.Enabled = True 'mostrar dados If c.read(contactList.SelectedItem.ToString) Then nome_txt.Text = c.Nome morada_txt.Text = c.Morada localidade_txt.Text = c.Localidade If c.CPostal.Length = 8 And c.CPostal.Contains("-") Then aux = c.CPostal.Substring(0, 4) prefixo_txt.Text = aux aux = c.CPostal.Substring(5) sufixo_txt.Text = aux End If If c.DataNasc.Date = New Date(1900, 1, 1).Date Then bday_lbl.Text = "Não disponível" Else bday_lbl.Text = c.DataNasc.Day & "/" & monthExtent(c.DataNasc.Month) & "/" & c.DataNasc.Year End If 'mostrar números de telefone If c.Telefones.Count > 0 Then telfList.Items.AddRange(c.Telefones.ToArray) End If 'mostrar emails If c.Emails.Count > 0 Then emailList.Items.AddRange(c.Emails.ToArray) End If End If Else delete_btn.Enabled = False alter_btn.Enabled = False End If End Sub o problema não é a leitura, mas sim a escrita. para escrita, tenho como se segue: Private Sub insert_btn_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles insert_btn.Click Dim form As New addAlterContact() form.Text = "Adicionar Registo" 'definição dos atributos a inserir If form.ShowDialog() = Windows.Forms.DialogResult.OK Then With form c.Nome = .nome_txt.Text c.Morada = .morada_txt.Text c.CPostal = .prefixo_txt.Text & "-" & .sufixo_txt.Text c.Localidade = .localidade_txt.Text If .bday_dtpicker.Value.Date = Now.Date Then c.DataNasc = New Date(1900, 1, 1).Date Else c.DataNasc = .bday_dtpicker.Value.Date End If 'telefones If .telfList.Items.Count > 0 Then For i As Integer = 0 To .telfList.Items.Count - 1 c.Telefones.Add(.telfList.Items.Item(i)) Next End If 'emails If .emailList.Items.Count > 0 Then For i As Integer = 0 To .emailList.Items.Count - 1 c.Emails.Add(.emailList.Items.Item(i)) Next End If End With 'inserção do registo If c.Insert Then MsgBox("Registo introduzido com êxito!") loadData() End If Else MsgBox("Registo não foi introduzido!") End If End Sub Hasta vbtipo, a tua ideia e no formato (format) certo? Link to comment Share on other sites More sharing options...
Asgorath Posted November 12, 2007 at 05:59 PM Report Share #146914 Posted November 12, 2007 at 05:59 PM ler é fácil apresentas os dados em pt-pt. Para inserir datas tem que as converter aas datas para inglês mm-dd-yy. Private Sub DateTimePicker1_ValueChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles DateTimePicker1.ValueChanged Me.DateTimePicker1.CustomFormat = "mm,dd,yy" Me.DateTimePicker1.Format = DateTimePickerFormat.Custom Dim myCIintl As New System.Globalization.CultureInfo("en-US") Application.CurrentCulture = myCIintl Dim data As DateTime data = Me.DateTimePicker1.Value Me.TextBox1.Text = data.ToShortDateString 'MessageBox.Show(Me.DateTimePicker1.Value) End Sub "The Dark Side Clouds Everthing. Impossible To See The Future Is."My rig: Intel Core 2 Quad Q9450 | abit IP35P | 4G Kingston 800 Mhz | XFX GeForce 9800 GX2 1G ddr3 | 2X WD5000AAJS 500Gb Sata 2 | PSU 600W || Caixa El-Diablo | Creative XMod Link to comment Share on other sites More sharing options...
axt3k Posted November 23, 2007 at 10:46 AM Report Share #149608 Posted November 23, 2007 at 10:46 AM tb ja tive esse problema... adiciona a culture pt-pt e isso fica logo a bombar... www.lsantos.info Link to comment Share on other sites More sharing options...
Recommended Posts
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 accountSign in
Already have an account? Sign in here.
Sign In Now