文件内容如下
<%@ page Language="c#" Debug="true"%>
<%@ OutputCache Duration="1" VaryByParam="None"%>
<%@ import namespace="System"%>
<%@ import namespace="System.Data"%>
<%@ import namespace="System.Data.OleDb"%><script runat="server">public void Page_Load(Object o,EventArgs s)
{string ConnStr="Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + Server.MapPath("./data/")+"CAU#.mdb" ;
OleDbConnection Conn= new  OleDbConnection(ConnStr);
OleDbDataAdapter adapter=new OleDbDataAdapter("select * from [Article] ; select * from [ArticleClass]",Conn);
DataSet MyDataSet=new DataSet();
adapter.Fill(MyDataSet);
MyDataSet.Tables[0].TableName="Article";
MyDataSet.Tables[1].TableName="AritcleClass";
MyDataSet.Relations.Add("OrderRelation",MyDataSet.Tables["Article"].Columns["ClassID"],MyDataSet.Tables["AritcleClass"].Columns["ClassID"]);
ParentDataList.DataSource=MyDataSet.Tables[0];
ParentDataList.DataBind();
}
</script>
<html>
<body>
<asp:datalist id="ParentDataList" runat="server">
<itemTemplate>
<%#DataBinder.Eval(Container.DataItem,"ClassName")%>
<asp:datalist id="MyDataList" runat="server">
<itemTemplate>
<%#DataBinder.Eval(Container.DataItem,"Title").ToString().Substring(0,5)%>
</itemTemplate>
</asp:datalist>
</itemTemplate>
</asp:datalist></body>
</html>
错误信息如下:“/”应用程序中的服务器错误。
--------------------------------------------------------------------------------在 SQL 语句结尾之后找到字符。 
说明: 执行当前 Web 请求期间,出现未处理的异常。请检查堆栈跟踪信息,以了解有关该错误以及代码中导致错误的出处的详细信息。 异常详细信息: System.Data.OleDb.OleDbException: 在 SQL 语句结尾之后找到字符。源错误: 
行 14: OleDbDataAdapter adapter=new OleDbDataAdapter("select * from [Article] ; select * from [ArticleClass]",Conn);
行 15: DataSet MyDataSet=new DataSet();
行 16: adapter.Fill(MyDataSet);
行 17: MyDataSet.Tables[0].TableName="Article";
行 18: MyDataSet.Tables[1].TableName="AritcleClass";
 源文件: F:\aspxnet\CAU\syan2.aspX    行: 16 

