皮皮网

【游戏公会网站源码】【玖富庄园 源码】【诱导充值源码 2018】emp框架源码_emp 框架

2024-11-23 12:45:53 来源:会员源码破解

1.DbUnit (安装 | 使用)
2.急求pb考勤管理系统(pb+access)论文
3.系统垃圾清理代码方法

emp框架源码_emp 框架

DbUnit (安装 | 使用)

       è¿ç”¨DBUnit进行高效单元测试

       è¯‘者注:最近对DBUnit比较感兴趣,看到这篇文章就翻译出来和大家共享,不过我也是New

       Hand,所以翻译不好的地方请大家指正。我的MSN:zhlihui@hotmail.com,框框架如果大家有什么好的资源和经验欢迎和我交流.

        引入DBUnit

       çŽ°å®žç³»ç»Ÿä¸­é€šå¸¸ä¼šæœ‰ä¸€äº›å…·æœ‰å¤–部依赖性的对象,这些对象和数据库或者其他对象存在诸多关联。如果我们对这样的对象编写单元和组件级测试的话,可以想象将是非常麻烦的一件事.因为这种外部依赖性的存在,使的我们很难将对象孤立出来进行测试。经常提及的白盒测试法,基本上就是通过控制对象的外部依赖性来达到隔离对象的目的,使的可以操作这些对象的状态和相关行为。

        运用 模拟对象(mock objects)

       æˆ–者stubs,就是一个控制对象外部依赖性的解决方案。通过隔离那些关联的数据库访问类,象JDBC的相关操作类,对于控制对象外部依赖性将是很有效的。但模拟对象的解决方案对一些特殊的应用系统架构就显得力不从心了,象那些运用了EJB的CMP(container-managed

       persistence)或者 JDO(java Data

       Objects)的应用系统架构,在这些架构里,数据库的访问对象是在最底层的而且很隐蔽。

        由Manuel Laflamme

       ç¼–写的开放源代码的DBUnit架构体系,对于控制系统内部的数据库依赖性提供了一个非常不错的解决方案。他允许程序员在整个的测试过程中自由的管理控制数据库的状态,这很重要。利用DBUnit,在测试之前,我们可以给目标数据库植入我们需要的数据集,而且,在测试完毕后,数据库完全能够回溯到测试前的状态。

       åœ¨å¾ˆå¤šæˆåŠŸçš„软件项目中,测试自动化往往是关键的层面。DBUnit允许开发人员创建测试用例代码,在这些测试用例的生命周期内我们可以很好的控制数据库的状态。而且,这些测试用例是很容易实现自动化的。这样在测试过程中我们无须对它进行人工的干预,为人工干预造成的后果而担心就更没必要了。

        简单介绍

       é…ç½®ä½¿ç”¨DBUnit的第一步我们首先需要知道如何生成数据库schema,这个文件是XML格式的,其中包括了数据库的表及相关数据信息。

       ä¾‹å¦‚,这里有一个数据库表employee

       ï¼Œæˆ‘们可以用SQL的形式这样将他表示出来。

       è€Œä¸”,我们可以看到,一个简单的数据集可以这样表示

       åœ¨DBUnit中,上面这个表和抽样数据信息可以用XML文件的形式这样表示:

        <EMPLOYEE employee_uid='1'

        start_date='--'

        first_name='Andrew'

        ssn='xxx-xx-xxxx'

        last_name='Glover' />

        这个生成的XML格式的文件可以作为系统所需的所有种子文件(seed

       files)的样本模版.

       ä¸ºç›¸äº’关联的测试场景创建多个种子文件是一个很有效的策略,就象通过不同的数据库文件来区分隔离数据库状态是一个道理。多种子文件策略可以将我们的测试目标锁定到较小的范围,目标数据可以只针对数据库的表,而不是整个数据库。

        为了给目标数据库植入不同的职员记录,我们需要的XML数据文件如下所示:

        <?xml version='1.0' encoding='UTF-8'?>

        <dataset>

        <EMPLOYEE employee_uid='1'

        start_date='--'

        first_name='Drew' ssn='--'

        last_name='Smith' />

        <EMPLOYEE employee_uid='2'

        start_date='--'

        first_name='Nick' ssn='--'

        last_name='Marquiss' />

        <EMPLOYEE employee_uid='3'

        start_date='--'

        first_name='Jose' ssn='--'

        last_name='Whitson' />

        </dataset>

       çŽ°åœ¨ï¼Œè¦è®©DBUnit和我们所需的数据库schema一起工作了,对于程序员来说,我们使用DBUnit进行测试可以有两种选择:通过直接编码方式进行测试或者与Ant结合.

        编码方式

       DBUnit框架提供了一个基本的抽象测试用例类,叫做DatabaseTestCase,它是JUnit框架中的基础类TestCase的子类。如果我们使用这个类必须首先实现两个钩子方法(hook

       methods):getConnection()和getDataSet().

       æ–¹æ³•getConnection()需要返回一个IDatabaseConnection类型的对象,这个对象是一个基于普通JDBC连接的包装类。例如,下面的代码段演示了在MySQL数据库环境下,IDatabaseConnection类型连接对象的创建方法。

        protected IDatabaseConnection getConnection()

        throws Exception {

        Class driverClass = Class.forName("org.gjt.mm.mysql.Driver");

        Connection jdbcConnection = DriverManager.getConnection(

       "jdbc:mysql://.0.0.1/hr", "hr", "hr");

        return new DatabaseConnection(jdbcConnection);

       }

       æ–¹æ³•getDataSet()返回一个IDataSet类型对象,其实,说白了,他就是我们先前提到的XML数据的种子文件的另一种表现形式。

        protected IDataSet getDataSet() throws Exception {

        return new FlatXmlDataSet(

        new

       FileInputStream("hr-seed.xml"));

        }

       æœ‰äº†è¿™ä¸¤ä¸ªåŸºæœ¬çš„方法以后,DBUnit就可以按照它预先缺省的行为工作了。DatabaseTestCase类提供了两个fixture(我叫它固件,不知仁兄同意否?)方法来控制测试前和测试后的数据库状态。这两个方法就是:

       getSetUpOperation() 和 getTearDownOperation().

       ä¸€ç§é«˜æ•ˆçš„实施方案就是让getSetUpOperation()方法执行REFRESH操作,通过这个操作,我们可以用种子文件中的数据去更新目标数据库里的数据。接下来,就是getTearDownOperation(),让他去执行一个NONE操作,也就是什么也不执行。

        protected DatabaseOperation getSetUpOperation()

        throws

       Exception {

        return DatabaseOperation.REFRESH;

        }

        protected DatabaseOperation getTearDownOperation()

        throws

       Exception {

        return DatabaseOperation.NONE;

        }

       è¿˜æœ‰ä¸€ç§æœ‰æ•ˆçš„方法就是在getSetUpOperation()方法中执行CLEAN_INSERT操作,这样首先会将目标数据库中与我们提供的种子文件一致的数据删除,然后将我们提供的数据插入到数据库中。这个实施顺序保证了我们对数据库的精确控制。

        代码样例

       åœ¨ä¸€ä¸ªåŸºäºŽJ2EE的人力资源系统中,我们很希望对某个数据操作周期实现测试自动化,这个操作周期包括职员的新增,检索,更新和删除。远程接口定义了下列的业务方法(为了简洁清楚,省略了方法中的throws子句).

       //译者注:这里的EmployeeValueObject类型对象,译者认为是代表职员实体信息的对象。

       public void createEmployee( EmployeeValueObject emplVo )

       public EmployeeValueObject getEmployeeBySocialSecNum( String ssn )

       public void updateEmployee( EmployeeValueObject emplVo )

       public void deleteEmployee( EmployeeValueObject emplVo )

        测试getEmployeeBySocialSecNum()方法

       éœ€è¦æ¤å…¥ä¸€æ¡æ•°æ®åˆ°ç›®æ ‡æ•°æ®åº“中,另外,测试deleteEmployee()方法和updateEmployee()方法时,同样也是在先前植入的这条记录的基础上进行。最后,测试类会首先利用createEmployee()方法创建一条记录,同时我们需要校验执行这个方法时,是否会有异常发生。

       ä¸‹é¢è¿™ä¸ªDBUnit种子文件,叫做"employee_hr_seed.xml",下面将用到这个文件。

        <?xml version='1.0' encoding='UTF-8'?>

        <dataset>

        <EMPLOYEE employee_uid='1'

        start_date='--'

        first_name='Drew' ssn='--'

        last_name='Smith' />

        <EMPLOYEE employee_uid='2'

        start_date='--'

        first_name='Nick' ssn='--'

        last_name='Marquiss' />

        <EMPLOYEE employee_uid='3'

        start_date='--'

        first_name='Jose' ssn='--'

        last_name='Whitson' />

        </dataset>

        测试类 EmployeeSessionFacadeTest

       ,需要扩展DBUnit的基础类DatabaseTestCase并且必须提供对getConnection()和getDataSet()方法的实现,在getConnection()方法中将获得与EJB容器初始化时一样的数据库实例,getDataSet()方法负责读取上面提及的employee_hr_seed.xml文件的数据。

       æµ‹è¯•æ–¹æ³•ç›¸å½“简单,因为DBUnit已经为我们处理了复杂的数据库生命周期任务。为了测试getEmployeeBySocialSecNum()方法,只需要简单的传递一个存在于种子文件中的社保代码号即可,比如

       "--".

       //译者注:EmployeeFacade 类型对象,译者认为是代表底层数据库数据的映射体

       public void testFindBySSN() throws Exception{

        EmployeeFacade facade = //obtain somehow

        EmployeeValueObject vo =

        facade.getEmployeeBySocialSecNum("--");

        TestCase.assertNotNull("vo shouldn't be null", vo);

        TestCase.assertEquals("should be Drew",

        "Drew", vo.getFirstName());

        TestCase.assertEquals("should be Smith",

        "Smith", vo.getLastName());

       }

       ä¸ºäº†ç¡®ä¿æ“ä½œå‘¨æœŸä¸­çš„创建职员方法createEmployee()没有问题,我们只需简单的执行一下这个方法,然后校验一下看有没有异常抛出,另外,下一步我们要做的就是在这条新增的记录上进行查找操作,看是否可以找到刚创建的记录。

        public void testEmployeeCreate() throws Exception{

        EmployeeValueObject empVo = new EmployeeValueObject();

        empVo.setFirstName("Noah");

        empVo.setLastName("Awan");

        empVo.setSSN("--");

        EmployeeFacade empFacade = //obtain from somewhere

        empFacade.createEmployee(empVo);

        //perform a find by ssn to ensure existence

       }

       æµ‹è¯•updateEmployee()方法包括四步,首先查找我们需要被更新的那条记录,然后更新它,紧接着,重新查找这条记录,确认更新操作是否有效。

        public void testUpdateEmployee() throws Exception{

        EmployeeFacade facade =//obtain facade

        EmployeeValueObject vo =

       facade.getEmployeeBySocialSecNum("--");

        TestCase.assertNotNull("vo was null", vo);

        TestCase.assertEquals("first name should be Jose", "Jose",

       vo.getFirstName());

        vo.setFirstName("Ramon");

        facade.updateEmployee(vo);

        EmployeeValueObject newVo =

       facade.getEmployeeBySocialSecNum("--");

        TestCase.assertNotNull("vo was null", newVo);

        TestCase.assertEquals("name should be Ramon", "Ramon",

       newVo.getFirstName());

       }

       ç¡®ä¿æ•°æ®æ“ä½œå‘¨æœŸä¸­çš„删除操作deleteEmployee()的方法和testUpdateEmployee()方法基本类似。

       å®ƒåˆ†ä¸ºä¸‰æ­¥ï¼šé¦–先查找一个已存在的记录实体,然后移除,最后再对相同的记录进行查找,确认这条记录没有被查到。

       public void testDeleteEmployee() throws Exception{

        EmployeeFacade facade = //obtain facade

        EmployeeValueObject vo = facade.getEmployeeBySocialSecNum("--");

        TestCase.assertNotNull("vo was null", vo);

        facade.deleteEmployee(vo);

        try{

        EmployeeValueObject newVo =

       facade.getEmployeeBySocialSecNum("--");

        TestCase.fail("returned removed employee");

        }catch(Exception e){

        //ignore

        }

       }

       ä¸Šè¿°è¿™äº›æµ‹è¯•ä»£ç å¾ˆç®€å•ä¹Ÿå¾ˆå®¹æ˜“理解.因为这些代码唯一的职责就是测试,已经完全从系统程序代码中独立出来,这使测试变的简单。并且,这些测试用例的自动化也很容易实现。

        与Ant的结合

       ç›¸å¯¹äºŽæ‰©å±•DBUnit中的基础类DatabaseTestCase,DBUnit框架中自带Ant功能,允许我们可以在Ant的build.xml文件中控制数据库的状态.这个功能是相当强大的,因为对于作成的诸多测试用例,它提供了一个相当简洁的解决方案。比如。在Ant中运行JUnit测试,就象下面定义一个任务一样简单明了。

       <junit printsummary="yes" haltonfailure="yes">

        <formatter type="xml"/>

        <batchtest fork="yes"

        todir="${ reports.tests}">

        <fileset dir="${ src.tests}">

        <include name="**/*Test.java"/>

        </fileset>

        </batchtest>

       </junit>

       DBUnit任务过程中,为了在Junit任务前后控制数据库的状态,我们需要创建一个"setup"操作,在这个操作中种子文件中的数据内容会被插入的数据库中。

       <taskdef name="dbunit"

        classname="org.dbunit.ant.DbUnitTask"/>

       <dbunit driver=" org.gjt.mm.mysql.Driver "

        url=" jdbc:mysql://.0.0.1/hr "

        userid="hr"

        password="hr">

        <operation type="INSERT"

        src="seedFile.xml"/>

       </dbunit>

       ç„¶åŽï¼Œè¿˜éœ€è¦ä¸€ä¸ª"tear

       down"操作,在这个操作中,"setup"操作插入的记录被从目标数据库中删除了。

       <dbunit driver=" org.gjt.mm.mysql.Driver "

        url=" jdbc:mysql://.0.0.1/hr "

        userid="hr"

        password="hr">

        <operation type="DELETE"

        src="seedFile.xml"/>

       </dbunit>

       ç”¨ä¸Šé¢çš„代码来包装JUnit任务,能够在批量测试前有效的装载数据到目标数据库中,并且在测试结束后,将已装载的全部数据删除。

       <taskdef name="dbunit"

        classname="org.dbunit.ant.DbUnitTask"/>

       <!-- set up operation -->

       <dbunit driver=" org.gjt.mm.mysql.Driver "

        url=" jdbc:mysql://.0.0.1/hr "

        userid="hr"

        password="hr">

        <operation type="INSERT"

        src="seedFile.xml"/>

       </dbunit>

       <!-- run all tests in the source tree -->

       <junit printsummary="yes" haltonfailure="yes">

        <formatter type="xml"/>

        <batchtest fork="yes" todir="${ reports.tests}">

        <fileset dir="${ src.tests}">

        <include name="**/*Test*.java"/>

        </fileset>

        </batchtest>

       </junit>

       <!-- tear down operation -->

       <dbunit driver=" org.gjt.mm.mysql.Driver "

        url=" jdbc:mysql://.0.0.1/hr "

        userid="hr"

        password="hr">

        <operation type="DELETE"

        src="seedFile.xml"/>

       </dbunit>

        结论

       èƒ½å¤Ÿåœ¨æµ‹è¯•å‘¨æœŸå†…管理数据库的状态,DBUnit框架的这个功能特性使得测试用例代码的创建和应用的周期大大缩短。而且,通过控制数据库这个主要的依赖对象,使的利用DBUnit框架的的测试更容易自动化。

       DBUnit精妙的设计,使的学习使用它变得很简单。在你的测试方案中,如果你能够正确的使用它,那么带来的将是代码稳定性方面的大幅度增强,当然还会使你的开发团队信心倍增。

