17 个解决方案
#1
OleDbCommandBuilder的SelectCommand是需要自己指定的
自动生成的是UpdateCommand~
你把你的部分绑定代码贴出来看看
自动生成的是UpdateCommand~
你把你的部分绑定代码贴出来看看
#2
在datagridview中不显示equip_id ,但要通过他的值来判断,具体如下:
//这是在datagridview中显示数据的代码:
str1 = @"select time AS 时间,kind AS 总类,cause AS 原因,underwrite AS 签名 from siren_history where equip_id =" + id + "";
OleDbDataAdapter da1 = new OleDbDataAdapter(str1, Olecon);
DataTable dt1 = new DataTable();
da1.Fill(dt1);
this.dataGridViewHisRecord.DataSource = dt1;
这是点击按钮更新数据的代码:
private DataTable DT1 = new DataTable();
private OleDbDataAdapter DA1 = new OleDbDataAdapter();
OleDbCommand dc1 = new OleDbCommand(str1, olecon);
DA1.SelectCommand = dc1;
DA1.Fill(DT1);
dataGridViewHisRecord.DataSource = DT1;
private void bt_dgv1_Click(object sender, EventArgs e)
{
try
{
OleDbCommandBuilder dcb = new OleDbCommandBuilder(DA1);
dcb.QuotePrefix = "[";
dcb.QuoteSuffix = "]";
DA1.Update(DT1);
MessageBox.Show("更新成功!");
}
catch (System.Exception ex)
{
MessageBox.Show(ex.ToString());
return;
}
}
//这是在datagridview中显示数据的代码:
str1 = @"select time AS 时间,kind AS 总类,cause AS 原因,underwrite AS 签名 from siren_history where equip_id =" + id + "";
OleDbDataAdapter da1 = new OleDbDataAdapter(str1, Olecon);
DataTable dt1 = new DataTable();
da1.Fill(dt1);
this.dataGridViewHisRecord.DataSource = dt1;
这是点击按钮更新数据的代码:
private DataTable DT1 = new DataTable();
private OleDbDataAdapter DA1 = new OleDbDataAdapter();
OleDbCommand dc1 = new OleDbCommand(str1, olecon);
DA1.SelectCommand = dc1;
DA1.Fill(DT1);
dataGridViewHisRecord.DataSource = DT1;
private void bt_dgv1_Click(object sender, EventArgs e)
{
try
{
OleDbCommandBuilder dcb = new OleDbCommandBuilder(DA1);
dcb.QuotePrefix = "[";
dcb.QuoteSuffix = "]";
DA1.Update(DT1);
MessageBox.Show("更新成功!");
}
catch (System.Exception ex)
{
MessageBox.Show(ex.ToString());
return;
}
}
#3
不明白!
#4
搞不清楚你什么意思
#5
假设我现在数据表中有3个字段:a,b,c,d。现在要在datagridview中只显示a,b,c的数据。我想通过点击按钮来更新和添加数据,使用的是:OleDbDataAdapter.Update(datatable)。功能是可以实现,但是添加的数据是a,b,c的值,而此时d字段的默认值为0,我希望是在添加完数据时,给d赋予一个固定值。我想问如何给d赋值,语句该怎么写?
#6
我要在datagridview中直接添加a,b,c的值进行保存,顺便来增加d的值,就是这个意思
#7
怎么每人回答了呢,帮帮我这个菜鸟吧,很召集啊
#8
如果equip_id是主键
SQL语句应该把equip_id读到dataTable里
你再把equip_id那一列在datagridview里visable = false;就行~
CommandBuilder自动生成更新语句的前提是必须要有主键
SQL语句应该把equip_id读到dataTable里
你再把equip_id那一列在datagridview里visable = false;就行~
CommandBuilder自动生成更新语句的前提是必须要有主键
#9
equip_id不是主键
如果把equip_id那一列在datagridview里visable = false,在datagridview中直接添加一行数据时equip_id这个字段的值就不能直接添加了,就默认为空了。可在datagridview中显示数据时的SQL语句还要用“where equip_id=aa ”,那么这条刚添加的数据就无法显示了,因为为空啊。能不能在用OleDbDataAdapter.Update(datatable)为其他字段添加值的时候把equip_id这个字段的值,定为一个值呢?
如果把equip_id那一列在datagridview里visable = false,在datagridview中直接添加一行数据时equip_id这个字段的值就不能直接添加了,就默认为空了。可在datagridview中显示数据时的SQL语句还要用“where equip_id=aa ”,那么这条刚添加的数据就无法显示了,因为为空啊。能不能在用OleDbDataAdapter.Update(datatable)为其他字段添加值的时候把equip_id这个字段的值,定为一个值呢?
#10
不是太清楚你的数据关系
可以考虑把id字段设为自增字段 这样向数据库添加记录时就不用管这个字段的值了 数据库会自动处理
可以考虑把id字段设为自增字段 这样向数据库添加记录时就不用管这个字段的值了 数据库会自动处理
#11
这么说吧:在窗体1中有两个按钮A,B,窗体B中有个datagridview,点击A或者B时弹出窗体B,B中的datagridview用来显示和添加设备A和B的属性,A和B属于同种设备,使用同一个属性表,用字段equip_id来区分。现在要通过datagridview来显示和修改除equip_id外的其他字段。在显示属性信息时是要用到equip_id来判断是A的还是B的,而datagridview中又没有这个字段,添加记录时没法给equip_id赋值,而CommandBuilder又是自动生成更新语句,矛盾就在这里。不知道你们明白了没有。
#12
LZ这种情况,equip_id看来一定要让用户去指定了~
#13
是啊我感觉也是这样,可领导说,用户还要输入这个很麻烦,还有其他方法吗,我该怎么实现呢,这一种方法,很方便,可就这?????????????????????????????????
#14
如果程序能判断的话你就用程序判断吧~
在equip_id那一列自动显示出来,这样就不用用户去输了~
领导是不是都很恐怖呀?呵呵~
在equip_id那一列自动显示出来,这样就不用用户去输了~
领导是不是都很恐怖呀?呵呵~
#15
能提示一下吗,本人是菜鸟啊,谢谢。
#16
就按我上面的程序加点东西,能不能实现在插入其他数据的时候对equip_id这个字段直接赋值。
#17
谢谢大家,我已经解决了,结贴。
#1
OleDbCommandBuilder的SelectCommand是需要自己指定的
自动生成的是UpdateCommand~
你把你的部分绑定代码贴出来看看
自动生成的是UpdateCommand~
你把你的部分绑定代码贴出来看看
#2
在datagridview中不显示equip_id ,但要通过他的值来判断,具体如下:
//这是在datagridview中显示数据的代码:
str1 = @"select time AS 时间,kind AS 总类,cause AS 原因,underwrite AS 签名 from siren_history where equip_id =" + id + "";
OleDbDataAdapter da1 = new OleDbDataAdapter(str1, Olecon);
DataTable dt1 = new DataTable();
da1.Fill(dt1);
this.dataGridViewHisRecord.DataSource = dt1;
这是点击按钮更新数据的代码:
private DataTable DT1 = new DataTable();
private OleDbDataAdapter DA1 = new OleDbDataAdapter();
OleDbCommand dc1 = new OleDbCommand(str1, olecon);
DA1.SelectCommand = dc1;
DA1.Fill(DT1);
dataGridViewHisRecord.DataSource = DT1;
private void bt_dgv1_Click(object sender, EventArgs e)
{
try
{
OleDbCommandBuilder dcb = new OleDbCommandBuilder(DA1);
dcb.QuotePrefix = "[";
dcb.QuoteSuffix = "]";
DA1.Update(DT1);
MessageBox.Show("更新成功!");
}
catch (System.Exception ex)
{
MessageBox.Show(ex.ToString());
return;
}
}
//这是在datagridview中显示数据的代码:
str1 = @"select time AS 时间,kind AS 总类,cause AS 原因,underwrite AS 签名 from siren_history where equip_id =" + id + "";
OleDbDataAdapter da1 = new OleDbDataAdapter(str1, Olecon);
DataTable dt1 = new DataTable();
da1.Fill(dt1);
this.dataGridViewHisRecord.DataSource = dt1;
这是点击按钮更新数据的代码:
private DataTable DT1 = new DataTable();
private OleDbDataAdapter DA1 = new OleDbDataAdapter();
OleDbCommand dc1 = new OleDbCommand(str1, olecon);
DA1.SelectCommand = dc1;
DA1.Fill(DT1);
dataGridViewHisRecord.DataSource = DT1;
private void bt_dgv1_Click(object sender, EventArgs e)
{
try
{
OleDbCommandBuilder dcb = new OleDbCommandBuilder(DA1);
dcb.QuotePrefix = "[";
dcb.QuoteSuffix = "]";
DA1.Update(DT1);
MessageBox.Show("更新成功!");
}
catch (System.Exception ex)
{
MessageBox.Show(ex.ToString());
return;
}
}
#3
不明白!
#4
搞不清楚你什么意思
#5
假设我现在数据表中有3个字段:a,b,c,d。现在要在datagridview中只显示a,b,c的数据。我想通过点击按钮来更新和添加数据,使用的是:OleDbDataAdapter.Update(datatable)。功能是可以实现,但是添加的数据是a,b,c的值,而此时d字段的默认值为0,我希望是在添加完数据时,给d赋予一个固定值。我想问如何给d赋值,语句该怎么写?
#6
我要在datagridview中直接添加a,b,c的值进行保存,顺便来增加d的值,就是这个意思
#7
怎么每人回答了呢,帮帮我这个菜鸟吧,很召集啊
#8
如果equip_id是主键
SQL语句应该把equip_id读到dataTable里
你再把equip_id那一列在datagridview里visable = false;就行~
CommandBuilder自动生成更新语句的前提是必须要有主键
SQL语句应该把equip_id读到dataTable里
你再把equip_id那一列在datagridview里visable = false;就行~
CommandBuilder自动生成更新语句的前提是必须要有主键
#9
equip_id不是主键
如果把equip_id那一列在datagridview里visable = false,在datagridview中直接添加一行数据时equip_id这个字段的值就不能直接添加了,就默认为空了。可在datagridview中显示数据时的SQL语句还要用“where equip_id=aa ”,那么这条刚添加的数据就无法显示了,因为为空啊。能不能在用OleDbDataAdapter.Update(datatable)为其他字段添加值的时候把equip_id这个字段的值,定为一个值呢?
如果把equip_id那一列在datagridview里visable = false,在datagridview中直接添加一行数据时equip_id这个字段的值就不能直接添加了,就默认为空了。可在datagridview中显示数据时的SQL语句还要用“where equip_id=aa ”,那么这条刚添加的数据就无法显示了,因为为空啊。能不能在用OleDbDataAdapter.Update(datatable)为其他字段添加值的时候把equip_id这个字段的值,定为一个值呢?
#10
不是太清楚你的数据关系
可以考虑把id字段设为自增字段 这样向数据库添加记录时就不用管这个字段的值了 数据库会自动处理
可以考虑把id字段设为自增字段 这样向数据库添加记录时就不用管这个字段的值了 数据库会自动处理
#11
这么说吧:在窗体1中有两个按钮A,B,窗体B中有个datagridview,点击A或者B时弹出窗体B,B中的datagridview用来显示和添加设备A和B的属性,A和B属于同种设备,使用同一个属性表,用字段equip_id来区分。现在要通过datagridview来显示和修改除equip_id外的其他字段。在显示属性信息时是要用到equip_id来判断是A的还是B的,而datagridview中又没有这个字段,添加记录时没法给equip_id赋值,而CommandBuilder又是自动生成更新语句,矛盾就在这里。不知道你们明白了没有。
#12
LZ这种情况,equip_id看来一定要让用户去指定了~
#13
是啊我感觉也是这样,可领导说,用户还要输入这个很麻烦,还有其他方法吗,我该怎么实现呢,这一种方法,很方便,可就这?????????????????????????????????
#14
如果程序能判断的话你就用程序判断吧~
在equip_id那一列自动显示出来,这样就不用用户去输了~
领导是不是都很恐怖呀?呵呵~
在equip_id那一列自动显示出来,这样就不用用户去输了~
领导是不是都很恐怖呀?呵呵~
#15
能提示一下吗,本人是菜鸟啊,谢谢。
#16
就按我上面的程序加点东西,能不能实现在插入其他数据的时候对equip_id这个字段直接赋值。
#17
谢谢大家,我已经解决了,结贴。