使用C#.net中的数据表将数据插入数据集中
我使用数据集在crystal report上显示数据,而不使用SQL server 我的问题是数据没有插入到表中 这是我的密码:使用C#.net中的数据表将数据插入数据集中,c#,.net,crystal-reports,dataset,C#,.net,Crystal Reports,Dataset,我使用数据集在crystal report上显示数据,而不使用SQL server 我的问题是数据没有插入到表中 这是我的密码: try { DataSet2 ds1 = new DataSet2(); DataTable t1 = ds1.Tables.Add("report1"); t1.Columns.Add("mtrno", Type.GetType("System.String")); t1.Columns.Add("pf1",
try
{
DataSet2 ds1 = new DataSet2();
DataTable t1 = ds1.Tables.Add("report1");
t1.Columns.Add("mtrno", Type.GetType("System.String"));
t1.Columns.Add("pf1", Type.GetType("System.String"));
t1.Columns.Add("pf2", Type.GetType("System.String"));
t1.Columns.Add("pf3", Type.GetType("System.String"));
t1.Columns.Add("pf4", Type.GetType("System.String"));
t1.Columns.Add("pf5", Type.GetType("System.String"));
t1.Columns.Add("pf6", Type.GetType("System.String"));
t1.Columns.Add("pf7", Type.GetType("System.String"));
t1.Columns.Add("rel", Type.GetType("System.String"));
//t3.Columns.Add("r_no",Type.GetType("System.String"));
//t3.Columns.Add("date", Type.GetType("System.String"));
//t3.Columns.Add("type", Type.GetType("System.String"));
//t3.Columns.Add("const", Type.GetType("System.String"));
//t3.Columns.Add("volt", Type.GetType("System.String"));
//t3.Columns.Add("class", Type.GetType("System.String"));
//t2.Columns.Add("rel", Type.GetType("System.String"));
DataRow r1;
// DataRow r3;
textBox1.Clear();
DirectoryInfo d_info = new DirectoryInfo("D:\\");
FileInfo[] f_info = d_info.GetFiles("*.txt");
foreach (FileInfo fi in f_info)
{
string fname = @"D:\\" + Path.GetFileNameWithoutExtension(fi.Name) + ".txt";
if (fname.Contains(listBox1.SelectedItem.ToString()))
{
StreamReader sread1 = new StreamReader(fname);
string line = null;
while ((line = sread1.ReadLine()) != null)
{
if (line.Contains("[Report Header]|" + comboBox3.SelectedItem.ToString()))
{
line = line.Replace("[Report Header]|", "");
string[] r_words = line.Split('|');
line = sread1.ReadLine();
if (line.Contains("[Field Heading]|"))
{
string[] f_words = line.Split('|');
foreach (string s in f_words)
{
textBox1.Text = textBox1.Text + s;
}
}
textBox1.Text = textBox1.Text + Environment.NewLine;
for (int i = 0; i < 32; i++)
{
line = sread1.ReadLine();
if (line.Contains("[Meter_Record]|") || line.Contains(comboBox4.SelectedItem.ToString()))
{
line=line.Replace("[Meter_Record]|","");
string[] m_words = line.Split('|');
r1 = t1.NewRow();
r1["mtrno"] = m_words[0].ToString();
r1["pf1"] = m_words[1].ToString();
r1["pf2"] = m_words[2].ToString();
r1["pf3"] = m_words[3].ToString();
r1["pf4"] = m_words[4].ToString();
r1["pf5"] = m_words[5].ToString();
r1["pf6"] = m_words[6].ToString();
r1["pf7"] = m_words[7].ToString();
r1["rel"] = "yes";
//for (int j = 0; j < m_words.Length;j++ )
//{
// textBox1.Text = textBox1.Text + m_words[j];
//}
}
//textBox1.Text = textBox1.Text + Environment.NewLine;
}
}
}
}
}
CrystalReport2 objRpt1 = new CrystalReport2();
//objRpt.SetDataSource(ds.Tables["h_report"]);
objRpt1.SetDataSource(ds1.Tables["report1"]);
crystalReportViewer1.ReportSource = objRpt1;
crystalReportViewer1.Zoom(1);
crystalReportViewer1.Refresh();
}
catch(Exception ex)
{
MessageBox.Show(ex.Message);
}
试试看
{
DataSet2 ds1=新的DataSet2();
DataTable t1=ds1.Tables.Add(“report1”);
t1.Columns.Add(“mtrno”,Type.GetType(“System.String”);
t1.Columns.Add(“pf1”,Type.GetType(“System.String”);
t1.Columns.Add(“pf2”,Type.GetType(“System.String”);
t1.Columns.Add(“pf3”,Type.GetType(“System.String”);
t1.Columns.Add(“pf4”,Type.GetType(“System.String”);
t1.Columns.Add(“pf5”,Type.GetType(“System.String”);
t1.Columns.Add(“pf6”,Type.GetType(“System.String”);
t1.Columns.Add(“pf7”,Type.GetType(“System.String”);
t1.Columns.Add(“rel”,Type.GetType(“System.String”);
//t3.Columns.Add(“r_no”,Type.GetType(“System.String”);
//t3.Columns.Add(“date”,Type.GetType(“System.String”);
//t3.Columns.Add(“type”,type.GetType(“System.String”);
//t3.Columns.Add(“const”,Type.GetType(“System.String”);
//t3.Columns.Add(“volt”,Type.GetType(“System.String”);
//t3.Columns.Add(“class”,Type.GetType(“System.String”);
//t2.Columns.Add(“rel”,Type.GetType(“System.String”);
数据行r1;
//数据行r3;
textBox1.Clear();
DirectoryInfo d\u info=新的DirectoryInfo(“d:\\”);
FileInfo[]f_info=d_info.GetFiles(“*.txt”);
foreach(f_信息中的文件信息fi)
{
字符串fname=@“D:\\”+Path.GetFileNameWithoutExtension(fi.Name)+“.txt”;
if(fname.Contains(listBox1.SelectedItem.ToString())
{
StreamReader sread1=新的StreamReader(fname);
字符串行=null;
而((line=sread1.ReadLine())!=null)
{
if(line.Contains(“[Report Header]|”+comboBox3.SelectedItem.ToString()))
{
行=行。替换(“[Report Header]|”和“”);
string[]r_words=line.Split(“|”);
line=sread1.ReadLine();
if(行包含(“[字段标题]|”)
{
string[]f_words=line.Split(“|”);
foreach(f_单词中的字符串s)
{
textBox1.Text=textBox1.Text+s;
}
}
textBox1.Text=textBox1.Text+Environment.NewLine;
对于(int i=0;i<32;i++)
{
line=sread1.ReadLine();
if(line.Contains(“[Meter_Record]|”)line.Contains(comboBox4.SelectedItem.ToString())
{
行=行。替换(“[Meter_Record]|”和“”);
string[]m_words=line.Split(“|”);
r1=t1.NewRow();
r1[“mtrno”]=m_单词[0]。ToString();
r1[“pf1”]=m_字[1]。ToString();
r1[“pf2”]=m_字[2]。ToString();
r1[“pf3”]=m_单词[3]。ToString();
r1[“pf4”]=m_字[4].ToString();
r1[“pf5”]=m_字[5].ToString();
r1[“pf6”]=m_单词[6]。ToString();
r1[“pf7”]=m_字[7].ToString();
r1[“rel”]=“是”;
//for(int j=0;j
通常要添加列、查看和添加数据:
DataRow anyRow = ds1.report1.NewRow();
anyRow.mtrno = 123;
anyRow.pf1 = "abc";
report1.Rows.Add(anyRow);
编辑:(回应您的评论)
在代码中,您没有添加新行,而是定义了一行,但从未添加它,即
report1.Rows.Add(anyRow);
查看您的for循环内部,即
r1 = t1.NewRow();
r1["mtrno"] = m_words[0].ToString();
但您从未将这一新行添加到表中。这就是为什么我给了您一个如何“添加”行的示例。您没有将
t1
(数据表)添加到数据集中
加上这一行
ds1.Tables.Add(t1);
以前
CrystalReport2 objRpt1 = new CrystalReport2();
问题在于,在此之前,必须向数据表添加行,并向数据集添加数据表
objRpt1.SetDataSource(ds1.Tables["report1"]);
您正在创建一个dataset、datatable和datarows,并将值放入这些行中。您忘记的是,datatable不知道您向一行添加了数据,就像dataset不知道您对datatable做了什么一样。要让上层实际包含数据,还必须将其添加到上层
在行中输入值后使用此代码
// Add row to the table.
t1.Rows.Add(r1);
// Now the table contains a single row.
在完成datatable后使用此代码(因为在创建crystal report之前只有一个数据表)
// Add table to the upper level data set.
ds2.Tables.Add(t1);
// Now the data set contains a single data table.
您是否有任何错误?如果有,您能否将其包括在内。否,当我将数据集数据写入xml文件时,我什么也没有得到。brono,当我将数据集数据写入xml文件时,我什么也没有得到。在输出到xml之前,数据集中是否存在正确的数据?当然,他的第四行DataTable t1=ds1.Tables.Add(“report1”);实现了这一点?