VS2005中自定义自增主键数据表操作的快捷开发
在VS2005中,强类型数据集得到了很大的增强.在2003中基于强类型数据集,还有些迁强.而在VS2005中,使用强类型数据集进行程序开发,非常的快速方便.使用您的数据库中有很多表使用了自定义的主键,还能很方便的使用强类型数据集吗?经过一段时间的摸索,终于找到了比较简单的方法.我这里举一个智能客户端程序的例子,拿出来和大家一块分享.
--
获取最大申报编号
/**/ /*??调用方法例子 --获取最大申报编号 declare?@v_sq_id_max?DM_短申报代码 exec?Get_SBBH?'SB_SB','V_SBBH',@v_sq_id_max?output print?@v_sq_id_max */ ALTER ? PROCEDURE ?Get_SBBH ????( ???? @tab_MC ???????? varchar ( 50 ),??? -- 表名 ???? @Key_MC ???????? varchar ( 50 ),???? -- 主键名 ???? @OUT_V ????????DM_短申报代码??OUTPUT ????) AS ???? /**/ /*?SET?NOCOUNT?ON?*/ ? Begin ? Transaction declare ???? @v_rq ????????? varchar ( 10 )???? declare ???? @v_sq_id_max ?DM_短申报代码 declare ???? @v_sq_id ?????DM_短申报代码 declare ???? @strSql ????????? nvarchar ( 255 ) ???? ???? Set ? @v_rq ? = ? Convert ( char ( 8 ), getDate (), 112 )??? -- 日期字符串序列 ???? -- ?生成申请ID ???? set ? @strSql ? = ? ' Select?@v_sq_id_max=isnull(Max( ' + @Key_MC + ' ), '' 000001 '' )?from? ' + @tab_MC ? ???? exec ?sp_executesql? @strSql ,N ' @v_sq_id_max?DM_短申报代码?out ' , @v_sq_id_max ?out ????? ??? If ? @v_sq_id_max = ' 000001 ' ????? Begin ?? ??????? Set ? @v_sq_id ? = ?? @v_rq ? + ? @v_sq_id_max ????? End ??? Else ? if ? @v_sq_id_max = ' 999999 ' ????? Begin ???????? rollback ? Transaction ; ???????? Set ? @out_v ?? = ? ' -900 ' ???????? RAISERROR ?(? 13001 ,? 16 ,? 10 ,? ' 主键溢出 ' ) ????? End ??? Else ????? Begin ???????????? Set ? @v_sq_id ? = ? @v_rq ? + ? Right ( convert ( varchar ( 8 ),? Convert (numeric( 8 ), Right ( @v_sq_id_max , 6 )) + ? 1000001 ), 6 ) ????? End ????? ???? print ? ' @v_sq_id: ' ? + ? @v_sq_id ; ???? ?? if ? @@ERROR <> 0 ???? begin ???????? rollback ? Transaction ; ???????? Set ? @out_v ?? = ? ' -100 ' ???????? RAISERROR ?(? 13001 ,? ' 插入失败 ' ) ???? end ? ?? if ? @@ERROR = 0 ???? begin ???????? commit ? Transaction ?????????? set ? @OUT_V ?? = ? @v_sq_id ???? end ?
ALTER
?
PROCEDURE
?dbo.InsertWF_WDB
( ???? @V_WD_DM ?DM_短申报代码?output, ???? @V_WD_MC ? varchar ( 60 ), ???? @V_WD_BM ? varchar ( 60 ), ???? @V_WD_LJ ? varchar ( 100 ) ) AS ???? SET ?NOCOUNT? OFF ; Begin ???? Begin ? Transaction ???? -- 生成主键 ???? declare ? @v_sq_id_max ?DM_短申报代码 ???? exec ?Get_SBBH? ' WF_WDB ' , ' V_WD_DM ' , @V_WD_DM ?output ???? -- 插入数据 ???? INSERT ? INTO ? [ WF_WDB ] ?( [ V_WD_DM ] ,? [ V_WD_MC ] ,? [ V_WD_BM ] ,? [ V_WD_LJ ] )? VALUES ?( @V_WD_DM ,? @V_WD_MC ,? @V_WD_BM ,? @V_WD_LJ ); ???? -- 返回值处理 ???? if ? @@ERROR <> 0 ???????? begin ???????????? rollback ? Transaction ; ????????????? Set ? @V_WD_DM ?? = ? ' -100 ' ???????? ???????????? RAISERROR ?(? 13001 ,? ' 插入失败 ' )???? ???????? end ? ???? if ? @@ERROR = 0 ???? begin ???????? commit ? Transaction ????? end ????? END
????????
/**/
///?<summary>
????????///?查询文档表 ????????///?</summary> ????????///?<returns>WF_WDBDataTable</returns> ????????[WebMethod] ???????? public ?NSamWebService.DataSet.DocDs.WF_WDBDataTable?SelectWF_WDB() ???????? ... { ????????????NSamWebService.DataSet.DocDsTableAdapters.WF_WDBTableAdapter?apWf_wdb?=?new?NSamWebService.DataSet.DocDsTableAdapters.WF_WDBTableAdapter(); ????????????NSamWebService.DataSet.DocDs.WF_WDBDataTable?dt?=?new?NSamWebService.DataSet.DocDs.WF_WDBDataTable(); ????????????apWf_wdb.Fill(dt); ????????????return?dt; ????????} ???????? /**/ ///?<summary> ????????///?更新文档表 ????????///?</summary> ????????///?<param?name="dt">WF_WDBDataTable</param> ????????///?<returns></returns> ????????[WebMethod] ???????? public ? int ?Update(DocDs.WF_WDBDataTable?dt) ???????? ... { ????????????NSamWebService.DataSet.DocDsTableAdapters.WF_WDBTableAdapter?apWf_wdb?=?new?NSamWebService.DataSet.DocDsTableAdapters.WF_WDBTableAdapter(); ????????????return?apWf_wdb.Update(dt); ????????}
????????NSamClient.DocManage.DocDs.WF_WDBDataTable?dt?
=
?
new
?NSamClient.DocManage.DocDs.WF_WDBDataTable();
????????NSamClient.DocManage.DocManage?docManage1? = ? new ?NSamClient.DocManage.DocManage(); ???????? // 装载 ???????? private ? void ?文档表_List_Load( object ?sender,?EventArgs?e) ???????? ... { ????????????dt?=?this.docManage1.SelectWF_WDB(); ????????????this.wFWDMBBBindingSource.DataSource?=?dt; ????????} ???????? // 更新 ???????? private ? void ?button1_Click( object ?sender,?EventArgs?e) ???????? ... { ????????????docManage1.UpdateWF_WDB(dt); ????????} (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
- angularJS文本框根据输入字符(文本框值)进行查询ng-keydo
- angularjs post 后台 取不到值,修改contentTye 可以解决
- (三) Angular2项目框架搭建心得
- Heroku gunicorn不工作(bash:gunicorn:命令未找到)
- 【太阁×西雅图】6/14预告 线上讲座: AngularJS 2
- bash – Shell脚本将文本附加到每个文件?
- bash – awk:调用awk之外的函数
- 从我的Angular 2模板中未定义从http.get()加载的JSON数据
- 链接Angular 4和OpenLayers 4
- 深入理解BootStrap Item15 -- 媒体对象(media)