《U8二次开发基础篇ppt课件》由会员分享,可在线阅读,更多相关《U8二次开发基础篇ppt课件(25页珍藏版)》请在金锄头文库上搜索。
1、U8二次开发基础讲解二次开发基础讲解1 1讲演主题讲演主题VBVB应用讲解应用讲解XMLXML应用讲解应用讲解SQL SeverSQL Sever应用讲解应用讲解2 2VBVB应用讲解应用讲解VBVB文件介绍文件介绍窗体文件窗体文件(*.Frm*.Frm)类文件类文件(*.Cls*.Cls)模块文件模块文件(*.Bas*.Bas)自定义控件自定义控件(*.Ctl*.Ctl)属性页文件属性页文件(*.Pag*.Pag)窗体资源文件窗体资源文件(*.Frx*.Frx)资源文件资源文件(*.Res*.Res)工程文件工程文件(*.Vbp*.Vbp)工程组文件工程组文件(*.Vbg*.Vbg)工程配置
2、文件工程配置文件(*.Vbw*.Vbw)代码管理文件代码管理文件(*.Scc*.Scc)日志文件日志文件(*.Log*.Log)3 3VBVB应用讲解应用讲解(Frm)(Frm)VERSION 5.00VERSION 5.00Begin VB.Form Form1 Begin VB.Form Form1 Caption = Form1 Caption = Form1 ClientHeight = 3195 ClientHeight = 3195 ClientLeft = 60 ClientLeft = 60 ClientTop = 345 ClientTop = 345 ClientWidth
3、 = 4680 ClientWidth = 4680 LinkTopic = Form1 LinkTopic = Form1 ScaleHeight = 3195 ScaleHeight = 3195 ScaleWidth = 4680 ScaleWidth = 4680 StartUpPosition = 3 StartUpPosition = 3 窗口缺省窗口缺省 Begin VB.CommandButton cmdCreateXML Begin VB.CommandButton cmdCreateXML Caption = CreateXml Caption = CreateXml He
4、ight = 495 Height = 495 Left = 1680 Left = 1680 TabIndex = 1 TabIndex = 1 Top = 1920 Top = 1920 Width = 1455 Width = 1455 End EndEndEndAttribute VB_Name = Form1Attribute VB_Name = Form1Attribute VB_GlobalNameSpace = FalseAttribute VB_GlobalNameSpace = FalseAttribute VB_Creatable = FalseAttribute VB_
5、Creatable = FalseAttribute VB_PredeclaredId = TrueAttribute VB_PredeclaredId = TrueAttribute VB_Exposed = FalseAttribute VB_Exposed = False4 4VBVB应用讲解(规范)应用讲解(规范)强制显式声明模块中的所有变量强制显式声明模块中的所有变量Option ExplicitOption Explicit变量一定要在前面声明变量一定要在前面声明Private Sub cmdCreateXML_Click() Private Sub cmdCreateXML_Cl
6、ick() Dim oEle As IXMLDOMElement Dim oEle As IXMLDOMElement Dim oRoot As IXMLDOMElement Dim oRoot As IXMLDOMElement Dim oNode As IXMLDOMNode Dim oNode As IXMLDOMNode注意缩进注意缩进Xml Xml 标准元素标准元素XmlXml 根节点根节点Xml Xml 标准节点标准节点If A = B Then A = A + 1End IFWhile A 100 A = A + 1WendFor i = 1 to 100 A = A + 1Ne
7、xtPrivate Sub Test() Msgbox “This is a test sub”NextSelect Case Val(x) Case 1 Print “Value Is 1”End Select适当的换行适当的换行Private Sub cmdCreateXML_Click() Private Sub cmdCreateXML_Click() Dim oEle As IXMLDOMElement Dim oEle As IXMLDOMElement Do Code Do CodeEnd SubEnd SubPrivate Sub AnotherSubPrivate Sub A
8、notherSub5 5降低断行标示降低断行标示“_ _”的使用频度,脚本换行增加换行标示的使用频度,脚本换行增加换行标示sSql = sSql = “Select * From TableSelect * From Table” & & _ _ “Where Code =Where Code =10011001”sSql = sSql = “Select * From TableSelect * From Table”& VbCrlf& VbCrlfsSql = sSql &sSql = sSql &“Where Code =Where Code =10011001”VB应用讲解(规范)每个
9、函数段最好不要超过每个函数段最好不要超过3030行行Private Sub cmdCreateXML_Click() Private Sub cmdCreateXML_Click() Dim oEle As IXMLDOMElement Dim oEle As IXMLDOMElement Do Code Do CodeEnd SubEnd Sub30306 6VBVB应用讲解(规范)应用讲解(规范)获取获取XmlXml节点属性值节点属性值Private Function GetXmlAttr(Byref eItem As Private Function GetXmlAttr(Byref e
10、Item As XmlElementXmlElement, Byval sName as String) As String, Byval sName as String) As String On Error Goto ErrExist On Error Goto ErrExist Dim vValue As Variant Dim vValue As Variant 获取的获取的XmlXml属性值属性值 vValuevValue = eItem.GetAttribute = eItem.GetAttribute(sName)sName) If IsNull(vValue) Then If
11、IsNull(vValue) Then 判断该属性是否存在判断该属性是否存在 GetXmlAttr = GetXmlAttr = “”“” 不存在,返回空串不存在,返回空串 Else Else GetXmlAttr = vValue GetXmlAttr = vValue Endif EndifErrExist:ErrExist: GetXmlAttr = GetXmlAttr = “” 取数失败,返回空串取数失败,返回空串End Function End Function 足够的足够的注释信注释信息息最好有错误处理,最好有错误处理,最好不要用最好不要用On On Error Resum Er
12、ror Resum NextNext业务场景考虑全面,业务场景考虑全面,避免实时错误避免实时错误声明参数是按地声明参数是按地址传入还是数值址传入还是数值功能单一,就干一件事情功能单一,就干一件事情7 7讲演主题讲演主题VBVB应用讲解应用讲解XMLXML应用讲解应用讲解SQL SeverSQL Sever应用讲解应用讲解8 8NodeNode节点,类似于数组,有文本属性节点,类似于数组,有文本属性ElementElement 元素,带属性的节点元素,带属性的节点Attribute Attribute 属性,类似于集合,不可重复属性,类似于集合,不可重复TextText文本,不具备任何扩展属性文
13、本,不具备任何扩展属性备注备注!- DocumentElement DocumentElement 根节点,根节点,DomDom只可以有只可以有一个根节点,该节点为一个根节点,该节点为ElementElement属性属性XMLXML应用讲解应用讲解XMLXML介绍介绍9 9XMLXML应用讲解应用讲解XMLXML介绍介绍 节点节点SelectSingleNodeSelectSingleNodeselectNodesselectNodesfirstChildfirstChildlastChildlastChildnextSiblingnextSiblingappendChildappendChi
14、ldremoveChildremoveChildtexttext1010XMLXML应用讲解应用讲解XMLXML介绍介绍 属性属性attributesattributesgetAttributeNodegetAttributeNodegetAttributegetAttributesetAttributesetAttributeremoveAttributeremoveAttributetexttext1111XMLXML应用讲解应用讲解字符字符字符字符转义转义转义转义“ “"" '' >>& &&XMLXML字符转义字符转义
15、有些特殊字符无法在有些特殊字符无法在XmlXml中直接保存,会使用转义字符进行描述。中直接保存,会使用转义字符进行描述。该描述会影响该描述会影响XMLXML的保存内容,但是显示仍然会按照原始内容显的保存内容,但是显示仍然会按照原始内容显示,而非转义内容。示,而非转义内容。VBVB中对属性等赋值取数直接使用特殊字符,只是影响中对属性等赋值取数直接使用特殊字符,只是影响XmlXml的保存的保存文件。文件。但是如果对但是如果对XmlXml的的XmlXml属性直接操作时就是转义字符了。属性直接操作时就是转义字符了。1212XMLXML应用讲解应用讲解XPathXPath使用使用“/ /”进行路径操作,
16、如:进行路径操作,如:Nd/Itm/NameNd/Itm/Name使用使用“ ”进行谓词判断,如:进行谓词判断,如:NdItm/NameNdItm/Name使用使用“”对属性进行判断,如:对属性进行判断,如:ItemName = aItemName = a使用使用“/”获取获取domdom全路径下的所有节点内容全路径下的所有节点内容使用使用“* *”进行模糊匹配进行模糊匹配XMLXML严格区分大小写,书写时一定要注意严格区分大小写,书写时一定要注意1313XMLXML应用讲解应用讲解SchemaSchemaxml xmlns:s=uuid:XXX xmlns:dt=uuid:XXX xmlns
17、:rs=urn:schemas-microsoft-com:rowset xmlns:z=#RowsetSchemas:AttributeType name=cCode rs:number=1 rs:nullable=true rs:basetable=PO rs:basecolumn=cPOID 1414讲演主题讲演主题VBVB应用讲解应用讲解XMLXML应用讲解应用讲解SQL SeverSQL Sever应用讲解应用讲解1515SQLSQL应用讲解应用讲解系统数据库和系统表系统数据库和系统表MasterMastermastermaster是数据库的最重要的数据库,联系着其他是数据库的最重要
18、的数据库,联系着其他的数据库,并记录着用户数据!相当于超级管理员的账户的数据库,并记录着用户数据!相当于超级管理员的账户ModelModel 模版数据库模版数据库MsdbMsdb Sql Sql内部使用,一般用于计划作业和数据库邮件内部使用,一般用于计划作业和数据库邮件tempdbtempdb临时数据库临时数据库pubspubs示范数据库示范数据库Sysobjects Sysobjects 数据库对象表数据库对象表SyscolumnsSyscolumns数据库对象字段表数据库对象字段表sysProcesses(master)sysProcesses(master)数据库系统进程数据库系统进程1
19、616SQLSQL应用讲解应用讲解常用对象常用对象数据表数据表标准前缀:标准前缀:EF_EF_项目项目_XXXX _XXXX 或或 EF_EF_项目项目_T_XXXX_T_XXXX字段字段视图视图标准前缀:标准前缀: EF_EF_项目项目_V_XXXX_V_XXXX存储过程存储过程标准前缀:标准前缀: EF_EF_项目项目_P_XXXX_P_XXXX函数函数标准前缀:标准前缀: EF_EF_项目项目_F_XXXX_F_XXXX触发器触发器标准前缀:标准前缀: EF_EF_项目项目_Tri_XXXX_Tri_XXXX自定义变量自定义变量索引索引标准前缀:标准前缀: EF_EF_项目项目_IX_X
20、XXX_IX_XXXX约束约束标准前缀:标准前缀: EF_EF_项目项目_CK_XXXX_CK_XXXX1717SQLSQL应用讲解应用讲解常用命令常用命令SP_Who SP_Who 检查进程检查进程SP_LockSP_Lock检查锁检查锁Kill Sp_IDKill Sp_ID 删除进程删除进程DBCC InputBuffer(SP_ID)DBCC InputBuffer(SP_ID)检查进程内容检查进程内容DBCC SHRINKDATABASE DBCC SHRINKDATABASE 收缩数据库收缩数据库DBCC SHRINKDBDBCC SHRINKDB收缩数据库收缩数据库DBCC SH
21、RINKFILEDBCC SHRINKFILE收缩数据和日志文件收缩数据和日志文件DBCC SHOWCONTIG DBCC SHOWCONTIG 扫描表密度扫描表密度DBCC REINDEX DBCC REINDEX 重建数据库索引重建数据库索引DBCC INDEXDEFRAG DBCC INDEXDEFRAG 重建数据库索引重建数据库索引1818SQLSQL应用讲解应用讲解常用命令常用命令Select Top 10 * From XXX With(nolock) Where XX = YYSelect Top 10 * From XXX With(nolock) Where XX = YYS
22、umSumMaxMaxMinMinAvgAvgGroup By xx,yyGroup By xx,yyHaving Sum(xx)10000Having Sum(xx)10000Union (All)Union (All)Insert Into A (a,b,c) Values(Insert Into A (a,b,c) Values(a a, ,b b, ,c c) )Delete A Where a = Delete A Where a = a aSelect A.* Into #A Where a = Select A.* Into #A Where a = a aLeft JoinLe
23、ft JoinRight JoinRight JoinInner JoinInner JoinFull JoinFull JoinCross JoinCross Join (Select * From A,B)(Select * From A,B)1919Select A.VouchCode, A.VouchName, B.Code, C.Name, B.Num, B.MoneySelect A.VouchCode, A.VouchName, B.Code, C.Name, B.Num, B.MoneyFrom A With(nolock)From A With(nolock)Left Joi
24、n B With(nolock) ON A.ID = B.IDLeft Join B With(nolock) ON A.ID = B.IDINNER Join C With(nolock) ON A.ID = C.ID And B.Code = C.CodeINNER Join C With(nolock) ON A.ID = C.ID And B.Code = C.CodeWhere A.VouDate Between 2010-5-1 And 2010-5-31Where A.VouDate Between 2010-5-1 And 2010-5-31Set SQL = Set SQL
25、= Select A.VouchCode, A.VouchName, B.Code, C.Name+Select A.VouchCode, A.VouchName, B.Code, C.Name+From A +From A +Left Join B ON A.ID = B.ID +Left Join B ON A.ID = B.ID +INNER Join C ON A.ID = C.ID And B.Code = C.Code+INNER Join C ON A.ID = C.ID And B.Code = C.Code+Where A.VouDate Between 2010-5-1 A
26、nd 2010-5-31Where A.VouDate Between 2010-5-1 And 2010-5-31SQLSQL应用讲解应用讲解编写规范编写规范尽量不要超尽量不要超过五层过五层关键字前换行关键字前换行Set SQL = Select A.VouchCode, A.VouchName, B.Code, C.NameSet SQL = Select A.VouchCode, A.VouchName, B.Code, C.NameFrom AFrom ALeft Join B ON A.ID = B.IDLeft Join B ON A.ID = B.IDINNER Join C O
27、N A.ID = C.ID And B.Code = C.CodeINNER Join C ON A.ID = C.ID And B.Code = C.CodeWhere A.VouDate Between 2010-5-1 And 2010-5-31Where A.VouDate Between 2010-5-1 And 2010-5-31SQLSQL变量赋值尽量不要拼很多的串变量赋值尽量不要拼很多的串使用脏读使用脏读2020减少前后台交互次数减少前后台交互次数没有必要的数据不要取到前台没有必要的数据不要取到前台避免客户端海量运算避免客户端海量运算减少减少ININ的使用的使用避免使用避免使用
28、UnionUnion脚本中尽量避免使用游标(尤其不能游标嵌套)脚本中尽量避免使用游标(尤其不能游标嵌套)存储过程功能清晰,减少业务分支查询,降低预编译时间存储过程功能清晰,减少业务分支查询,降低预编译时间关键业务字段使用索引处理关键业务字段使用索引处理多使用整形数据判断,避免布尔值判断多使用整形数据判断,避免布尔值判断整理数据表碎片,提升索引效率整理数据表碎片,提升索引效率SQLSQL应用讲解应用讲解效率问题效率问题索引失效索引失效比较字段数据类型转换或运算比较字段数据类型转换或运算比较字段内容少于组合索引内容比较字段内容少于组合索引内容对对NullNull值进行比较值进行比较比较字段表内内容
29、比较一致,系统没有建立索引比较字段表内内容比较一致,系统没有建立索引使用使用“”来进行索引字段比较来进行索引字段比较使用使用“ININ”来进行条件处理来进行条件处理索引表不连续,跨页检索索引表不连续,跨页检索2121SQLSQL应用讲解应用讲解SQLSQL变量拼接时会向定义最严格的类型进行转换变量拼接时会向定义最严格的类型进行转换组织视图时避免使用组织视图时避免使用* *来降低工作量来降低工作量使用中间表处理时使用中间表处理时, ,临时用表应该判断是否存在临时用表应该判断是否存在创建表和视图时创建表和视图时, ,一定要判断是否已经存在一定要判断是否已经存在注意注意NullNull常见错误常见错
30、误A AB BC Ca ab bc cX XY YZ Zx xy yz zT1T1T2T2A AB BC CX XY YZ Za ab bc cx xy yz zV1V1CREATE View V1 ASCREATE View V1 ASSelect T1.*,T2.* From T1,T2Select T1.*,T2.* From T1,T2A AB BC CD Da ab bc cd dA AB BC CX XY YZ Za ab bc cd dx xy y2222Declare sValue nvarchar(50)Declare sValue nvarchar(50)Set sValu
31、e = Set sValue = ABCABCSelect sValue = Name From A Where 1 = 2Select sValue = Name From A Where 1 = 2Set sValue = (Select Name From A Where 1 = 2)Set sValue = (Select Name From A Where 1 = 2)SQLSQL应用讲解应用讲解NULLNULLNullNull不可以使用不可以使用“= =”来判断,只能使用来判断,只能使用“ISIS”NullNull和任何值比较都会返回和任何值比较都会返回“FalseFalse”(开
32、关:(开关:Set ANSI_NULLS OFFSet ANSI_NULLS OFF)Case WhenCase WhenCase When a = 1 Then Case When a = 1 Then 3 3 Else Case When a = 2 Then Else Case When a = 2 Then 4 4 End End End EndCase a When 1 Then Case a When 1 Then 3 3 When 2 Then When 2 Then 4 4 End End= =ABCABCNullNull空记录集空记录集2323SQLSQL应用讲解应用讲解事件
33、探查器事件探查器默认事件:默认事件:Sql 2000Sql 2000Audit Login,Audit Login,Audit Logout,Audit Logout,ExistingConnectingExistingConnectingRPC:completedRPC:completedSQL:BatchCompleted,SQL:BatchCompleted,Sql 2005Sql 2005Sql 2008Sql 2008Audit Login,Audit Login,Audit Logout,Audit Logout,ExistingConnectingExistingConnecti
34、ngRPC:completedRPC:completedSQL:BatchStartingSQL:BatchStartingSQL:BatchCompleted,SQL:BatchCompleted,常用事件:常用事件:RPC:StartingRPC:StartingRPC:completed,RPC:completed,SQL:BatchStarting SQL:BatchStarting SQL:BatchCompletedSQL:BatchCompletedSP:StmtStartingSP:StmtStartingSP:stmtCompletedSP:stmtCompleted24242525