求帮助 语法错误找不出来...
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 原先就试了 不行. --------------------编程问答--------------------
其他表中有相同的字段名的时候,需要指明是哪个表中的字段的. --------------------编程问答-------------------- 没加单引号吧:
SqlDataAdapter sdab = new SqlDataAdapter(@"select * from R_生产单主表,R_生产单订单子表,R_客户信息表 where R_生产单主表.生产单号=R_生产单订单子表.生产单号 and R_生产单主表.客户编号=R_客户信息表.客户编号 and 生产单号='"+Request["生产单号"]+"'",strcon); --------------------编程问答-------------------- 这个真试过了...有没有其他说法... --------------------编程问答-------------------- 额....弱弱的问一下,这样的写法跟用INNER JOIN的写法效率哪个好点. --------------------编程问答--------------------
能用断点断出个SQL语句出来么. --------------------编程问答-------------------- SqlDataAdapter sdab = new SqlDataAdapter(@"select * from R_生产单主表,R_生产单订单子表,R_客户信息表 where R_生产单主表.生产单号=R_生产单订单子表.生产单号 and R_生产单主表.客户编号=R_客户信息表.客户编号 and 生产单号="+Request["生产单号"],strcon); // 提示“=”附近有错误 ...
你没指定 生产单号是属于生产单主表还是生产单订单子表
生产单号 不明确 --------------------编程问答-------------------- 你在数据库里面执行去
执行通过了 再拿回来 --------------------编程问答--------------------
在效率上,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会有多个吗?
显然问题出现在这里 --------------------编程问答--------------------
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