




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
PowerBuilder的创始人米歇尔克茨曼。PowerBuilder奠基人大卫李特瓦克。1991年6月。Powersoft公司发布了其旗标式客户/服务器硬功开发工具。年PowerBuilder1.0年PowerBuilder5.02003年PowerBuilder9.0PowerBuilder特点:面向对象的编程和时间去懂的应用开发程序开发工具,支持跨平台开发可以轻松编写语句人性化设计。拥有独特的库文件画板和层次清晰的系统资源库。提供了丰富多样不同风格的数据窗口PowerBuilder9.0新特性。支持快速开发的jsp编辑器。支持xml、PBNI(PowerBuilderNativeInterface)sEJBClient、PB9.0与WebService的关系,PB9.0与.NET、其他增强功能。建立应用对象建立Student的工作区和目标,然后建立一个名为student的对象在其Open事件中加入如下脚本://设置SQLCA的属性,利用名为pbexam的数据源连接数据库SQLCA.DBMS="ODBC”SQLCA.AutoCommit=FalseSQLCA.DBParm="Connectistring='DSN=pbexam'HCONNECTUSINGSQLCA;〃打开登录窗口open(w_register)在应用程序的Close事件中加入如下脚本:〃断开数据库连接DISCONNECTUSINGSQLCA;登录窗口在用户名的单行编辑框的ue_enterkey事件中加入如下脚本:〃判断用户是否按下回车Ifkey=KeyEnter!Then〃把输入焦点转移到"密码"单行编辑框sle_2.SetFocus()EndIf在密码单行编辑框的ue_enterkey事件中加入如下脚本:Ifkey=KeyEnter!Then〃触发登录按钮的Clicked事件cb_1.TriggerEvent(Clicked!)EndIf在登录按钮的Clicked事件的脚本中加入如下脚本:Stringpassword,right〃用SQL语句根据用户名查找密码//right为一全局变量,用来保存用户权限SELECTmm,qxINTO:password,rightFROM"yh"WHERE"yh"."hm"=:sle_1.text;//SQLCode等于100代替没有得到任何记录。IfSQLCA.SQLCode=100ThenMessageBox("提示消息","没有此用户”)sle_1.text=""sle_1.SetFocus()ElseIfpassword<>sle_2.textThenMessageBox("提示信息","密码错误!")sle_2.text=""sle_2.SetFocus()Else〃打开主窗口,关闭登录窗口Open(w_main)Close(Parent)EndIf在取消按钮的Clicked事件的中加入如下脚本:Close(parent)//关闭登录窗口菜单设计c=cked«丰廿君>君7|童#含斗*rtffiw口opensheeKW—srudenLW—mamfeffl用回沛W»-Bssc=cked«丰-#11口>君7|童#windowadsheer-l-adsheernw—mam.GetAdJvesheeoI尊涎Dfl理»口sue—pageser-l-*^acrsheer.TriggerEvenlnue—pageselafflI置3l»l-BlslsIc=cked«I丰廿君>lnlTwl#Iwindowadsheer-l-adsheernw—mam.GetAdJvesheeoacrsheer.TriggerEvenlnue—prmlaffllisEEl»l-BlslsIc=cked«I丰廿君>lnlTwl#Icose(pareMwmdow)fflw口®®»-Bssc=cked«丰-#11口>n-7lw#1«沼»*昏®-#^卯mL.三an.checkedHTruem—chongdp'checkedHFa_sem—shuipmg.checkednFa-sem—chuizhLcheckedHFa_se、柬沼H奋»s果湮K丹pareMwmdow.Arrangesheescascade一)fflw口M»»-Bssc=cked«丰-#11口>n7lw#mL.三an.checkedHFa_sem—chongdie.checkedHTruem—shuipmg.checkednFa-sem—chuizhLcheckedHFa_separeMwmdowl>rrangesheers(Layen)fflw口兴书»-Bssc=cked«丰-#11口>n7lw#mL.三an.checkedHFa_sem—chongdp'checkedHFa_sem—shuipmg.checkednTruem—chuizhLcheckedHFa_separeMwmdow.Arrangesheers(T=e一)fflw口fflw»-Bssc=cked«丰-#11口>n-7lw#mL.三an.checkedHFa_sem—chongdp'checkedHFa_sem—shuipmg.checkednFa-sem—chuizhLcheckednTrueParentWindow.ArrangeSheets(TileHorizontal!)在个人成绩统计菜单项的Clicked事件中加入如下脚本:〃打开专业选择窗口,并把统计的类型作为参数传递给专业选择窗口OpenWithParm(wselectzy,"person”,wmain)MDI主窗口在主窗口的Open事件中加入如下脚本:〃如果不是系统管理员则屏蔽用户管理菜单项Ifright<>1thenm_main.m_file.m_id.visible=False〃因为打开主窗口后还没有打开任何工作表,所以把和工作表相关的功能菜单的Enabled属性设为falsem_main.m_file.m_pageset.enabled=Falsem_main.m_file.m_preview.enabled=Falsem_main.m_file.m_previewcancle.enabled=Falsem_main.m_file.m_print.enabled=Falsem_main.m_edit.m_insert.enabled=Falsem_main.m_edit.m_del.enabled=Falsem_main.m_edit.m_save.enabled=Falsem_main.m_edit.m_append.enabled=Falsem_main.m_edit.m_retrieve.enabled=Falsem_main.m_edit.m_prior.enabled=Falsem_main.m_edit.m_next.enabled=Falsem_main.m_edit.m_first.enabled=Falsem_main.m_edit.m_last.enabled=Falsem_main.m_caozuo.m_select.enabled=Falsem_main.m_caozuo.m_find.enabled=Falsem_main.m_caozuo.m_sortasc.enabled=Falsem_main.m_caozuo.m_sortdesc.enabled=Falsem_main.m_window.m_jilian.enabled=Falsem_main.m_window.m_chongdie.enabled=Falsem_main.m_window.m_shuiping.enabled=Falsemmain.mwindow.mchuizhi.enabled=False学生管理窗口在学生管理窗口的Open事件中加入如下脚本:〃为数据窗口分配事务对象,并检索数据dw_stu.SetTransObject(SQLCA)dw_stu.Retrieve)_〃用静态文本显示当前日期st1.text=string(today(),"yyyy/mm/dd")在查询按钮的Clicked事件中加入如下脚本:Ifsle_1.text=""Then〃如果没有输入查询关键字提示输入MessageBox("提示","请输入您要查询的关键字")sle_1.SetFocus()Else〃按输入的姓名查询,并用like事件模糊查询dw_stu.setFilter("xmlike'%"+sle_1.text+"%”')dw_stu.filter()dw_stu.SetFocus()EndIf在学生管理窗口的Activate事件中加入如下脚本:〃此事件在当前窗口获得焦点时触发〃如果当前用户不是系统管理员和数据管理员则屏蔽和数据修改有关的菜单项Ifright>2Thenm_main.m_edit.m_insert.enabled=Falsem_main.m_edit.m_del.enabled=Falsem_main.m_edit.m_save.enabled=Falsem_main.m_edit.m_append.enabled=FalseElsem_main.m_edit.m_insert.enabled=Truem_main.m_edit.m_del.enabled=Truem_main.m_edit.m_save.enabled=Truem_main.m_edit.m_append.enabled=TrueEndIf〃在当前窗口得到焦点后设置菜单项的enabled属性为True〃在窗口得到焦点时使用菜单项即可m_main.m_file.m_pageset.enabled=Truem_main.m_file.m_preview.enabled=Truem_main.m_file.m_previewcancle.enabled=Truem_main.m_file.m_print.enabled=Truem_main.m_edit.m_retrieve.enable=Turem_main.m_edit.m_prior.enable=Turem_main.m_edit.m_next.enable=Turem_main.m_edit.m_first.enable=Turem_main.m_edit.m_last.enable=Turem_main.m_caozuo.m_select.enabled=Truem_main.m_caozuo.m_find.enabled=Truem_main.m_caozuo.m_sortasc.enabled=Truem_main.m_caozuo.m_sortdesc.enabled=Truem_main.m_window.m_jilian.enabled=Truem_main.m_window.m_chongdie.enabled=Truem_main.m_window.m_shuiping.enabled=Truem_main.m_window.m_chuizhi.enabled=True在学生管理窗口的CloseQuery事件中加入如下脚本:Integeri〃判断是否有数据的修改Ifdw_stu.ModifiedCount()+dw_stu.DeletedCount()>oTheni=MessageBox("提示","是否保存对数据的修改?",Exclamation!,YesNoCancel!)Choosecaseicase1〃保存数据Ifdw_stu.UpDate()=1Then〃如果保存成功则提交COMMIT;ElseROLLBACK;MessageBox("错误","数据库内容更新失败”)EndIfcase2〃不保存数据Return0case3〃阻止窗口的关闭Return1EndChooseEndIf在学生管理窗口的Resize事件中加入如下脚本:〃此事件在窗口改变大小时触发〃修改数据窗口的控件的位置及大小,使其随窗口的大小的改变而改变dw_stu.x=10dw_stu.y=150//newwidth和newheight为该事件传递的参数,代表窗口的新宽度和高度dw_stu.width=newwidth-20dw_stu.height=newheight-160在学生管理窗口的ue_append事件中加入如下脚本:〃事件追加功能Longtherow〃在数据窗口最后一行插入therow=dw_stu.insertrow(0)〃滚动到新加入的行dw_stu.ScrollToRow(therow)dw_stu.SetFocus()在学生管理窗口的ue_del事件中加入如下脚本:〃实现删除功能Integeri,mm=0Longtherowi=MessageBox("提示信息","确认要删除行?",exclamation!,YesNoCancel!)Ifi=1Then〃如果当前数据窗口中选择了多行则用循环语句删除多行Do〃因为如果删除了第3行,那么原来第四行就变成了现在的第三行〃所以要把搜索的行号减1therow=dw_stu.GetSelectedRow(therow-1)Iftherow<>0Thenm=1dw_stu.DeleteRow(therow)EndIfLoopWhiletherow<>0〃如果没有选中多行则删除当前行Ifm=0Thendw_stu.DeleteRow(0)EndIfEndIfdw_stu.SetFocus()在学生管理窗口的ue_filter事件中加入如下脚本:〃实现查询功能,打开查询窗口,并把数据窗口dw_stu作为参数传递过去,〃可以使用多个窗口功用一个查询窗口OpenWithParm(w_filter,dw_stu,w_student)在学生管理窗口的ue_find事件中加入如下脚本:〃实现查询功能,打开查询窗口,并把数据窗口dw_stu作为参数传递过去,〃可以使用多个窗口功用一个查询窗口OpenWithParm(w_filter,dw_stu,w_student)在学上管理窗口的ue_first事件中加入如下脚本:〃滚动至U第一行,实现最前一个的功能dw_stu.ScrollToRow(1)dw_stu.SetFocus()在学上管理窗口的ue_insert事件中加入如下脚本:〃实现插入功能Longtherow,therow1〃得到当前数据窗口当前行,并在当前行前面插入therow=dw_stu.GetRow()therow1=dw_stu.InsertRow(therow)dw_stu.SetRow(therow1)dw_stu.SetFocus()在学上管理窗口的ue_last事件中加入如下脚本:〃滚动到最后一行,实现最后一的功能Longtherowtherow=dwstu.RowCount()dw_stu.ScrollToTow(therow)dw_stu.SetFocus()在学上管理窗口的ue_next事件中加入如下脚本:〃滚动到下一行,实现下一个功能dw_stu.ScrollPriorRow()dw_stu.SetFocus()在学上管理窗口的ue_prior事件中加入如下脚本:〃滚动到上一行,实现上一个的功能dw_stu.ScrollPriorRow()dw_stu.SetFocus()在学上管理窗口的ue_pageset事件中加入如下脚本:〃实现页面设置功能,打开页面设置窗口,并把数据窗口dw_stu作为参数传递过去,〃可以使多个窗口共用一个页面设置窗口OpenWithParm(w_pageset,dw_stu,w_student)在学上管理窗口的ue_preview事件中加入如下脚本:〃实现打印预览功能,打开打印预览窗口,并把数据窗口dw_stu作为参数传递过去〃可以使多个窗口功用一个打印预览窗口OpenWithParm(w_preview,dw_stu,w_student)在学生管理窗口的ue_previewcancle事件中加入如下脚本:〃取消数据窗口的预览模式dw_stu.modify("datawindwo.print.preview=No")dw_stu.SetFocus()在学生管理窗口的ue_print事件中加入如下脚本:〃实现打印预览功能,打开打印预览窗口,并把数据窗口dw_stu作为参数传递过去,〃可以使多个窗口功用一个打印预览窗口OpenWithParm(w_pageset,dw_stu,w_student)在学生管理窗口的ue_retrieve事件中加入如下脚本:〃实现检索功能,把过滤条件设置为空,并重新检索数据dw_stu.setFilter("")dw_stu.SetSort("")dw_stu.SetTransObject(SQLCA)dw_stu.Retrieve()dw_stu.SetFocus()在学生管理窗口的ue_save事件中加入如下脚本:〃实现保存功能Ifdw_stu.UpDate()=1ThenCOMMIT;ElseROLLBACK;MessageBox("错误","数据库内容更新失败”)EndIf在学生管理窗口的ue_sortasc事件中加入如下脚本:〃实现升序的功能Stringls_ColumnName〃得到数据窗口中当前列的列名Is_ColumnName=dw_stu.GetCOlumnName()IfIs_ColumnName<>""Thendw_stu.SetSort(Is_ColumnName+"A")dw_stu.Sort()ElseMessageBox("提示","请您点击数据窗口中的某一列,将此列按升序排列")EndIf在学生管理窗口的ue_sortdesc事件中加入如下脚本:〃实现降序的功能StirngIs_ColumnNameIs_ColumnName=dw_stu.GetColumnName()IfIs_ColumnName<>""Thendw_stu.SetSort(Is_ColumnName+"D")dw_stu.Sort()ElseMessageBox("提示","请您点击数据窗口中的某一列,将此列按升序排列")EndIf在数据窗口控件dw_stu的Clicked事件中加入如下脚本:〃通过单击可以选择一行或多行Longtherow,startrow,endrowIfKeyDown(KeyControl!)Then//如果按着Ctrl键则使点击的行被选择Ifrow>0Then//row是系统传递到Clicked事件的参数,代表当前鼠标点击的行〃事件的参数可以在脚本编辑器的"PasteArgument”下拉列表框中查看this.SelectRow(row,True)ElseReturnEndIf曰seIfkeyDown(keyShift!)Then//如果按着shift键则选择一定范围内的行startrow=this.GetRow()endrow=rowIfstartrow>endrowThenFortherow=startrowToendRowStep-1this.SelectRow(therow,True)NextElseFortherow=startrowToendrowthis.SelectRow(therow,True)NextEndIfElse〃如果没有按Ctrl和Shift键,则取消选中状态this.SelectRow(0,False)EndIf在数据窗口控件dw_stu的DBError事件中加入如下脚本:〃用自己的错误提示来屏蔽某些系统的错误提示ChoosecaseSQLDBCode//SQLAnywhere8.0主码重复的错误脚本为-193〃可以特意发生错误从而得到数据库管理系统的特定的错误脚本case-193MessageBox("提示信息","第"+string(row)+&‘'行学生编号重复",Exclamation!,OK!)ScrollToRow(row)Return1EndChooseReturn0在数据窗口控件dw_stu的DoubleClicked事件中加入如下脚本://双击打开成绩管理窗口,显示该学生的成绩StringExpression〃得到当前行的学号,并拼出成绩的窗口的数据的过滤条件Expression=Hxk_xh=m+this.object.xh[row]+"”'OpenSheetWithParm(w_score,Expression,w_main,4)在数据窗口控件dw_stu的RetrieveEnd事件中加入如下脚本:〃此事件在数据检索完成后处罚IntegerColIndex,ColNumIfright>2Then〃如果不是系统管理员和数据管理员则通过把列对象的Order//设为0来阻止对数据的修改ColNum=integer(this.describe("datawindow.column.count"))ForColIndex=1ToColNumthis.SetTabOrder(ColIndex,0)NextEndIf在数据窗口控件dw_stu的ue_enterkey事件中加入如下脚本:LongtherowIfthis.AcceptText()<0ThenReturn1EndIfIfr-l-his.Gerco-umn()HLOng(rhisbbjecLda5Twmdwo.co-umnhOUM)ThenIfr-l-his.GaROWOHMRowCounorhenr-l-herownr-l-his.Insertrow(o)send(Hand_e(ws)、256BLOrlg(oo)wffill^HHfflidE®}lzl廿婚-71Tabwr-l-zs.sco=TOROW(rherow)r-l-his.se-eQROWpFa-se)c-l-zs.se-eQROW宇erowHrue)r-l-zs.serco-umn(l)ReEn1EndIfEndIfsend(Hand_e(rzs)r256BLOng(oo))Rer-l-urn1田^^/\幽口ffllwia婚ffisc=cked«丰廿君>君7|童#SMngkhIfs-e—l.r-l-exr-l-七三Ands-e—Nr-l-exr-l-七三ThenMessageBOXCs渊弋#®>®mlwias*w地)s-e—l.serFOCUS()E-selfs-e—l.r-l-exr-l-七三ThenSELECTkhINTQkhFROM=kc=WHERE=kc==km=HS_e—2.E>$;IfSQLCA.SQLCOde&sIThenMessageBOXCs渊ffiF*-z®ffi»-#^l4nffl兵®ffi=)s_e—2iexr-l-n==s-3—2.serFOCUS()E-sedw—scorpseM商r(=xk—khn=+kh+三=)dw—score.F=rer()dw—score.serFOCUS()EndIfE-selfs-e—Nr-l-exr-l-七三Thendw—score.serF=rer(=xslxmn=+s_e—liexr+-==)dw—score.F=rer()dw—score.serFOCUS()E-seSELECTkhINTQkhFROM=kc=where=kc==km=HS-e—2ie>$;IfSQLCA.SQLCode=100ThenMessageBox("提示信息","课程表中不存在此课程”)sle_2.text=""sle_2.SetFocus()Else〃设置过滤条件,查询时既输入了姓名也输入了课程名dw_score.SetFilter("xk_kh=”'+kh+"'and"+"xs_xm=”'+sle_1.text+"”')dw_score.Filter()dw_score.SetFocus()EndIfEndIf在数据窗口控件dw_score的ItemChanged事件中加入如下脚本,用来完成对当前输入学生学号时,自动从学生基本情况表中找到该学生的姓名,并填入姓名列表中。Stringxm〃判断是否在修改学号列I="xk_xh"Then〃根据学号从学生基本情况表中查找学生姓名SELECTxmINTO:xmFROM"xs"WHERE"xs”.”xh"=:data;IfSQLCA.SQLCode-100ThenMesssageBox("错误”,'该学号在学生表中不存在!”)Else〃设置姓名列的内容this.object.xs_xm[row]=xmEndIfEndIf页面设置窗口在页面设置窗口的Open事件中加入如下脚本:StringszDescribe〃获得传递过来的数据窗口参数i_dwToAct=Message.PowerObjectParm〃获得当前数据窗口的页边框dzDwscribe=i_dwToActOn.Desctibe("DataWindow.Print.Margin.Bottom")em_bottom.Text=szDescribedzDwscribe=i_dwToActOn.Desctibe("DataWindow.Print.Margin.Left")em_left.Text=szDescribedzDwscribe=i_dwToActOn.Desctibe("DataWindow.Print.Margin.Right")em_right.Text=szDescribedzDwscribe=idwToActOn.Desctibe("DataWindow.Print.Margin.Top")em_top.Text=szDescribe在确定按钮的Clicked事件中加入如下脚本:Decimlbottom,left,right,topStringszModify,szReturn〃拼写设置页边距的字符串Ifem_bottom.GetData(bottom)=1ThenszModify=szMOdify+"datawindow.print.margin.bottom="+string(bottom)EndIfIfem_left.GetData(left)=1ThenszModify=szMOdify+"datawindow.print.margin.left="+string(left)EndIfIfem_right.GetData(right)=1ThenszModify=szMOdify+"datawindow.print.margin.bottom="+string(right)EndIfIfem_top.GetData(top)=1ThenszModify=szMOdify+"datawindow.print.margin.bottom="+string(top)EndIfszModify=Trim(szModify)〃设置数据窗口的页边距szReturn=i_dwTOActOn.Modify(szModify)IfszReturn<>""ThenMessageBox("错误","边框设置错误!”+"~n"+szReturn)ReturnEndIfClose(Parent)在取消按钮的Clicked事件中加入如下脚本:Close(Parent)打印预览窗口在打印预览窗口的Open事件中加入如下脚本:〃取得传递的数据窗口参数i_dwToActOn=Message.PowerObjectParm在掩码编辑框em-custom的Modified事件中加入如下脚本:〃把"自定义"单选按钮设置为选中状态rb_custom.checked=True在确定按钮的Clicked事件中加入如下脚本:StringsZoom,szReturn,szModify〃取得预览比例Ifrb_200p.checked=TrueThensZoom="200”ElseIfrb_100p.checked=TrueThensZoom="100”ElseIfrb50p.checked=TrueThensZoom="50”Elselfrb_33p.checked=TrueThensZoom="33”ElseIfrb_custom.checked=TrueThensZoom=em_custom.textEndIf〃拼写修改数据窗口预览设置的字符串szModify=szModify+"datawindow.print.preview.zoom="+sZoom〃把数据窗口的预览状态置为真szModify=szModify+"datawindow.print.preview=YES”Ifcbx_rulers.checked=TrueThenszModify=szModify+"datawindow.print.preview.rulers="+"YES"ElseszModify=szModify+"datawindow.print.preview.rulers="+"NO”EndIfszMOdify=Trim(szModify)〃修改数据窗口预览设置szReturn=i_dwtoaction.modify(dzModify)IfszReturn<>""Thenmessagebox("错误","打印预览失败!")ReturnEndIfClose(Parent)打印设置窗口在打印设置窗口的Open事件中加入如下脚本:StringszCopiesi_dwToActOn=Message.PowerObjectParm〃取消当前使用打印机的型号st_current_printer.text=”当前打印机:"+&String(i_dwToActOn.Object.DataWindow.Printer)〃取消当前数据窗口的打印份数IfszCopies=String(i_dwToActOn.Object.DataWindow.Print.Copies)〃设置初试打印份数IfszCopies<>""AndszCopies<>"0"Thenem_copies.Text=szCopiesElseem_copies.Text="1”EndIf〃如果当前数据窗口的打印份数校验取值为"YES”,则设置"校验拷贝”复选框〃的Checked为True(选中状态),否则设为Falsecbx_collate.Ckecked=(Upper(String(&i_dwToActOn.Object.DataWindow.Print.Collate))="YES")〃初始化下拉列表的默认选项ddlbrangeinclude.SelectItem(1)在全部单选按钮(rb_all_page)的Clicked事件中加入如下脚本:〃清空选择页面后面单行列表框中的内容sle_page_range.text=""在当前页单选按钮(rb_current_page)的Clicked事件中加入如下脚本:sle_page_range.text=""在"选择页码"单选按钮(rb_page)的Clicked事件中加入如下脚本:Ifthis.CheckedThen〃点击该单选按钮后使单行编辑框获得焦点sle_page_range.SetFocus()EndIf在单行编辑框(sle_page_range^Modified事件中加入如下脚本:〃使"选择页码"单选按钮成为当前选项rb_pages.checked=True在确定按钮的Clicked事件中加入如下脚本:IntegernIndexStringszPage,szModify,szReturnDecimalsCopies〃取得掩码编辑框的内容,即打印份数em_copies.getdata(sCopies)〃下面不但拼写szModify字符,用来保存打印属性的设置〃在字符串中保存打印份数属性smModify="DataWindow.Print.Copies="+string(scopies)〃保存打印校验属性Ifcbx_collate.CheckedThenszModify=szModify+"DataWindow.Print.Clooate=Yes"ElseszModify=szModify+"dataWindow.Print.Collate=No”EndIfIfrb_all_page.CheckedThen〃保存打印全部页码szModify=szModify+"DataWindow.Print.Page.Range="ElseIfrb_current_page.CheckedThen〃保存打印但前页码szPage=i_dwToActOn.Describe("Evaluate('Page()',"+&String(i_dwToActOn.GetRow())+")”)szModify=szModify+HDataWindow.Print.Page.Range='HszPage+H'HElse〃保存打印用户输入的页码szModify=szModify+"DataWindow.Print.Page.Range=”'+&sle_page_range.text+EndIf〃取得用户在下拉列表框中所选项的索引值nIndex=ddlb_range_include.FindItem(ddlb_range_include.Text,0)〃保存希望打印页的页号szModify=szModify+"DataWindow.Print.Page.RangeInclude="+String(nIndex-1)szModify=Trim(szModify)〃修改数据窗口的打印设置szReturn=i_dwToActOn.Modify(szModify)IfszReturn<>""ThenMessageBox("错误","打印参数设置失败!")ReturnEndIfParent.Visible=False〃打印数据窗口i_dwToActOn.Print()this.SetFocus()Close(Parent)在取消按钮中加入如下脚本:Close(Parent)打印机设置按钮中加入如下脚本:PrintSetup()查询窗口在查询窗口中声明如下的实例变量:s_colinfocolinfo[]〃保存列注释、名称和数据类型的数组IntegerColCount〃保存当前数据窗口中列的数目Stringthelogic//保存当前选择的逻辑关系StringExpression〃保存查询表达式datawindowi_dwToActOn〃保存传递过来的数据窗口在查询窗口的Open事件中加入如下脚本:Integerithelogic=""i_dwToActOn=Message.PowerObjectParm〃取得当前数据窗口的列的数据ColCount=Integer(i_dwToActOn.Object.DataWindow.Column.Count)Fori=1ToColCount〃取得并保存列的简单注释、名称和数据类型colinfo[i].colname=i_dwToActOn.Describe("#"+string(i)+”.Name")colinfo[i].coltag=i_dwToActOn.Describe("#"+string(i)+".Tag")colinfo[i].coltype=left(idwToActOn.Describe("#"+string(i)+”.ColType"),4)〃在列选择下拉列表中添加项ddlb_1.additem(i_dwToActOn.Describe("#"+string(i)+".Tag"))Next〃初始化,把and默认的逻辑关系rb_1.Checked=Trueddlb_1.selectiem(1)在添加按钮的Clicked事件中加入如下脚本:Stringthecol,valIntegeri〃取得用户选择的列和用户输入的具体查询条件thecol=ddlb_1.textval=sle_1.text〃从数组中查找用户选择的列在数组中的位置Fori=1ToColCountIfthecol=colinfo[i].coltagThenexitNext〃根据列的数据类型,拼不同的查询字符串ChooseCasecolinfo[i].coltypeCase"char"〃拼写查询字符串Expression=Expression+thelogic+colinfo[i].colname&+ddlb_2.text+"”'+val+Case"deci","long","numb","real"〃判断用户输入是否为数值IfIsNumber(sle_1.text)ThenExpression=Expression+thelogic+colinfo[i].colname&+ddlb_2.text+valElseMessageBox("错误","请输入数值作为条件”)sle_1.text=""sle_1.SetFocus()ReturnEndIfCase"date"〃格式化用户的输入为具体的日期格式val=String(Date(val),"yyyy-mm-dd")Expression=Expression+thelogic+colinfo[i].colname&+ddlb_2.text+valEndChoose〃根据用户的选择设置逻辑关系Ifrb_1.CheckedThenthelogic="And"Elsethelogic="Or"EndIf〃在多行编辑框中显示查询字符串mle1.text=Expression在查询按钮的Clicked事件中加入如下脚本:〃设置过滤条件i_dwtoacton.SetFilter(mle_1.text)i_dwtoacton.Filter()Close(Parent)在取消按钮中加入如下脚本:Close(Parent)查选窗口在查询窗口中声明如下的实例变量:s_colinfocolinfo[]〃保存列注释、名称和数据类型的数组IntegerColCount〃保存当前数据窗口中列的数目datawindowi_dwToActOn〃保存传递过来的数据窗口Longrow=0〃保存当前查选的其实行在窗口的Open事件中加入如下脚本:Integerii_dwToActOn=Message.PowerObjectParmColCoutn=Integer(i_dwToActOn.Object.DataWindow.Column.Count)Fori=1ToColCountcolinfo[i].colname=i_dwToActOn.Describe("#"+string(i)+”.Name")colinfo[i].coltag=i_dwToActOn.Describe("#"+string(i)+".Tag")colinfo[i].coltype=left(i_dwToActOn.Describe("#"+string(i)+”.ColType"),4)ddlb_1.additem(i_dwToActOn.Describe("#"+string(i)=".Tag"))Next〃取得当前行row=i_dwtoactin.GetRow()ddlb_1.SelectIten(1)在查询按钮的Clicked事件中加入如下脚本:BooleanFindToEndStringthecol.Expression,valIngegeri〃取得用户选择的列thecol=ddlb_1.textIfsle_FindWord.text=""ThenMessageBox("提示","请输入您要查询的关键字")sle_FindWord.SetFocus()ReturnEndIfval=sle_FindWord.text〃获得用户选择的列在数组中的位置Fori=1ToColCountIfthecol=colinfo[i].coltagThenexitNext〃确定查找方向Ifrb_back.Checked=TrueThenFindToEnd=TrueElseIfrb_prior.Checked=TrueThenFineToEnd=FalseEndIf〃若是第二次查找,则把"查找"按钮的标题改为"查找下一个",并取消上次查找行的选中状态This.Text="查找下一个"i_dwtoaction.SelectRow(row.False)〃根据数据类型的不同拼写查找字符串ChooseCasecolinfo[i].coltypeCase"char"Expression=colinfo[i].colname+"='"+val+"'"Case"deci","long","numb","real"IfIsNumber(val)ThenExpression=colinfo[i].colname+"="+valElseMessageBox("错误","请输入作为查询条件”)sle_FindWord.text=""sle_FindWord.SetFocus()ReturnEndIfCase"date"val=String(Date(val),"yyyy-mm-dd")Expression=colinfo[i].colname+"="+valEndChooseIfFindToEnd=TrueThen〃从前向后查找,从当前往后查找因此row++row++//如果row大于当前数据窗口的总行数,向下越界,把row设为0Ifrow<=i_dwtoaction.RowCount()Thenrow=i_dwtoaction.Find(Expression,row,i_dwtoaciton.RowCount())Elserow=0EndIfElse〃从后向前查找,从但前行往前查找因此row--row--〃如果row小于1,向上越界,把row设为0Ifrow<1Thenrow=0Elserow=i_dwtoaction.Find(Expression,row,0)EndIfEndIFIfrow=0ThenMessageBox("警告",”当前窗口内未找到此关键字”)Colse(Parent)ReturnElseIfrow<0ThenMessageBox("错误","查找关键字失败")ReturnElse〃把查找到的行为设置为选中状态并滚动到改行i_dwtoacton.SelectRow(row,true)i_dwtoacton.ScrollToRow(row)EndIf在取消按钮的Clicked事件中加入如下脚本:Close(parent)专业选择窗口在窗口的Open事件中加入如下脚本:Stringzyddlb_1.AddItem("全部”)〃声明游标DECLAREmycursorCURSORFORSELECTDISTINCTzy〃读出各个专业名FROM"xs"OPENmycursor;IfSQLCA.SQLCode<0ThenMessageBox("数据库错","游标无法打开”)ReturnEndIfFETCHmycursorINTO:zy;〃如果执行成功则SQLCode的值为0DOWHILESQLCA.SQLCode=0ddlb_1.AddItem(zy)FETCHmycursorINTO:zy;LOOPCLOSEmycursor;〃初始化下拉列表的选择ddlb_1.SelectItem(1)在确定按钮的Clicked事件中加入如下脚本:s_staticticswork〃得到菜单传递过来的统计类型-Message
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 往年经济法试题及答案
- 系统架构设计师项目成功标准试题及答案
- 明确复习方向的护士资格证考试试题及答案
- 考试周期2025年计算机二级考试试题及答案
- 我与地坛节选试题及答案
- 系统架构设计师考试创新设计的方法与案例试题及答案
- 深入理解2024年系统规划与管理师考试内容试题及答案
- 系统架构设计师考试相关工具使用试题及答案
- 药物潜在风险的识别与评估试题及答案
- 文化产业管理证书考试内容全面
- 商业综合体投资计划书
- 三叉神经痛患者的护理
- 语文学业质量监测-国测四年级模拟试题(A)
- 亚朵服务流程
- 手术分级管理制度
- 地下停车场预算报价
- 企业质量管理体系的建设
- 治安案件派出所调解书范本
- 绘本故事-我喜欢书
- GB/T 26038-2023钨基高比重合金板材
- 《活着》读后感课件
评论
0/150
提交评论