当前位置: 代码迷 >> C# >> C# 有关问题 求关注解决
  详细解决方案

C# 有关问题 求关注解决

热度:255   发布时间:2016-04-28 08:38:09.0
C# 问题 求关注解决!

小弟在做更换卡片的操作 
如图 每行记录为一张卡片的信息。现在要做的是,挂失卡之后 如何只换掉卡片的内码,而该卡的其他信息不变,挂失操作就是更改卡片状态(已实现),但是如何用新的卡片号来替换掉旧的卡片号。由于卡片号是主键,想不出怎么办了  各位大神 帮忙给给思路 !谢谢大家
------解决思路----------------------
个人认为不应该更新内码,挂失的卡片和新的卡片是不同的事物,你要做的并不是更新内码,而是在新的内码那条记录中把挂失的卡片的其他信息做一个复制,如果一定要让挂失的卡片不存在,可以做删除,最好记录好日志以便今后追述
------解决思路----------------------
取出丢失的卡的数据---修改数据内容---插入新的数据---成功之后删除旧数据
------解决思路----------------------
引用:
可是怎样去复制该记录的其他信息呐。。。

有数据库直接可以用sql语句进行数据复制,如果能在程序做可以遍历grid或者数据集合来复制
------解决思路----------------------
从你表中可以获得已知的字段
内码   类型   开始   结束  状态

从描述还有一个卡号,而且你把它设为了主键对吧

修改的方法,主要是从你的数据源里取出数据修改

楼主你都能更改状态了为什么不会这个呢?



------解决思路----------------------
加一个GUID作主键,内码列加唯一索引就行了(如果实在要作主键,就成联合主键了)
然后再加一张挂失纪录,里面有GUID,原卡号,新卡号,时间==方便查询
------解决思路----------------------
引用:
可以实现,就是更新主键。关键是新卡号不能和其他人的卡号重复
string old_ID_Card,new_ID_Card                     //new_ID_Card是用户要换成的新卡号
select * from table where 卡号=new_ID_Card
IF  new_ID_Card在库里不存在 and new_ID_Card!=old_ID_Card  THEN  
     update table set 卡号=new_ID_Card where 卡号=old_ID_Card

END IF

 //new_ID_Card!=old_ID_Card假如改成的新号正好就是已经忘了的旧号
更正:IF  new_ID_Card在库里不存在 OR (new_ID_Card在库里已经存在 AND new_ID_Card==old_ID_Card)  THEN  
     update table set 卡号=new_ID_Card where 卡号=old_ID_Card

END IF
我写的是伪码,表达思路。也可以指定新的主键,例如guid,int自增,组合键,关键用一个没有实际意义的字段,你的卡号,是卡的身份证,而guid是一串128位的字串,对你的程序没有影响,方便操作
------解决思路----------------------
引用:
您的意思是在小窗口上直接添加新的内容  然后把卡号反回给表格界面 然后修改内容   我这里是绑定了数据的 所以要重新加载,,,是这个意思吗   但是我想做的是添加新的卡号  ,还有旧的卡的其他信息都要转移到这个新卡号下。那些其他的信息怎么与这个新卡号对接上呢。


这是业务问题。这个问题如果没有经过业务部门白纸黑字的文字公告,作为程序员,绝不能胡乱想当然地搞。
  相关解决方案