Jump to content

[vb.net 2005 express] - Demasiado cultura...


Manhoso

Recommended Posts

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?? :wallbash:

Hasta

Link to comment
Share on other sites

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

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

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

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

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

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

  • 2 weeks later...

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
×
×
  • 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.