数据批量录入的问题(100分全给)急!

LinuxR 2005-05-10 06:38:50
资产编号是自动生成的流水号
这个是窗体的加载信息//窗体加载
private void Y_ZCDJ_ZJ_Load(object sender, System.EventArgs e)
{
this.Z_Rework_SM();
this.Z_FD_MCC_ALL();
this.Clear_Control();
if(this._WorkBS == "修改")
{
this.FD_UPDATE_DATE();
}
if(this._WorkBS == "查看")
{
this.FD_UPDATE_DATE();
this.Enabled_Control();
this.btn_OK.Enabled = false;
}
if(this._WorkBS == "添加")
{
string str_year;
DateTime dt = System.DateTime.Now;
str_year = dt.Year.ToString().Remove(0,2);

this.txt_zcbh.Text = "YQ" + str_year + this.cls_other.Str_PX_YQ(this._WorkDS,"主机数据表","资产编号");
}

}
}
Str_PX_YQ是自动生成流水号的方法
这个是批量添加:但总提示主键重复,我跟踪看了一下,流水号居然没变,实在不知道问题在哪!,如果一个一个添加时 流水号也就是资产编号可自动生成
private void btn_OK_Click(object sender, System.EventArgs e)
{
if(this._WorkBS == "添加")

for(temp=1;temp<=System.Convert.ToInt32(this.txt_ts.Text.Trim());temp++)
{

{
string str_year;
DateTime dt = System.DateTime.Now;
str_year = dt.Year.ToString().Remove(0,2);
this.txt_zcbh.Text = "YQ" + str_year + this.cls_other.Str_PX_YQ(this._WorkDS,"主机数据表","资产编号");
DataRow dr = this._WorkDS.Tables["主机数据表"].NewRow();
dr["备注"] = this.txt_bz.Text;
dr["出厂号"] = this.txt_cch.Text;
dr["厂家"] = this.txt_cj.Text;
dr["单价"] = this.txt_dj.Text;
dr["登记单号"] = this.txt_djdh.Text;
dr["单位编号"] = this.txt_dwbh.Text;
dr["国别"] = this.txt_gb.Text;
dr["规格"] = this.txt_gg.Text;
dr["科研号"] = this.txt_kyh.Text;
dr["领用人工资号"] = this.txt_lyrgzh.Text;
dr["设备号"] = this.txt_sbh.Text;
dr["设备名称"] = this.txt_sbmc.Text;
dr["资产编号"] = this.txt_zcbh.Text;
if(this.cls_y_zcgl.ZCDJ_ZJ_Add(dr) == true)
{
this.cls_other.ShowMessageBox(KDMIS.Class.Cls_Other.ShowMessageBoxType.添加成功信息提示);
this.DialogResult = DialogResult.OK;
}
else
{
this.DialogResult = DialogResult.Cancel;
}
}
}
...全文
278 17 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
17 条回复
切换为时间正序
请发表友善的回复…
发表回复
diaoerlangdang 2005-05-17
  • 打赏
  • 举报
回复
mark
jedliu 2005-05-17
  • 打赏
  • 举报
回复
解决了?其实问题通常就几种,T-SQL语句错误,对象赋值时错误。
subjectForm 2005-05-17
  • 打赏
  • 举报
回复
mark~~~~~~~~
LinuxR 2005-05-17
  • 打赏
  • 举报
回复
流水号中 int temp=1; 改为 int temp=0
LinuxR 2005-05-11
  • 打赏
  • 举报
回复
问题解决了,是因为数据没有写入数据库的原因
LinuxR 2005-05-11
  • 打赏
  • 举报
回复
public string Str_PX_YQ(System.Data.DataSet ds,string StrTableName,string StrZDM)
{
string R_Temp = "0001";
int temp = 1;
try
{
foreach(DataRow dr in ds.Tables[StrTableName].Rows)
{
if(dr[StrZDM] != null)
{
int temp1 = Convert.ToInt32(dr[StrZDM].ToString().Remove(0,4));
if(temp < temp1)
{
temp = temp1;
}
}
}
temp = temp + 1;
switch(temp.ToString().Length)
{
case 1:
R_Temp = "000" + temp;
break;
case 2:
R_Temp = "00" + temp;
break;
case 3:
R_Temp = "0" + temp;
break;
}
}
catch
{
R_Temp = "0001";
}
return R_Temp;
}
wsflyfish 2005-05-11
  • 打赏
  • 举报
回复
关注
LinuxR 2005-05-11
  • 打赏
  • 举报
回复
数据浏览窗体有添加,删除,修改等按钮,点击添加,弹出数据录入框
_WorkDS是取数据浏览窗体的ds,当txt_ts.Text的值我取为2时,也就是批量添加两条时,当添加第一条时,执行的顺序是这样的,执行Y_ZCDJ_ZJ_Load中this.cls_other.Str_PX_YQ(this._WorkDS,"主机数据表","资产编号")在 Str_PX_YQ 取得主机的最大编号的流水号后返回一个该流水号加1;当添加第二条时,执行的自然是循环里的 this.cls_other.Str_PX_YQ(this._WorkDS,"主机数据表","资产编号"); 在Str_PX_YQ方法中取得主机最大编号流水号依然是第一次取的流水号,返回该流水号加1,所以主键重复了。是不是添加第一条后, _WorkDS没能更新,或是成功添加第一条后,数据浏览窗体里的ds并没有更新,从而_WorkDS没能得到更新?如何修改?这是不是问题的所在?
kv4000 2005-05-11
  • 打赏
  • 举报
回复
我也遇到这样的问题!
julong88 2005-05-11
  • 打赏
  • 举报
回复
hehe
singlepine 2005-05-10
  • 打赏
  • 举报
回复
private void btn_OK_Click(object sender, System.EventArgs e)
{
if(this._WorkBS == "添加")

for(temp=1;temp<=System.Convert.ToInt32(this.txt_ts.Text.Trim());temp++)
{

{
string str_year;
DateTime dt = System.DateTime.Now;
str_year = dt.Year.ToString().Remove(0,2);
//this.txt_zcbh.Text = "YQ" + str_year + this.cls_other.Str_PX_YQ(this._WorkDS,"主机数据表","资产编号");
DataRow dr = this._WorkDS.Tables["主机数据表"].NewRow();
dr["备注"] = this.txt_bz.Text;
dr["出厂号"] = this.txt_cch.Text;
dr["厂家"] = this.txt_cj.Text;
dr["单价"] = this.txt_dj.Text;
dr["登记单号"] = this.txt_djdh.Text;
dr["单位编号"] = this.txt_dwbh.Text;
dr["国别"] = this.txt_gb.Text;
dr["规格"] = this.txt_gg.Text;
dr["科研号"] = this.txt_kyh.Text;
dr["领用人工资号"] = this.txt_lyrgzh.Text;
dr["设备号"] = this.txt_sbh.Text;
dr["设备名称"] = this.txt_sbmc.Text;
//*******************
dr["资产编号"] =temp;// this.txt_zcbh.Text;
//可以这样测试循环是否有问题,如果没有就一定是产生流水号的问题,最好把产生流水号的贴出来,大伙帮你看
//*****************************
if(this.cls_y_zcgl.ZCDJ_ZJ_Add(dr) == true)
{
this.cls_other.ShowMessageBox(KDMIS.Class.Cls_Other.ShowMessageBoxType.添加成功信息提示);
this.DialogResult = DialogResult.OK;
}
else
{
this.DialogResult = DialogResult.Cancel;
}
}
}
LinuxR 2005-05-10
  • 打赏
  • 举报
回复
好像是流水号在循环里给锁住了,第二次流水号就是第一次的值,只能录入第一条记录,可是单条记录添加完成后,再添加 条记录,流水号则可以自动加1,我知道代码有问题,可能循环放的位置或循环本身还少点什么,只是不知道怎么解决!求助大侠了
orcale 2005-05-10
  • 打赏
  • 举报
回复
你的Str_PX_YQ在數據表裡面的屬性是怎麼樣的?注意獲取Str_PX_YQ的方法是不是有bug
singlepine 2005-05-10
  • 打赏
  • 举报
回复
贴出你的产生流水号的代码来,帮你看一下
LinuxR 2005-05-10
  • 打赏
  • 举报
回复
我测试了,一条一条添加的话,流水号会自动加1的 譬如第一条 YQ050001第二条就是YQ050002了,但是我在录入框加了TextBox,想实现同类型仪器的批量输入就主键重复,我跟踪看了,流水号没变,晕死
singlepine 2005-05-10
  • 打赏
  • 举报
回复
this.txt_zcbh.Text = "YQ" + str_year + this.cls_other.Str_PX_YQ(this._WorkDS,"主机数据表","资产编号");//检查这个是否是唯一的,估计不是,贴出方法cls_other.Str_PX_YQ的代码来
singlepine 2005-05-10
  • 打赏
  • 举报
回复
必须把流水号字段设为identity为yes

111,095

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • AIGC Browser
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