数据批量录入的问题(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;
}
}
}
...全文
327 17 打赏 收藏 转发到动态 举报
写回复
用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
内容概要:本文围绕“单相逆变器闭环逆变电路PWM模型仿真研究”展开,基于Simulink平台构建单相逆变器的闭环控制系统仿真模型,重点研究PWM调制技术在逆变电路中的应用与实现。文中详细阐述了系统架构设计、电压电流双闭环控制策略的实现原理、控制器参数设计及仿真建模全过程,并通过仿真结果验证了控制方案在动态响应、稳态精度与系统稳定性方面的有效性。同时,文档还涵盖多种电力电子系统典型应用场景,如多类型短路故障仿真(中性点不接地、经小电阻接地、经消弧线圈接地等)、软开关技术、微电网能量管理、MPPT控制等,体现出较强的技术综合性和工程实践价值。; 适合人群:电气工程、自动化、电力电子与新能源等相关专业的高校本科生、研究生、科研人员,以及从事电力系统仿真、逆变器设计与新能源并网技术研发的工程技术人员。; 使用场景及目标:①掌握基于Simulink的单相逆变器闭环控制系统建模与PWM仿真方法;②深入理解双闭环控制、SPWM/SVPWM调制、系统稳定性分析等核心技术原理;③为课程设计、毕业设计、科研项目或实际工程开发提供可复用的仿真模型与技术支持; 阅读建议:建议结合文中仿真模型动手实践,重点掌握PI控制器参数整定、PWM信号生成机制与仿真结果分析方法,同时可延伸学习文档中涉及的软开关、故障仿真、微电网控制等关联技术,以拓展系统级设计能力。

111,131

社区成员

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

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

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