无法找到表 1

fengxingko 2009-03-20 11:49:36
未处理 System.IndexOutOfRangeException
Message="无法找到表 1。"
Source="System.Data"
StackTrace:
在 System.Data.DataTableCollection.get_Item(Int32 index)
在 表.Form1.ReportShow() 位置 E:\mspj_table\表\表\Form1.cs:行号 102
在 表.Form1.Form1_Load(Object sender, EventArgs e) 位置 E:\mspj_table\表\表\Form1.cs:行号 25
在 System.Windows.Forms.Form.OnLoad(EventArgs e)
在 System.Windows.Forms.Form.OnCreateControl()
在 System.Windows.Forms.Control.CreateControl(Boolean fIgnoreVisible)
在 System.Windows.Forms.Control.CreateControl()
在 System.Windows.Forms.Control.WmShowWindow(Message& m)
在 System.Windows.Forms.Control.WndProc(Message& m)
在 System.Windows.Forms.ScrollableControl.WndProc(Message& m)
在 System.Windows.Forms.ContainerControl.WndProc(Message& m)
在 System.Windows.Forms.Form.WmShowWindow(Message& m)
在 System.Windows.Forms.Form.WndProc(Message& m)
在 System.Windows.Forms.Control.ControlNativeWindow.OnMessage(Message& m)
在 System.Windows.Forms.Control.ControlNativeWindow.WndProc(Message& m)
在 System.Windows.Forms.NativeWindow.DebuggableCallback(IntPtr hWnd, Int32 msg, IntPtr wparam, IntPtr lparam)
在 System.Windows.Forms.SafeNativeMethods.ShowWindow(HandleRef hWnd, Int32 nCmdShow)
在 System.Windows.Forms.Control.SetVisibleCore(Boolean value)
在 System.Windows.Forms.Form.SetVisibleCore(Boolean value)
在 System.Windows.Forms.Control.set_Visible(Boolean value)
在 System.Windows.Forms.Application.ThreadContext.RunMessageLoopInner(Int32 reason, ApplicationContext context)
在 System.Windows.Forms.Application.ThreadContext.RunMessageLoop(Int32 reason, ApplicationContext context)
在 System.Windows.Forms.Application.Run(Form mainForm)
在 表.Program.Main() 位置 E:\mspj_table\表\表\Program.cs:行号 15
在 System.AppDomain._nExecuteAssembly(Assembly assembly, String[] args)
在 System.AppDomain.ExecuteAssembly(String assemblyFile, Evidence assemblySecurity, String[] args)
在 Microsoft.VisualStudio.HostingProcess.HostProc.RunUsersAssembly()
在 System.Threading.ThreadHelper.ThreadStart_Context(Object state)
在 System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state)
在 System.Threading.ThreadHelper.ThreadStart()
InnerException:
...全文
288 19 打赏 收藏 转发到动态 举报
写回复
用AI写文章
19 条回复
切换为时间正序
请发表友善的回复…
发表回复
Fly_yuanrunfei 2009-03-20
  • 打赏
  • 举报
回复
在你循环外面套
if(ds!=null)
{
for (int i = 0; i < ds.Tables[0].Rows.Count; i++)
{
dt.Rows.Add();
dt.Rows[i]["aa"] = ds.Tables[0][GZJL_Table].Rows[i]["aa"];
dt.Rows[i]["bb"] = ds.Tables[0][GZJL_Table].Rows[i]["bb"];
dt.Rows[i]["cc"] = ds.Tables[0][GZJL_Table].Rows[i]["cc"];
dt.Rows[i]["dd"] = ds.Tables[0][GZJL_Table].Rows[i]["dd"];
}
for (int i = 0; i < ds.Tables[1].Rows.Count; i++)
{
dt.Rows.Add();
dt.Rows[i]["aaa"] = ds.Tables[1].Rows[i]["aaa"];
dt.Rows[i]["bbb"] = ds.Tables[1].Rows[i]["bbb"];
dt.Rows[i]["ccc"] = ds.Tables[1].Rows[i]["ccc"];
dt.Rows[i]["ddd"] = ds.Tables[1].Rows[i]["ddd"];
}

}
crystalsky21504119 2009-03-20
  • 打赏
  • 举报
回复
看一下DataSet里面一共有几张表
Sakeyi 2009-03-20
  • 打赏
  • 举报
回复
贴代码比贴这种错误信息来的快点吧.
fengxingko 2009-03-20
  • 打赏
  • 举报
回复
for (int i = 0; i < ds.Tables[0].Rows.Count; i++)
{
dt.Rows.Add();
dt.Rows[i]["aa"] = ds.Tables[0][GZJL_Table].Rows[i]["aa"];
dt.Rows[i]["bb"] = ds.Tables[0][GZJL_Table].Rows[i]["bb"];
dt.Rows[i]["cc"] = ds.Tables[0][GZJL_Table].Rows[i]["cc"];
dt.Rows[i]["dd"] = ds.Tables[0][GZJL_Table].Rows[i]["dd"];
}
for (int i = 0; i < ds.Tables[1].Rows.Count; i++)
{
dt.Rows.Add();
dt.Rows[i]["aaa"] = ds.Tables[1].Rows[i]["aaa"];
dt.Rows[i]["bbb"] = ds.Tables[1].Rows[i]["bbb"];
dt.Rows[i]["ccc"] = ds.Tables[1].Rows[i]["ccc"];
dt.Rows[i]["ddd"] = ds.Tables[1].Rows[i]["ddd"];
}

