jags17 Posted May 11, 2012 at 02:17 PM Report #454596 Posted May 11, 2012 at 02:17 PM 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
Caça Posted May 11, 2012 at 02:20 PM Report #454601 Posted May 11, 2012 at 02:20 PM Tens de passar a data como yyyy-MM-dd, ou então usa parâmetros. Pedro Martins Não respondo a duvidas por PM
petvetbr Posted May 11, 2012 at 02:22 PM Report #454605 Posted May 11, 2012 at 02:22 PM 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
jags17 Posted May 11, 2012 at 02:28 PM Author Report #454608 Posted May 11, 2012 at 02:28 PM 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?
Caça Posted May 11, 2012 at 02:30 PM Report #454609 Posted May 11, 2012 at 02:30 PM É o grafico que está a dar erro. Pedro Martins Não respondo a duvidas por PM
jags17 Posted May 11, 2012 at 02:38 PM Author Report #454612 Posted May 11, 2012 at 02:38 PM 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?
Caça Posted May 11, 2012 at 02:41 PM Report #454615 Posted May 11, 2012 at 02:41 PM Os dados que estás a passar ou a forma como estás a passar não dá para fazer um gráfico. Pedro Martins Não respondo a duvidas por PM
jags17 Posted May 11, 2012 at 02:45 PM Author Report #454618 Posted May 11, 2012 at 02:45 PM 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
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