1. Este site usa cookies. Ao continuar a usar este site está a concordar com o nosso uso de cookies. Saber Mais.

Chart em VB 2010

Discussão em 'Programação' iniciada por jags17, 11 de Maio de 2012. (Respostas: 2; Visualizações: 808)

  1. jags17

    jags17 Power Member

    Boas Pessoal,

    Estou com um pequeno entrave num programa...espero que me possam ajudar...

    Então é assim: eu pretendo gerar um chart do VB numa form atraves de código mas está-me a dar o erro: "Tipo de dados incorrecto na expressão de critérios."
    O meu código é:

    Código:
    Dim strConn As String = "Provider=Microsoft.ACE.OLEDB.12.0; Data Source=" & Application.StartupPath & "\BD_Reprografia.accdb"
    
            Dim conn As New OleDbConnection(strConn)
            conn.Open()
    
            Dim sqlProducts As String = "SELECT Dia, SUM (Quantidade) AS Total FROM Impressoes WHERE (((Impressoes.Mes)='" & DateTimePicker1.Text & "'))GROUP BY Impressoes.Dia"
            Dim da As New OleDbDataAdapter(sqlProducts, conn)
            Dim ds As New DataSet()
            da.Fill(ds, "Impressoes")  <------- Nesta linha dá-me erro!
    
            Dim ChartArea1 As ChartArea = New ChartArea()
            Dim Legend1 As Legend = New Legend()
            Dim Series1 As Series = New Series()
            Dim Chart1 = New DataVisualization.Charting.Chart()
            Me.Controls.Add(Chart1)
    
            ChartArea1.Name = "ChartArea1"
            Chart1.ChartAreas.Add(ChartArea1)
            Legend1.Name = "Legend1"
            Chart1.Legends.Add(Legend1)
            Chart1.Location = New System.Drawing.Point(50, 50)
            Chart1.Name = "Chart1"
            Series1.ChartArea = "ChartArea1"
            Series1.Legend = "Legend1"
            Series1.Name = "Series1"
            Chart1.Series.Add(Series1)
            Chart1.Size = New System.Drawing.Size(750, 500)
            Chart1.TabIndex = 0
            Chart1.Text = "Chart1"
    
            Chart1.Series("Series1").XValueMember = "Dia"
            Chart1.Series("Series1").YValueMembers = "Quantidade"
    
            Chart1.DataSource = ds.Tables("Impressoes")
            conn.Close()
    Verfiquei o valor que me era dado no datetimepicker1.text usando uma msgbox e o valor é "05", uma vez que vou fazer a pesquisa segundo um mes a minha escolha e quando for escolher no calendário ele converte o nome do mes para um número (Maio=05)...mas a consulta não funciona...

    Já verifiquei o tipo de dados na BD e corresponde por isso nao é daí, até porque se eu trocar a query que tenho por esta:

    Dim sqlProducts As String = "SELECT * FROM Impressoes WHERE Mes=05"

    já funciona mas não faz o somatório....

    Se alguem souber o que estou a fazer mal pf digam-me...Obrigado

    Cumprimentos
     
    Última edição: 11 de Maio de 2012
  2. Boas
    Podes simplificar um bocado a query: "SELECT Dia, SUM (Quantidade) AS Total FROM Impressoes WHERE Mes = '" & DateTimePicker1.Text & "' GROUP BY Dia"
    Repara que coloquei também um espaço entre a última plica do WHERE e o GROUP BY,pode ser que seja aí o erro.Se isso não for a solução,verifica que tipo de dados é a coluna Mes,porque se for um inteiro pode estar a dar erro por estares a comparar um inteiro com uma string (não costuma haver problema,mas nunca se sabe).
    Cumps
     
  3. jags17

    jags17 Power Member

    Já está, já resolvi!
    Obrigado!

    Cumprimentos
     

Partilhar esta Página