数据批量录入的问题(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;
}
}
}
...全文
280 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
易迅电子病历系统是深圳市天方达科技发展有限公司历时多年研发的一款精品医疗软件,是国内少数拥有全部核心技术知识产权的电子病历系统。符合最新医改标准、海量免费的病历模板、并拥有丰富的临床知识库。以医生为核心,以满足医生的需要为首要出发点。想医生所想,医生所需。利用软件系统帮助医生快速、智能安全的完成非主观判断性的临床工作内容。利用软件系统帮助医生积累临床经验知识,并通过与其他医生的经验交流、信息共享的过程中提升自己的医疗水平。让医生彻底摆脱重复性的临床工作。以围绕医生为核心的全方位临床信息化工作平台。医生可以享受到从互联网到医生电脑桌面全方位的资讯和软件服务。医生所使用的易迅电子病历软件可以和易迅电子病历网实现无缝对接,实现在线软件升级,在线免费模板下载升级,在线免费临床知识库下载升级,个人模板及知识库在线备份,在线与其他医生实时沟通等多项服务。易迅将为此根据医生实际需求发展更多基于平台的特色增值服务。 更新内容: 易迅电子病历系统V6.4.0版升级发布公告 1、医生工作站——新增自动归档功能 2、医生工作站——新增对正处于编辑状态的住院病历在另一界面无法打开、编辑 3、医生工作站——新增传染病报告卡(增、删、改、查、打印) 4、医生工作站——提供住院病历记录双签名功能,如果是实习医生、试用期医务人员书写的病历时,他的上级医师可以直接进行修改,签名功能通过人工插入 5、医生工作站——优化单机版病人导出的时候提示导出失败 6、系统工作站——优化功能参数前台化。设置三测单根据后台数据,来填写三测单时间点 7、护士工作站——批量、快速录入三测单

111,096

社区成员

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

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

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