直接点中数据库中的一条信息后向另外一张表中插入信息
如上图所示,我想实现的功能是:
当我点中上面的“药品详情”表中的某一药品时,再点击右边“增加用药”,便可将刚刚选中的信息插入到下面的“病人用药”表中,这该如何实现?
“药品详情”表和“病人用药”表都在同一数据库中。
最好有C#代码。
[最优解释]
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.Data.SqlClient;
namespace My
{
public partial class Form4 : Form
{
public Form4()
{
InitializeComponent();
}
private void Form4_Load(object sender, EventArgs e)
{
this.dgvMedicine.AutoGenerateColumns = false;
string sql = "SELECT * FROM Medicine";
using (SqlConnection con = DBHelper.Connection)
{
//窗体加载时 加载病人用药的药品信息
this.dgvMedicine.DataSource = DBHelper.GetDataTable(sql, null);
}
}
private void btnAdd_Click(object sender, EventArgs e)
{
//判断是否有选中行 如果没有则提示
if (this.dgvMedicine.SelectedRows == null)
{
MessageBox.Show("请选择需要的药品");
}
else
{
//获取前一个taPage上的卡号文本框
TextBox txtCard = tabPage1.Controls["txtCardNo"] as TextBox;
//获取前一个tabPage上的姓名文本框
TextBox txtName = tabPage1.Controls["txtName"] as TextBox;
//--------下面是对DataGridview的操作
//获取选中行的第一列的值(这里对应的是药品名称 下面的就不重复写了)
//也就是你要插入到另一张的表的一些你需要的值
string mName = this.dgvMedicine.SelectedRows[0].Cells[1].Value.ToString();
//获取药品规格的值
//再说一点 我不知道你的用量是从哪里来的 所以没在表里面设计
string mStandard = this.dgvMedicine.SelectedRows[0].Cells[2].Value.ToString();
//构建参数化sql语句
string sql = "INSERT INTO PatitentInfo VALUES(@card , @name , @mname , @mstandard)";
//实例化参数列表
SqlParameter[] pars = {
new SqlParameter("@card" , txtCard.Text),
new SqlParameter("@name" , txtName.Text),
new SqlParameter("@mname" , mName),
new SqlParameter("@mstandard" , mStandard)
};
//执行插入表的sql语句
if (DBHelper.ExecuteCommand(sql, pars) > 0)
{
//如果插入成功 则获取这张表中的对应病人的信息
string sqlStr = "SELECT * FROM PatitentInfo";
//清空数据绑定 防止数据重复加载
this.dgvPatient.DataSource = null;
this.dgvPatient.AutoGenerateColumns = false;
this.dgvPatient.DataSource = DBHelper.GetDataTable(sqlStr, null);
}
else
{
//提示插入失败
MessageBox.Show("新增信息出错!");
}
}
}
}
}