日期:2014-05-18  浏览次数:20545 次

应用一个单击事件将数据插入A表后马上取出它ID号再放入B表如何实现?
我的思路是:表中ID自增.单击按钮将员工信息插入员工表后,马上取出刚插入信息的ID号作为员工初始用户名.初始密码另设.再将它们入储存用户名了密码表中.,插入成功后就将自动生成的用户名和密码显示在弹出的窗口中.两表通过ID相联
我用了几种方法都能实现插入员工表但不能插入另一表.
用下面的方法似乎可以了.但出现了一点问题.
代码如下:
......
 if (user.insertEMP(ep2))//如果插入员工信息为真. 并不能直接取ID号.于是用到 max(companyid)+1  
  {
  using (SqlConnection con = db.connection())
  {  
  //下面代码本是在实体方法中完成的.为了直观换成了这样:
  SqlCommand cmd = new SqlCommand();
  con.Open();
  cmd.Connection = con;
  cmd.CommandText = "select max(companyid)+1 from employeeinfo";
  SqlDataReader idread = cmd.ExecuteReader();
  Session["CompanyID"] =idread;//
  idread.Close();
  con.Close();
  SqlCommand cmd1 = new SqlCommand("insert_employenter_1", con);
  cmd1.CommandType = CommandType.StoredProcedure;

  cmd1.Parameters.Add(new SqlParameter("@CompanyID_1", SqlDbType.Int));
  cmd1.Parameters["@CompanyID_1"].Value = int.Parse(Session["CompanyID"].tostring());//这里出错.显示为: 输入字符串的格式不正确。

  cmd1.Parameters.Add(new SqlParameter("@username_2", SqlDbType.VarChar));
  cmd1.Parameters["@username_2"].Value = Session["CompanyID"].ToString();

  cmd1.Parameters.Add(new SqlParameter("@password_3", SqlDbType.VarChar));
  cmd1.Parameters["@password_3"].Value = "8888";
  try
  {
  con.Open();
  cmd1.ExecuteNonQuery();
  Response.Redirect("empNandP.aspx?comanyid='" + Session["companyid"].ToString() + "'"); //empNandP.aspx此窗口显示初始名和密码.
  con.Close();
  }


另外一个小问题是..用了一个图片按钮ImageButton1.
protected void ImageButton1_Click(object sender, ImageClickEventArgs e)
  {
  this.ImageButton1.Attributes.Add("onclick", "window.open('jibiesezi.aspx','','width=300,height=300')");
  }
奇怪的是.我单击(双击)第一次却没什么反应.非要单击第二次才会弹出这个窗口..代码也似乎没有什么错误.不知怎么的.

因刚接触.NET不久.不懂的很多.望朋友们不吝赐教!!

------解决方案--------------------
因为你第一次单击是给这个按钮添加 onclick事件 再点一次它才执行window.open

所以你的 this.ImageButton1.Attributes.Add("onclick", "window.open( 'jibiesezi.aspx ', ' ', 'width=300,height=300 ')")这句应放在page_load里(或者至少在你要它执行之前)
------解决方案--------------------
好的 create proc AddEmployee
(
参数
)

declare @employeeid int
insert into A

select @employeeid=@@identity

insert into b 

就行了撒 把该传的参数都传进来