当前位置:编程学习 > C#/ASP.NET >>

求帮助 语法错误找不出来...

    protected void GridView1_RowEditing(object sender, GridViewEditEventArgs e)
    {
        string id = GridView1.DataKeys[e.NewEditIndex].Value.ToString();//获得主键
        Response.Write("<script>window.open('物料详细.aspx? 生产单号=" + id + "','','width=450,height=450')</script>");
        Response.Write("<script>location='javascript:history.go(-1)'</script>");
    }
 protected void Page_Load(object sender, EventArgs e)
    {...
     SqlDataAdapter sdab = new SqlDataAdapter(@"select * from  R_生产单主表,R_生产单订单子表,R_客户信息表     where R_生产单主表.生产单号=R_生产单订单子表.生产单号 and R_生产单主表.客户编号=R_客户信息表.客户编号 and 生产单号="+Request["生产单号"],strcon);   // 提示“=”附近有错误     ...
    }

    public void bind()
    {
        string strsql ;
        strsql = @"select R_生产单主表.生产单号,单据日期,交货日期,客户名称,产品名称,订单数量,领料状态 from
                     R_生产单主表,R_生产单订单子表,R_客户信息表 where R_生产单主表.生产单号=R_生产单订单子表.生产单号 
                     and R_生产单主表.客户编号=R_客户信息表.客户编号 " + Session["sql"];
            SqlConnection strcon = new SqlConnection(System.Configuration.ConfigurationManager.AppSettings["strcon"]);
        strcon.Open();
        SqlDataAdapter sda = new SqlDataAdapter(strsql, strcon);
        DataSet ds = new DataSet();
        sda.Fill(ds, "Search");
        GridView1.DataSource = ds.Tables["Search"];
        GridView1.DataKeyNames = new string[] { "生产单号" };//绑主键
        GridView1.DataBind();
    }
         --------------------编程问答--------------------


SqlDataAdapter sdab = new SqlDataAdapter(@"select * from R_生产单主表,R_生产单订单子表,R_客户信息表 where R_生产单主表.生产单号=R_生产单订单子表.生产单号 and R_生产单主表.客户编号=R_客户信息表.客户编号 and R_生产单主表.生产单号="+Request["生产单号"],strcon); // 提示“=”附近有错误 ...

R_生产单主表.生产单号 指明引用表

--------------------编程问答--------------------  2L 原先就试了  不行. --------------------编程问答--------------------
引用 1 楼 yan267 的回复:
C# code


SqlDataAdapter sdab = new SqlDataAdapter(@"select * from R_生产单主表,R_生产单订单子表,R_客户信息表 where R_生产单主表.生产单号=R_生产单订单子表.生产单号 and R_生产单主表.客户编号=R_客户信息表.客户编号 and R_生产单主表.生产单号="+Request["生产单号"],strco……

其他表中有相同的字段名的时候,需要指明是哪个表中的字段的. --------------------编程问答-------------------- 没加单引号吧:
SqlDataAdapter sdab = new SqlDataAdapter(@"select * from R_生产单主表,R_生产单订单子表,R_客户信息表 where R_生产单主表.生产单号=R_生产单订单子表.生产单号 and R_生产单主表.客户编号=R_客户信息表.客户编号 and 生产单号='"+Request["生产单号"]+"'",strcon); --------------------编程问答-------------------- 这个真试过了...有没有其他说法... --------------------编程问答-------------------- 额....弱弱的问一下,这样的写法跟用INNER JOIN的写法效率哪个好点. --------------------编程问答--------------------
引用 4 楼 ojlovecd 的回复:
没加单引号吧:
SqlDataAdapter sdab = new SqlDataAdapter(@"select * from R_生产单主表,R_生产单订单子表,R_客户信息表 where R_生产单主表.生产单号=R_生产单订单子表.生产单号 and R_生产单主表.客户编号=R_客户信息表.客户编号 and R_生产单主表.生产单号='"+Request["生产单号"]+"'",strcon);

能用断点断出个SQL语句出来么. --------------------编程问答--------------------  SqlDataAdapter sdab = new SqlDataAdapter(@"select * from R_生产单主表,R_生产单订单子表,R_客户信息表 where R_生产单主表.生产单号=R_生产单订单子表.生产单号 and R_生产单主表.客户编号=R_客户信息表.客户编号 and 生产单号="+Request["生产单号"],strcon); // 提示“=”附近有错误 ...

你没指定 生产单号是属于生产单主表还是生产单订单子表 
 生产单号 不明确 --------------------编程问答-------------------- 你在数据库里面执行去 

执行通过了  再拿回来 --------------------编程问答--------------------
引用 6 楼 windsky87 的回复:
额....弱弱的问一下,这样的写法跟用INNER JOIN的写法效率哪个好点.


在效率上,Where可能具有和Inner join一样的效率。但基本可以肯定的(通过SQLServer帮助和其它资料)是Join的效率不比Where差。

使用Join可以帮助检查语句中的无效或者误写的关联条件 
--------------------编程问答-------------------- 应该是最后那个生成单号=request那个地方要加‘ ’ --------------------编程问答-------------------- 生成单号=request那个地方加了‘ ’不报错了...但是下面代码
      1   sdab.Fill(ds, "领料表");
     2  DataRowView rowview = ds.Tables["领料表"].DefaultView[0];
     3   this.lable_ShengChanDanHao.Text = rowview["生产单号"].ToString();
     4   this.lable_KeHuMingCheng.Text = rowview["客户名称"].ToString();
     5   this.lable_ChengPinMingCheng.Text = rowview["产品名称"].ToString();

第2行 异常System.IndexOutOfRangeException: 索引 0 不是为负数,就是大于行数。
如果把上面那个生产单号=request[]这个条件屏蔽了就不会报着个异常
--------------------编程问答-------------------- Request.QueryString["生产单号"] --------------------编程问答-------------------- 把你的sql语句拿到数据执行,生产单号随便设置个值,一试就知道了,如果是lz所说的提示,应该是生产单号的问题 --------------------编程问答--------------------
DataRowView rowview = ds.Tables["领料表"].DefaultView[0];

DataTable的DefaultView会有多个吗?
显然问题出现在这里 --------------------编程问答--------------------
引用 12 楼 wang8685777 的回复:
生成单号=request那个地方加了‘ ’不报错了...但是下面代码
  1 sdab.Fill(ds, "领料表");
  2 DataRowView rowview = ds.Tables["领料表"].DefaultView[0];
  3 this.lable_ShengChanDanHao.Text = rowview["生产单号"].ToString();
  4 this.l……


ds.Tables["领料表"].DefaultView[0]

查询不到数据,就赋值当然会出错。


if(ds.Tables["领料表"].Rows.Count>0)
{
   DataRowView rowview = ds.Tables["领料表"].DefaultView[0];
   this.lable_ShengChanDanHao.Text = rowview["生产单号"].ToString();
   this.lable_KeHuMingCheng.Text = rowview["客户名称"].ToString();
   this.lable_ChengPinMingCheng.Text = rowview["产品名称"].ToString();


}
补充:.NET技术 ,  ASP.NET
CopyRight © 2022 站长资源库 编程知识问答 zzzyk.com All Rights Reserved
部分文章来自网络,