代码相关的
贫僧又回来了 2009-03-20
  • 打赏
  • 举报
回复
代码呢?贴这么多信息出来你还不如贴代码啊!
jie3614 2009-03-20
  • 打赏
  • 举报
回复
你用DataSet了吗? 如果DataSet里只有一个表,那么默认索引为0 即DataTable[0]
compleat 2009-03-20
  • 打赏
  • 举报
回复
看看你的DATASET是不是空啊
fengxingko 2009-03-20
  • 打赏
  • 举报
回复
怎么解决???
贫僧又回来了 2009-03-20
  • 打赏
  • 举报
回复
[Quote=引用 11 楼 fengxingko 的回复:]
//数据库连接字符串
protected static string strConn = "server=localhost;user id=MSPJ;password=mspj;database=MSPJ";
//取得数据集
private DataSet MSPJGetDataSet1()
{
DataSet ds = new DataSet();
SqlConnection conn = new SqlConnection(strConn);
conn.Open();
SqlCommand selCMD = new SqlCommand();

[/Quote]
看这段代码我真是无语
贫僧又回来了 2009-03-20
  • 打赏
  • 举报
回复
MSPJGetDataSet1()这个方法写成这样有什么意义吗?
这样你返回的dataset里当然只有一张表啊!
写方法就是要通用点!
tsp860901 2009-03-20
  • 打赏
  • 举报
回复
ding
crystalsky21504119 2009-03-20
  • 打赏
  • 举报
回复
你的两个方法里的DataSet都只有一张表,所以你在ds.Table【1】会出错的
telent 2009-03-20
  • 打赏
  • 举报
回复
你的数据集中应该只有一个表才对。
即它的下标最大是0,你想怎样的意图?
fengxingko 2009-03-20
  • 打赏
  • 举报
回复
jie3614 2009-03-20
  • 打赏
  • 举报
回复
你这儿"select * from [GRXX_Table] as a,[XXPX_Table] as b,[MSPJ_Table] as c where (a.[aaa]=b.[bb]) and (a.[aaa] = c.[ccc])"
怎么会查出来两个表呢

你打印出ds.Tables.Count 看看
zhensoft163 2009-03-20
  • 打赏
  • 举报
回复
如果在数据库连接正确的情况下那就要看你的DataTable是否为空,如果是DataSet的话可以直接判断DataSet是否为null,一般情况下是DataSet为空的原因!
fengxingko 2009-03-20
  • 打赏
  • 举报
回复
//数据库连接字符串
protected static string strConn = "server=localhost;user id=MSPJ;password=mspj;database=MSPJ";
//取得数据集
private DataSet MSPJGetDataSet1()
{
DataSet ds = new DataSet();
SqlConnection conn = new SqlConnection(strConn);
conn.Open();
SqlCommand selCMD = new SqlCommand();
selCMD.Connection = conn;
selCMD.CommandText = "select * from [GRXX_Table] as a,[XXPX_Table] as b,[MSPJ_Table] as c where (a.[aaa]=b.[bb]) and (a.[aaa] = c.[ccc])";
SqlDataAdapter da = new SqlDataAdapter();
da.SelectCommand = selCMD;
da.Fill(ds);
conn.Close();

return ds;
}
private DataSet MSPJGetDataSet2()
{
DataSet ds = new DataSet();
SqlConnection conn = new SqlConnection(strConn);
conn.Open();
SqlCommand selCMD = new SqlCommand();
selCMD.Connection = conn;
selCMD.CommandText = "select * from [GZJL_Table]";
SqlDataAdapter da = new SqlDataAdapter();
da.SelectCommand = selCMD;
da.Fill(ds);
conn.Close();

return ds;
}



}
}

最后的
fengxingko 2009-03-20
  • 打赏
  • 举报
回复
DATASET 有2个表的
fengxingko 2009-03-20
  • 打赏
  • 举报
回复
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using CrystalDecisions.Shared;
using CrystalDecisions.CrystalReports.Engine;
using CrystalDecisions.Windows.Forms;
using System.Data.SqlClient;

namespace 表
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}

private void Form1_Load(object sender, EventArgs e)
{
ReportShow();
}

//调用报表显示
private void ReportShow()
{
//声明报表
CrystalReport1 myRpt = new CrystalReport1();

//初始化报表内容
DataTable dt = new DataTable();

dt.Columns.Add("aa");
dt.Columns.Add("bb");
dt.Columns.Add("cc");
dt.Columns.Add("aaa");
dt.Columns.Add("bbb");
dt.Columns.Add("ccc");
//报表数据取得
DataSet ds = MSPJGetDataSet1();
for (int i = 0; i < ds.Tables[0].Rows.Count; i++)
{
dt.Rows.Add();

dt.Rows[i]["aa"] = ds.Tables[0].Rows[i][0];
dt.Rows[i]["bb"] = ds.Tables[0].Rows[i]["bb"];
dt.Rows[i]["cc"] = ds.Tables[0].Rows[i]["cc"];



}
for (int i = 0; i < ds.Tables[1].Rows.Count; i++)
{
dt.Rows.Add();
dt.Rows[i]["aaa"] = ds.Tables[1].Rows[i]["aaa"];
dt.Rows[i]["bbb"] = ds.Tables[1].Rows[i]["bbb"];
dt.Rows[i]["ccc"] = ds.Tables[1].Rows[i]["ccc"];

}

myRpt.SetDataSource(dt);
this.crystalReportViewer1.ReportSource = myRpt

全部的了~~~

111,126

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Creator Browser
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