解决方案 »

  1.   

    要建两个adapter来Fill,SQL语句不能象这样写在一起,
    你看一下这段代码吧:string strSqlZong = "SELECT * FROM Zongzhang";
    string strSqlZhi = "SELECT * FROM Zhichu";

    OleDbDataAdapter daZong = new OleDbDataAdapter( strSqlZong, strConn );
    OleDbDataAdapter daZhi = new OleDbDataAdapter( strSqlZhi, strConn );
    DataSet ds = new DataSet( );
    ds.Clear( );

    daZong.Fill( ds, "Zongzhang" );
    daZhi.Fill( ds, "Zhichu" );
      

  2.   

    http://dotnet.aspx.cc/ShowDetail.aspx?id=149E5DD7-3B32-461e-ACC6-51D1652E6746
    http://www.aspnet101.com/aspnet101/aspnet/codesample.aspx?code=nestedc
    http://community.csdn.net/Expert/topic/3077/3077509.xml?temp=.8546869
    一定要用2个adapter来FILL吗?那为什么上面3个例子都是用1个ADAPTER来FILL的。
      

  3.   

    TO: wangrenda(浪人)
    用1个adapter填充的话,用1个SQL语句?
      

  4.   

    可以用一个adapter来填充,方便一点,你可以查杳MSDN.
      

  5.   

    我看你sql写的没什么问题,就是中间用分号隔开就行了,
    要不你输出一下sql看看吧
      

  6.   

    我遇过,后改成一个SQL语句就可以了.
      

  7.   


    这是我的代码,你可以看看.
    conn=new OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;Data Source="+Server.MapPath("db1.mdb"));
    str_Sql="select * from sort_name order by id asc";
            string str_Sql1="select  * from ticket_knowledge a where id in(select top 5 id from ticket_knowledge b where a.sort_id=b.sort_id)  order by id desc"; 
    conn.Open();
    myAdapter = new OleDbDataAdapter(str_Sql,conn);
    myAdapter1 = new OleDbDataAdapter(str_Sql1,conn);
            ds = new DataSet();
            myAdapter.Fill(ds,"sort_name");
    myAdapter1.Fill(ds,"ticket_knowledge");
    //ds.Tables[0].TableName = "sort_name";
    //ds.Tables[1].TableName = "ticket_knowledge";
    DataColumn Parent = ds.Tables["sort_name"].Columns["id"];
    DataColumn Child  = ds.Tables["ticket_knowledge"].Columns["sort_id"];
    DataRelation OrderRelation   = new DataRelation("OrderRelation", Parent, Child, false);
    ds.Relations.Add(OrderRelation);
    MyDataList.DataSource = ds.Tables["sort_name"].DefaultView;
    DataBind();
      

  8.   

    问问:DataRelation里的两个字段是不是都必须是关键字
      

  9.   

    string ConnStr="Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + Server.MapPath("./data/")+"CAU#.mdb" ;
    OleDbConnection Conn= new  OleDbConnection(ConnStr);
    OleDbDataAdapter adapter1=new OleDbDataAdapter("select * from [ArticleClass]",Conn);
    OleDbDataAdapter adapter2=new OleDbDataAdapter("select * from [Article]",Conn);
    DataSet MyDataSet=new DataSet();
    adapter1.Fill(MyDataSet,"ArticleClass");
    adapter2.Fill(MyDataSet,"Article");
    //MyDataSet.Tables[0].TableName="ArticleClass";
    //MyDataSet.Tables[1].TableName="Aritcle";
    MyDataSet.Relations.Add("OrderRelation",MyDataSet.Tables["AritcleClass"].Columns["ClassID"],MyDataSet.Tables["Article"].Columns["ClassID"]);
    ParentDataList.DataSource=MyDataSet.Tables[0];
    ParentDataList.DataBind();改为上面的代码后出现如下错误:
    “/”应用程序中的服务器错误。
    --------------------------------------------------------------------------------未将对象引用设置到对象的实例。 
    说明: 执行当前 Web 请求期间,出现未处理的异常。请检查堆栈跟踪信息,以了解有关该错误以及代码中导致错误的出处的详细信息。 异常详细信息: System.NullReferenceException: 未将对象引用设置到对象的实例。源错误: 
    行 19: //MyDataSet.Tables[0].TableName="ArticleClass";
    行 20: //MyDataSet.Tables[1].TableName="Aritcle";
    行 21: MyDataSet.Relations.Add("OrderRelation",MyDataSet.Tables["AritcleClass"].Columns["ClassID"],MyDataSet.Tables["Article"].Columns["ClassID"]);
    行 22: ParentDataList.DataSource=MyDataSet.Tables[0];
    行 23: ParentDataList.DataBind();
     源文件: F:\aspxnet\CAU\syan2.aspx    行: 21 
      

  10.   

    声明一下在用,不必是主键
    例如
    dc1 = ds.Tables[0].Columns["MasterID"];
    dc2 = ds.Tables[1].Columns["MasterID"];
    DataRelation dr = new DataRelation("Title_Author",dc1, dc2, false);
    ds.Relations.Add(dr); DataGrid1.DataSource = ds.Tables[0].DefaultView;
    DataGrid1.DataBind();
      

  11.   

    OK了,但是新问题来了
    就是子datalist里的数据没有显示
      

  12.   

    数据源是没问题的。是不是我第2个datalist放的位置不对
    <asp:datalist id="ParentDataList" runat="server">
    <itemTemplate>
    C:<%#DataBinder.Eval(Container.DataItem,"ClassID")%> <%#DataBinder.Eval(Container.DataItem,"ClassName")%><br><br>
    <asp:datalist id="MyDataList" runat="server">
    <itemTemplate>
    T:<%#DataBinder.Eval(Container.DataItem,"Title").ToString().Substring(0,5)%><br>
    </itemTemplate>
    </asp:datalist>
    </itemTemplate>
    </asp:datalist>
      

  13.   

    你那个list没数据??子表?你好像也没设置子表的datasource
      

  14.   

    请问 子表的数据源这么设置:
    DataSource=?
      

  15.   

    ACCESS不支持1次操作多条SQL语句
      

  16.   

    <%@ Import namespace="System.Data"%>DataSource='<%# ((System.Data.DataRowView)Container.DataItem).CreateChildView("******") %>'
      

  17.   

    问题解决,完整代码如下:
    <%@ page Language="c#" Debug="true"%>
    <%@ OutputCache Duration="1" VaryByParam="None"%>
    <%@ import namespace="System"%>
    <%@ import namespace="System.Data"%>
    <%@ import namespace="System.Data.OleDb"%><script runat="server">public void Page_Load(Object o,EventArgs s)
    {string ConnStr="Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + Server.MapPath("./data/")+"CAU#.mdb" ;
    OleDbConnection Conn= new  OleDbConnection(ConnStr);
    OleDbDataAdapter adapter1=new OleDbDataAdapter("select * from [ArticleClass]",Conn);
    OleDbDataAdapter adapter2=new OleDbDataAdapter("select * from [Article]",Conn);
    DataSet MyDataSet=new DataSet();
    adapter1.Fill(MyDataSet,"ArticleClass");
    adapter2.Fill(MyDataSet,"Article");
    //MyDataSet.Tables[0].TableName="ArticleClass";
    //MyDataSet.Tables[1].TableName="Aritcle";
    //MyDataSet.Relations.Add("OrderRelation",MyDataSet.Tables["AritcleClass"].Columns["ClassID"],MyDataSet.Tables["Article"].Columns["ClassID"]);
    DataColumn dc1 = MyDataSet.Tables[0].Columns["ClassID"];
    DataColumn dc2 = MyDataSet.Tables[1].Columns["ClassID"];
    DataRelation dr = new DataRelation("Title_Author",dc1, dc2, false);
    MyDataSet.Relations.Add(dr);
    ParentDataList.DataSource=MyDataSet.Tables[0];
    ParentDataList.DataBind();
    }
    </script>
    <html>
    <body>
    <asp:datalist id="ParentDataList" runat="server">
    <itemTemplate>
    C:<%#DataBinder.Eval(Container.DataItem,"ClassID")%> <%#DataBinder.Eval(Container.DataItem,"ClassName")%><br><br>
    <asp:datalist id="MyDataList" runat="server" DataSource='<%# DataBinder.Eval(Container, "DataItem.Title_Author") %>'>
    <itemTemplate>
    T:<%#DataBinder.Eval(Container.DataItem,"Title").ToString().Substring(0,5)%><br>
    </itemTemplate>
    </asp:datalist>
    </itemTemplate>
    </asp:datalist></body>
    </html>