代码为:
private void Page_Load(object sender, System.EventArgs e)
{
// 在此处放置用户代码以初始化页面
string temp1,temp2,temp3;
string connstr = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + @"C:\Inetpub\wwwroot\wzgy\data\gydb.mdb" + ";"; OleDbConnection myCn = new OleDbConnection (connstr);

string sql = "select goods.id as 物资编码,goods.name as 物资名称,goods.category_id as 类别,goods.quality as 型号,goods.units as 单位,PORT_main.PORT_DATE as 日期,PORT_main.ID1 as 原始凭证,PORT_main.REMARK as 摘要,PORT_ITEMS.AMOUNT as 数量,PORT_ITEMS.UNITPRICE as 单价,PORT_ITEMS.jiner as 金额,PORT_main.IM_EX from goods,PORT_ITEMS,PORT_main where PORT_ITEMS.GOODS_ID=goods.id and PORT_ITEMS.PORT_ID=PORT_main.ID";
OleDbCommand myComm = new OleDbCommand (sql,myCn ); myCn.Open ();
OleDbDataReader reader = myComm.ExecuteReader (); this.Repeater1.DataSource=reader;
this.Repeater1.DataBind(); while (reader.Read ())
{
???
}
myCn.Close ();
myCn.Dispose ();
myComm.Dispose ();
reader.Close ();
}

解决方案 »

  1.   

    你的代码太乱了 看不清 不过给你提供个例子
    SELECT a.id, b.数值 as 支出, c.数值 as 收入, a.ie_mx
    FROM (表1 AS a LEFT JOIN (select a,数值 from 表1 where ie_mx='i' ) b ON a.a = b.a) LEFT JOIN (select a,数值 from 表1 where ie_mx='s') c ON a.a = c.a
      

  2.   

    可以使用nz函数把空值转换为0
    SELECT a.id, nz(b.数值,0) as 支出, nz(c.数值,0) as 收入, a.ie_mx
    FROM (表1 AS a LEFT JOIN (select a,数值 from 表1 where ie_mx='i' ) b ON a.a = b.a) LEFT JOIN (select a,数值 from 表1 where ie_mx='s') c ON a.a = c.a
      

  3.   

    SELECT a.id, nz(b.数值,0) as 支出, nz(c.数值,0) as 收入, a.ie_mx
    FROM (表1 AS a LEFT JOIN (select id,数值 from 表1 where ie_mx='i' ) b ON a.id = b.id) LEFT JOIN (select id,数值 from 表1 where ie_mx='s') c ON a.id = c.id
    我比较马虎 呵呵 上面这条语句才没问题 修改了字段名
    对同一张表给多个不同的别名,可以看作多张表(一张表多个副本),然后对多张表进行操作。子查询返回的结果集可以看作一张表 如上面的
    (select id,数值 from 表1 where ie_mx='i' ) b 就是把查出来的内容作为b表
      

  4.   

    就是如何根据数据库里的字段内容来在Repeater里面填充数据。
      

  5.   

    OleDbDataReader reader = myComm.ExecuteReader ();
    this.Repeater1.DataSource=reader;
    this.Repeater1.DataBind();
    while (reader.Read ())
    {
    ???
    }
    Repeater1.DataBind();已经是被绑定了reader
    还能使用reader.Read()吗??
    此时reader已经Read()到最后一条记录了。
      

  6.   

    不会 的
    你可以在查询语句最后加order by a.PORT_DATE 降序
    order by a.PORT_DATE desc 升序