急求pb考勤管理系统(pb+access)论文

       文字自己想办法

        一:变量说明

       1:application :

        test

       2:窗体

       login:登陆窗口

        w_main:考勤管理系统的主界面,选择操作

        w_chuli:个人考勤记录处理

       w_shengding:缺勤类型设定

       w_tongji:员工考勤统计

       w_yuangong:员工基本信息

       3:数据窗口

        dw_chuli1:个人考勤记录处理

       dw_shengding:缺勤类型设定

       dw_chuli:员工考勤统计

       w_yuangong:员工基本信息

       二:函数说明

       一:application test中的架源函数

       1. 函数名:test::open( )

       作用:将test这个数据库注册为当前机器的用户的数据源

       代码:

       String ls_odbc //数据库名

       String currdir = Space(), key//数据库“test”的完整路径

       Environment env

       string gs_currdir = GetCurrentDirectory()//得到运行程序的当前路径

       GetEnvironment(env)

       ls_odbc = "test"//数据库名为“test”

       currdir=GetCurrentDirectory() + "\" + ls_odbc + ".mdb"//当前运行程序路径加上数据库名就是数据库“test”的完整路径

       RegistryGet("HKEY_CURRENT_USER\Software\ODBC\ODBC.INI\ODBC Data Sources", ls_odbc, RegString!, key)

       if key="" then

        CHOOSE CASE env.OSType//判断操作系统的类型,注册响应的框框架数据源的驱动

        CASE Windows!//为Windows

        RegistrySet("HKEY_CURRENT_USER\Software\ODBC\ODBC.INI\ODBC Data Sources", ls_odbc, RegString!, "Microsoft Access Driver (*.mdb)")

        CASE WindowsNT!//为WindowsNT

        RegistrySet("HKEY_CURRENT_USER\Software\ODBC\ODBC.INI\ODBC Data Sources", ls_odbc, RegString!, "Driver do Microsoft Access (*.mdb)")

        CASE ELSE

        END CHOOSE

       // 将数据库test注册为用户的数据源

       RegistrySet("HKEY_CURRENT_USER\Software\ODBC\ODBC.INI\" + ls_odbc, "", RegString!, "")

       RegistrySet("HKEY_CURRENT_USER\Software\ODBC\ODBC.INI\" + ls_odbc, "DBQ", RegString!, "" + currdir )

       RegistrySet("HKEY_CURRENT_USER\Software\ODBC\ODBC.INI\" + ls_odbc, "Driver", RegString!, "odbcjt.dll")

       RegistrySet("HKEY_CURRENT_USER\Software\ODBC\ODBC.INI\" + ls_odbc, "DriverId" , ReguLong!, )

       RegistrySet("HKEY_CURRENT_USER\Software\ODBC\ODBC.INI\" + ls_odbc, "FIL" , RegString!, "MS Access;" )

       RegistrySet("HKEY_CURRENT_USER\Software\ODBC\ODBC.INI\" + ls_odbc, "SafeTransactions", RegString!, "0" )

       RegistrySet("HKEY_CURRENT_USER\Software\ODBC\ODBC.INI\" + ls_odbc, "UID" , RegString!, "" )

       end if

       open(login)// 打开登陆窗口

       二:登陆窗口中的函数

       1:函数名:login.open()

        作用:连接到本机器数据源为test的数据库

       代码:

       SQLCA.DBMS = "ODBC"

       SQLCA.AutoCommit = False

       SQLCA.DBParm = "ConnectString='DSN=test;UID=;PWD='"

       connect;

       if sqlca.sqlcode<>0 then

        Messagebox("错误!,无法连接数据库:",sqlca.sqlerrtext)

        halt close

       end if

       2:函数名:cb1。Clicked() 即点击登陆按钮的架源事件

       作用:当用户输入帐号和密码后,判断是框框架否在“操作员表”中 ,存在就打开考勤管理系统主界面

       代码:

       //定义两个变量

       string password,架源游戏公会网站源码usename

       // 数据库连接参数

       //检索用户名和密码记录

        SELECT 操作员表.用户名,

        操作员表.密码

        INTO :usename,

        :password

        FROM 操作员表

        WHERE 操作员表.用户名 = :sle_1.text ;

       //判断用户输入的用户名是否正确

       if sle_1.text="" or sle_2.text="" then

        messagebox("错误!",框框架"用户名或密码不能为空!",架源exclamation!,ok!,2)

       else

       if usename=sle_1.text and password=sle_2.text then

        messagebox("通过验证!",框框架"用户名和密码正确,欢迎您使用本系统!架源",框框架Information!,ok!,2)

        open(w_main)// 打开考勤管理系统主界面

        close(parent)

       else

        messagebox("错误!",架源"用户名或密码错误,请重新输入!框框架",架源exclamation!,ok!,2)

       end if

       end if

       3:函数名:cb2。Clicked() 即点击取消按钮的框框架事件

       作用:关闭窗口

       代码:

       close(parent)

       二:主窗口中的函数

       1:函数名:rb_1。Clicked()

        作用:关闭当前窗口,打开员工基本信息窗口

        代码:open(w_yuangong)

        close(parent)

       2:函数名:rb_2。玖富庄园 源码Clicked()

       作用:关闭当前窗口,打开考勤信息处理窗口

       代码:open(w_chuli)

       close(parent)

       3:函数名:rb_3。Clicked()

       作用:关闭当前窗口,打开缺勤类型设定窗口

       代码:open(w_shengding)

       close(parent)

       4:函数名:rb_4。Clicked()

       作用:关闭当前窗口,打开员工考勤统计窗口

       代码:open(w_tongji)

       close(parent)

       5:函数名:pb_1。Clicked()

        作用:关闭当前窗口

       代码:close(parent)

       三:考勤信息处理窗口中的函数

       1:函数名:open( )

        作用:将数据窗口和数据库连接,并且显示数据库存在的诱导充值源码 2018数据

       代码:dw_1.settransobject(sqlca)

       dw_1.retrieve()

       2:函数名:pb_1。Clicked()

       作用:插入一条新记录

       代码:dw_1.insertrow(0)

       3:函数名:pb_2。Clicked()

       作用:删除一条当前记录

       代码:dw_1.deleterow(0)

       4:函数名:pb_3。Clicked()

       作用:向数据库提交插入,删除和修改的操作,如果成功就发到数据库

       代码:

       integer returncode

        returncode=dw_1.update()

        if returncode>0 then

        commit using sqlca;

        else

        rollback using sqlca;

        end if

       4:函数名:pb_4。Clicked()

       作用:关闭当前窗口,回到主界面

       代码:

       open(w_main)

       close(parent)

       四:缺勤类型设定窗口中的函数

       1:函数名:open( )

        作用:将数据窗口和数据库连接,并且显示数据库存在的web源码地图数据数据

       代码:dw_1.settransobject(sqlca)

       dw_1.retrieve()

       2:函数名:pb_1。Clicked()

       作用:插入一条新记录

       代码:dw_1.insertrow(0)

       3:函数名:pb_2。Clicked()

       作用:删除一条当前记录

       代码:dw_1.deleterow(0)

       4:函数名:pb_3。Clicked()

       作用:向数据库提交插入,删除和修改的操作,如果成功就发到数据库

       代码:

       integer returncode

        returncode=dw_1.update()

        if returncode>0 then

        commit using sqlca;

        else

        rollback using sqlca;

        end if

       4:函数名:pb_4。Clicked()

       作用:关闭当前窗口,回到主界面

       代码:

       open(w_main)

       close(parent)

       五:员工基本信息窗口中的函数

       1:函数名:open( )

        作用:将数据窗口和数据库连接,并且显示数据库存在的网络兼职报名源码数据

       代码:dw_1.settransobject(sqlca)

       dw_1.retrieve()

       2:函数名:pb_1。Clicked()

       作用:插入一条新记录

       代码:dw_1.insertrow(0)

       3:函数名:pb_2。Clicked()

       作用:删除一条当前记录

       代码:dw_1.deleterow(0)

       4:函数名:pb_3。Clicked()

       作用:向数据库提交插入,删除和修改的操作,如果成功就发到数据库

       代码:

       integer returncode

        returncode=dw_1.update()

        if returncode>0 then

        commit using sqlca;

        else

        rollback using sqlca;

        end if

       4:函数名:pb_4。Clicked()

       作用:关闭当前窗口,回到主界面

       代码:

       open(w_main)

       close(parent)

       六:员工考勤统计窗口中的函数

       1:函数名:open( )

        作用:将数据窗口和数据库连接,并且显示数据库存在的数据

       代码:dw_1.settransobject(sqlca)

       dw_1.retrieve()

       2:函数名:ddlb_1。Selectchange()

        作用: 改变数据窗口中数据的大小

       代码:dw_1.modify('DataWindow.Zoom = '+ trim(ddlb_1.text))

       3:函数名:cb1。Clicked()

        作用: 回到数据窗口中上一页

       代码:dw_1.scrollpriorpage()

       4:函数名:cb2。Clicked()

        作用: 回到数据窗口中下一页

       代码:dw_1.scrollnextpage()

       5:函数名:cb3。Clicked()

        作用: 打印数据窗口

       代码:dw_1.print()

       6:函数名:cb4。Clicked()

        作用: 打印设置

       代码:printsetup()

       7:函数名:cb5。Clicked()

        作用: 打印预览

       代码:

       dw_1.Modify("DataWindow.Print.Orientation = '1'") //横向

       dw_1.Modify("DataWindow.Print.Orientation = '2'") //纵向

       dw_1.Modify("DataWindow.Print.Preview = yes")

       dw_1.Modify("DataWindow.Print.Preview.Rulers = yes")

       dw_1.modify('DataWindow.Print.Preview.Zoom = '+ trim(ddlb_1.text))

       8:函数名:cb5。Clicked()

        作用: 打印预览

       9:函数名:ddlb_2。Selectchange()

        作用: 改变打印预览窗口的大小

       代码:

       dw_1.modify('DataWindow.Print.Preview.Zoom = '+ trim(ddlb_2.text))

       :函数名:cb6。Clicked()

        作用: 将数据窗口中的数据保存为表格形式的文件

       代码:string ls_path, ls_file

        int li_rc

        ls_path = sle_1.Text

        li_rc = GetFileSaveName ( "Select File", ls_path, ls_file, "xls", "*.xls,*.xls" )

       //得到路径名

        IF li_rc = 1 Then

        OLEObject ole_object , ole_workbooks

       ole_object = CREATE OLEObject

       //创建Excel对象

       IF ole_object.ConnectToNewObject("Excel.Application") <> 0 THEN

        MessageBox('OLE错误','OLE无法连接!')

        return

       END IF

       ole_object.workbooks.add

       ole_object.Visible = True

       ole_workbooks = ole_object.Worksheets(1)

       ole_workbooks.cells(1,1).value="员工号"

       ole_workbooks.cells(1,2).value="时间"

       ole_workbooks.cells(1,3).value="天数"

       ole_workbooks.cells(1,4).value="类型"

       ole_workbooks.cells(1,5).value="原因"

       long l_row

       for l_row = 2 to dw_1.rowcount()+1

        ole_workbooks.cells(l_row,1).value=dw_1.getitemstring(l_row - 1,1)

        ole_workbooks.cells(l_row,2).value=dw_1.getitemstring(l_row - 1,2)

        ole_workbooks.cells(l_row,3).value=dw_1.getitemstring(l_row - 1,3)

        ole_workbooks.cells(l_row,4).value=dw_1.getitemstring(l_row - 1,4)

        ole_workbooks.cells(l_row,5).value=dw_1.getitemstring(l_row - 1,5)

       next

       ole_workbooks.SaveAs ( ls_path)

       ole_object.quit()

       Ole_Object.DisConnectObject()

       Destroy Ole_Object

       destroy ole_workbooks

       messagebox("!","文件保存到"+ ls_path)

        End If

       :函数名:sel。modify()

        作用: 将数据窗口中的数据按输入的员工号显示

       代码:

       string emp_no

       string condition

       if sle_1.text <> "" then

        emp_no=trim(sle_1.text)

        condition="emp_no="+"'"+ emp_no+"'"

        dw_1.setfilter( condition)

        filter(dw_1)

        dw_1.retrieve()

       end if

系统垃圾清理代码方法

       1、win7系统下点击电脑屏幕左下角开始所有程序附件记事本,然后把下面的蓝色代码复制进去:

       @echo off

       echo 正在进行系统垃圾清除,请耐心等待......

       del /f /s /q %systemdrive%*.tmp

       del /f /s /q %systemdrive%*._mp

       del /f /s /q %systemdrive%*.log

       del /f /s /q %systemdrive%*.gid

       del /f /s /q %systemdrive%*.chk

       del /f /s /q %systemdrive%*.old

       del /f /s /q %systemdrive% ecycled*.

*

       del /f /s /q %windir%*.bak

       del /f /s /q %windir%prefetch*.

*

       rd /s /q %windir% emp md %windir% emp

       del /f /q %userprofile%cookies*.

*

       del /f /q %userprofile% ecent*.

*

       del /f /s /q %userprofile%Local SettingsTemporary Internet Files*.

*

       del /f /s /q %userprofile%Local SettingsTemp*.

*

       del /f /s /q %userprofile% ecent*.

*

       echo 清除系统垃圾完成!

       echo. pause

       2、将上面的代码完成复制后,点击文件,另存为

       3、在弹出的另存为窗口中,先单击桌面,在保存类型下拉菜单中选择所有类型(*.*),并在文件名处输入源代码一键系统垃圾清理.bat,然后点击保存。

       4、此时在电脑桌面上就能够看到源代码一键系统垃圾清理.bat文件然后双击它。

       5、耐心等待程序清除系统垃圾清理完成。