C# 我无法更新我的图表
我的表格有两个按钮。每一个都在数据库的表中生成不同的值。应通过单击每个按钮更新图表,但仅显示程序运行时数据库中的值。表数据显示在datagridview中,以验证数据库是否正在更改。我尝试了.Invalidate()和.Update()命令,但没有成功C# 我无法更新我的图表,c#,charts,tableadapter,C#,Charts,Tableadapter,我的表格有两个按钮。每一个都在数据库的表中生成不同的值。应通过单击每个按钮更新图表,但仅显示程序运行时数据库中的值。表数据显示在datagridview中,以验证数据库是否正在更改。我尝试了.Invalidate()和.Update()命令,但没有成功 using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using System.Data.OleDb;
namespace FrmtabGraf
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
private void Form1_Load(object sender, EventArgs e)
{
TODO: This line of code loads data into the 'lojaDataSet.Dados' table. You can move, or remove it, as needed.
this.dadosTableAdapter.Fill(this.lojaDataSet.Dados);
}
void FillTable1()
{
Conexao ca = new Conexao();
string sql = "";
sql += " Insert Into Dados ";
sql += " (Descricao, Quantidade) ";
sql += " Select ";
sql += " d.Defeito, COUNT(d.Defeito) AS quantidade ";
sql += " From ";
sql += " (SisIndice s INNER JOIN ";
sql += " Defeitos d ON s.idDefeito = d.idDefeito) ";
sql += " WHERE (s.DataFat BETWEEN ";
sql += " #" + "01/01/2001" + "# ";
sql += " AND ";
sql += " #" + "31/12/2006" + "#) ";
sql += " GROUP BY d.Defeito ";
ca.Conectar();
OleDbCommand cd = new OleDbCommand(sql, ca.cx);
try
{
cd.ExecuteNonQuery();
}
catch (OleDbException x)
{
MessageBox.Show(x.Message);
}
ca.Desconectar();
}
void FillTable2()
{
Conexao ca = new Conexao();
string sql = "";
sql += " Insert Into Dados ";
sql += " (Descricao, Quantidade) ";
sql += " Select ";
sql += " d.Defeito, COUNT(d.Defeito) AS quantidade ";
sql += " From ";
sql += " (SisIndice s INNER JOIN ";
sql += " Defeitos d ON s.idDefeito = d.idDefeito) ";
sql += " WHERE (s.DataFat BETWEEN ";
sql += " #" + "01/01/2001" + "# ";
sql += " AND ";
sql += " #" + "31/12/2015" + "#) ";
sql += " GROUP BY d.Defeito ";
ca.Conectar();
OleDbCommand cd = new OleDbCommand(sql, ca.cx);
try
{
cd.ExecuteNonQuery();
}
catch (OleDbException x)
{
MessageBox.Show(x.Message);
}
ca.Desconectar();
}
void ReadTable()
{
Conexao ca = new Conexao();
string sql = "";
sql += " Select ";
sql += " Quantidade, Descricao ";
sql += " From Dados ";
ca.Conectar();
OleDbDataAdapter da = new OleDbDataAdapter(sql, ca.cx);
DataSet ds = new DataSet();
da.Fill(ds, "Dados");
dgvTable.DataSource = ds.Tables["Dados"];
ca.Desconectar();
}
void ClearTable()
{
Conexao ca = new Conexao();
string sql = "";
sql += " Delete * From Dados ";
ca.Conectar();
OleDbCommand cd = new OleDbCommand(sql, ca.cx);
try
{
cd.ExecuteNonQuery();
}
catch (OleDbException x)
{
MessageBox.Show(x.Message);
}
ca.Desconectar();
}
private void cmdDados1_Click(object sender, EventArgs e)
{
ClearTable();
FillTable1();
ReadTable();
}
private void cmdDados2_Click(object sender, EventArgs e)
{
ClearTable();
FillTable2();
ReadTable();
}
}
}
请只用英语。否则,我们大多数人将无法帮助您。您确定您正在从查询中获取数据吗?是的,KDecker!表数据显示在datagridview中,以验证数据库是否正在更改。看起来,在您的
FillTable
方法末尾,您对数据不做任何操作。我无法从代码中判断您是否已将DataGrid
的DataSource
连接到SQL数据库,但我认为如果您希望它自动发生,则需要这样做。否则,您需要转换DB查询结果并适当地填充表格。我在这里看到没有按钮单击事件处理程序可以处理图表,还有许多SQL代码似乎与问题无关。请编辑并提供一个可验证的示例。