Jump to content

Recommended Posts

Posted

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 é:

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

EDIT: GeSHi adicionado

Posted

A consulta do mês pode não estar funcionando porque você está utilizando aspas simples para delimitar o número do mês. Se este campo for de um tipo numérico, você não deve usar aspas para delimitar, pois as aspas só são utilizadas para campos texto, então ficaria algo assim na primeira linha:

Dim sqlProducts As String = "SELECT Dia, SUM (Quantidade) AS Total FROM Impressoes WHERE (((Impressoes.Mes)= "& DateTimePicker1.Text & " ))GROUP BY Impressoes.Dia"

Porém para isto estou assumindo que existe um campo numérico para o mês da impressão. Se o campo estiver como Date ou DateTime, aí é diferente.

Fernando Lage Bastos - MCP/MCTS/MCPD

Posted

Boas,

Caça obrigado pela resposta mas o petvetbr tem razão, o problema era daí...mas agora a coisa ficou diferente...xD...em vez de dar erro no lugar do relatório aparece um X de uma ponta a outra em vermelho....o que poderá ser?

Posted

Sim, mas o problema é que não dá nenhuma mensagem a dzr o erro que dá simplesmente não mostra nada, só o X....quando isto aconteçe costuma ser do que? Os dados não combinam, falta de dados?

Posted

já está! já consegui!

era só trocar isto:

Chart1.Series("Series1").YValueMembers = "Quantidade"

por isto:

Chart1.Series("Series1").YValueMembers = "Total", que é a variavel para onde ele mandava fazer o sum..

Obrigado

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.