vasco16 Posted May 19, 2009 at 03:38 PM Report #265401 Posted May 19, 2009 at 03:38 PM boas pessoal tenho um problema que é o seguinte: Quero filtrar os meus dados por por exemplo o mes de janeiro, para isso uso este código: Dim db As New OleDbConnection(my.My.Settings.ligacaoBD) ' LIGAR A BD db.Open() ' ACESSO AOS DADOS Dim comandosql = "Select matricula, valor, data from despesas_viaturas where DATA between #" & ComboBox1.Text & "-01-01# and #" & ComboBox1.Text & "-01-31#" Dim cmd As New OleDbCommand(comandosql, db) Dim dtr As OleDbDataReader = cmd.ExecuteReader(CommandBehavior.CloseConnection) ' CRIAÇÃO DE COLUNAS NO DATAGRIDVIEW Dim num_campos As Integer Dim campo As String DataGridView1.Columns.Clear() num_campos = dtr.FieldCount Dim idx As Integer For idx = 0 To num_campos - 1 campo = dtr.GetName(idx) DataGridView1.Columns.Add(campo, campo) Next ' CARREGAR OS DADOS Dim idx_linha As Integer idx_linha = 0 While dtr.Read() Dim linha As New DataGridViewRow() DataGridView1.Rows.Add(linha) DataGridView1.Rows(idx_linha).Cells(0).Value = dtr.Item(0) DataGridView1.Rows(idx_linha).Cells(1).Value = RTrim(dtr.Item(1)) DataGridView1.Rows(idx_linha).Cells(2).Value = RTrim(dtr.Item(2)) idx_linha = idx_linha + 1 End While ' AJUSTE DAS COLUNAS DO DATAGRIDVIEW DataGridView1.AutoSizeColumnsMode = DataGridViewAutoSizeColumnsMode.None ' FECHAR A BD dtr.Close() Dim inttotal As Double Dim y As DataGridViewRow For Each y In DataGridView1.Rows inttotal += y.Cells(1).Value Next TextBox2.Text = inttotal Dim ass As Integer ass = idx_linha TextBox2.Text = ass Label3.Text = "Janeiro" ' Limpa a informação anterior Chart1.ChartAreas.Clear() Chart1.Series.Clear() ' Define nova informação Dim chartArea1 As New ChartArea() Chart1.ChartAreas.Add(chartArea1) Dim series1 As New Series() Dim series2 As New Series() valor1() series1.Points.Add(TextBox1.Text) series2.Points.Add(TextBox2.Text) series1.IsValueShownAsLabel = True series2.IsValueShownAsLabel = True series2.AxisLabel = " " series1.Name = "Despesas (€)" series2.Name = "Nº de despesas" chartArea1.Area3DStyle.Enable3D = True Chart1.Series.Add(series1) Chart1.Series.Add(series2) ' Chart1.Location = New System.Drawing.Point(500, 300) Chart1.Size = New System.Drawing.Size(500, 500) só que ele está a ir buscar os dados todos...
bruno1234 Posted May 19, 2009 at 09:15 PM Report #265542 Posted May 19, 2009 at 09:15 PM A classe DateTime tem uma propriedade q é Month. Podes extrair daí o mês q precisas. Antes de testares logo e dar erro, primeiro vê o q o Month devolve, se é o nome da data, se é um inteiro, isso n me lembro ao certo. Depois organiza a query para receber o mês da maneira q te der jeito. Depois de testares estas 2 coisas individualmente adapta então o teu código. Matraquilhos para Android. Gratuito na Play Store. https://play.google.com/store/apps/details?id=pt.bca.matraquilhos
vasco16 Posted May 19, 2009 at 09:31 PM Author Report #265558 Posted May 19, 2009 at 09:31 PM A classe DateTime tem uma propriedade q é Month. Podes extrair daí o mês q precisas. mas isso na condição sql?
bruno1234 Posted May 19, 2009 at 09:39 PM Report #265567 Posted May 19, 2009 at 09:39 PM Não, isso da classe datetime do .net se tiveres um datetime: DateTime d = DateTime.Today; podes aceder ao seu mês: int nrMes = d.Month; Retorna um inteiro com o nr do mês Matraquilhos para Android. Gratuito na Play Store. https://play.google.com/store/apps/details?id=pt.bca.matraquilhos
José Lopes Posted May 19, 2009 at 10:14 PM Report #265591 Posted May 19, 2009 at 10:14 PM no sql também convém criares uma coluna com o mês... não me parece que ele vá sacar isso directamente à data... Quando te pedirem peixe.... ensina-os a Pescar!!Hum..lálálálá!!
vasco16 Posted May 19, 2009 at 10:17 PM Author Report #265593 Posted May 19, 2009 at 10:17 PM no sql também convém criares uma coluna com o mês... não me parece que ele vá sacar isso directamente à data... como assim? na tabela? um campo com o mes?:S
bruno1234 Posted May 19, 2009 at 10:20 PM Report #265599 Posted May 19, 2009 at 10:20 PM datepart(month, NOME_COLUNA_DATA) NOME_COLUNA_DATA -> Coluna no formato datetime Esta função retorna um inteiro com o mês, pode ser comparado com o do DateTime do .net. Matraquilhos para Android. Gratuito na Play Store. https://play.google.com/store/apps/details?id=pt.bca.matraquilhos
Weasel Posted May 20, 2009 at 09:27 AM Report #265708 Posted May 20, 2009 at 09:27 AM Eu uso sempre as datas no formato YYYYMMDD Por exemplo 20-05-2009 fica na base de dados 20090520 é muito mais simples de trabalhar depois. Knowledge to the masses
bruno1234 Posted May 20, 2009 at 08:16 PM Report #265938 Posted May 20, 2009 at 08:16 PM Eu uso sempre as datas no formato YYYYMMDD Por exemplo 20-05-2009 fica na base de dados 20090520 é muito mais simples de trabalhar depois. Isso depende de cada um. Eu prefiro ter mesmo o datetime para poder usar as funções de datas logo directamente. Matraquilhos para Android. Gratuito na Play Store. https://play.google.com/store/apps/details?id=pt.bca.matraquilhos
vasco16 Posted May 24, 2009 at 08:35 PM Author Report #266962 Posted May 24, 2009 at 08:35 PM boas pessoal tenho um problema que é o seguinte: Quero filtrar os meus dados por por exemplo o mes de janeiro, para isso uso este código: Dim db As New OleDbConnection(my.My.Settings.ligacaoBD) ' LIGAR A BD db.Open() ' ACESSO AOS DADOS Dim comandosql = "Select matricula, valor, data from despesas_viaturas where DATA between #" & ComboBox1.Text & "-01-01# and #" & ComboBox1.Text & "-01-31#" Dim cmd As New OleDbCommand(comandosql, db) Dim dtr As OleDbDataReader = cmd.ExecuteReader(CommandBehavior.CloseConnection) ' CRIAÇÃO DE COLUNAS NO DATAGRIDVIEW Dim num_campos As Integer Dim campo As String DataGridView1.Columns.Clear() num_campos = dtr.FieldCount Dim idx As Integer For idx = 0 To num_campos - 1 campo = dtr.GetName(idx) DataGridView1.Columns.Add(campo, campo) Next ' CARREGAR OS DADOS Dim idx_linha As Integer idx_linha = 0 While dtr.Read() Dim linha As New DataGridViewRow() DataGridView1.Rows.Add(linha) DataGridView1.Rows(idx_linha).Cells(0).Value = dtr.Item(0) DataGridView1.Rows(idx_linha).Cells(1).Value = RTrim(dtr.Item(1)) DataGridView1.Rows(idx_linha).Cells(2).Value = RTrim(dtr.Item(2)) idx_linha = idx_linha + 1 End While ' AJUSTE DAS COLUNAS DO DATAGRIDVIEW DataGridView1.AutoSizeColumnsMode = DataGridViewAutoSizeColumnsMode.None ' FECHAR A BD dtr.Close() Dim inttotal As Double Dim y As DataGridViewRow For Each y In DataGridView1.Rows inttotal += y.Cells(1).Value Next TextBox2.Text = inttotal Dim ass As Integer ass = idx_linha TextBox2.Text = ass Label3.Text = "Janeiro" ' Limpa a informação anterior Chart1.ChartAreas.Clear() Chart1.Series.Clear() ' Define nova informação Dim chartArea1 As New ChartArea() Chart1.ChartAreas.Add(chartArea1) Dim series1 As New Series() Dim series2 As New Series() valor1() series1.Points.Add(TextBox1.Text) series2.Points.Add(TextBox2.Text) series1.IsValueShownAsLabel = True series2.IsValueShownAsLabel = True series2.AxisLabel = " " series1.Name = "Despesas (€)" series2.Name = "Nº de despesas" chartArea1.Area3DStyle.Enable3D = True Chart1.Series.Add(series1) Chart1.Series.Add(series2) ' Chart1.Location = New System.Drawing.Point(500, 300) Chart1.Size = New System.Drawing.Size(500, 500) só que ele está a ir buscar os dados todos... o meu problema é que eu nem estou a conseguir filtrar os dados segundo o ano introduzido na combo box
jpaulino Posted May 24, 2009 at 09:37 PM Report #266978 Posted May 24, 2009 at 09:37 PM Isso depende de cada um. Eu prefiro ter mesmo o datetime para poder usar as funções de datas logo directamente. Eu também! Já colocaste um novo campo no comando SQL usando o datepart ?
vasco16 Posted May 24, 2009 at 09:44 PM Author Report #266981 Posted May 24, 2009 at 09:44 PM Eu também! Já colocaste um novo campo no comando SQL usando o datepart ? como assim?:s na instrução SQL?
edsousa Posted May 24, 2009 at 09:51 PM Report #266983 Posted May 24, 2009 at 09:51 PM Escolher só o mes de Janeiro do ano indicado na Combobox: Dim comandosql = "SELECT matricula, valor, data FROM despesas_viatura WHERE MONTH(data)=1 AND YEAR(data)=" & ComboBox1.Text Tharis Fan ClubMay Tharis bless you
vasco16 Posted May 24, 2009 at 10:42 PM Author Report #266995 Posted May 24, 2009 at 10:42 PM Escolher só o mes de Janeiro do ano indicado na Combobox: Dim comandosql = "SELECT matricula, valor, data FROM despesas_viatura WHERE MONTH(data)=1 AND YEAR(data)=" & ComboBox1.Text obrigado.
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