下面是小编为大家整理的2022年浅淡存货信息化管理,供大家参考。希望对大家写作有帮助!
浅淡存货信息化管理5篇
浅淡存货信息化管理篇1
实施教育信息化管理 打造信息化教育平台
——洙湖二中教育信息化工作开展情况汇报材料
教育信息化是教育面向信息社会的要求和必然结果,是实现教育现代化的重要步骤。近年来,我校以开展“电化教学”为契机,加大教育信息化建设投入,努力推进教育信息化工程。以教育信息化推动教育现代化,不断打造信息化教育平台。经过近几年的努力,学校信息化工作取得了一定的成绩,现将我校信息化教育工作开展情况汇报如下:
一、基本情况:
1、学校基本情况
洙湖二中位于上蔡县洙湖镇洙湖集北,始建于1988年,占地50多亩。学校现有11个教学班,教职工70人,学生856人。学校在二十多年的发展历程中,先后荣获驻马店市五星级学校、驻马店市示范性初中,驻马店市综合办学水平先进学校、上蔡县管理一级学校、上蔡县安全文明校园、上蔡县中招先进学校等称号,为各级各类学校输送了众多合格人才。近年来,在上级教育行政部门的关心、支持和帮助下,学校办学条件不断改善,教育教学设施得到进一步完善。学校领导班子务实团结;
广大教师爱岗敬业;
教育教学质量逐年提高。
2、信息化基本情况
2007年,学校装配了远程教育教室,以及远教专用设备一套。2008年,学校装配了多媒体教室,各班配备了电脑和投影仪,学校教师积极运用电教设备进行教育教学。今年,教育局又为我校所有班级安装了教学一体机,现已投入使用。
二、信息化工作指导思想
以党的十八大精神为指导;
认真贯彻落实科学发展观,认真执行党的教育方针、路线、政策。努力提高教师教育教学水平,拓展学生视野,进一步推进素质教育的有效实施。通过提高教学效率,减轻学生学业负担,实施新课程、新理念,有效、合理利用网络资源,缩小城乡教育差距,实现教育优势资源共享。
三、学校信息化教育工作的开展情况
1、学校领导重视,不断加强教育信息化建设工作
自2009年以来,学校启动了信息化教育工作,成立了以校长为组长的信息化教育工作领导小组,保证信息化教育工作的正常开展、促进信息化教育的推进工作。4年来,我校紧密围绕信息化教育这个工作中心,不断开拓创新,扎实推进各项工作。为了使信息化教育能更好地为教育教学服务,我们积极探索,不断完善,落实科学发展观,给学校教育带来了深刻地变革;
教育信息化工作得到进一步的推广。
2、加强教师队伍建设,为教育信息化奠定扎实基础。
教育信息化除需要现代化教学设施,还需要具有现代教育技术技能的教师队伍。在教师培训方面,我们坚持“全员参与、培训先行、分类推进、分层提高”的策略。对教师的培训方面我们主要着眼于 “四个会”:即会操作计算机,会从网上下载有关教学资料,会运用远程教育设备辅助教学,35岁以下教师会制作多媒体课件。要求年轻教师在教学过程中,综合运用多种媒体课件和多种教学手段,实现教育理念,资源配置安排上的最优化。学校已经举办了十几次现代教育技术全员培训,培训内容主要有计算机基本技能,文字处理,电子表格,电子幻灯片制作等,学校领导带头学习,带头使用电教设备进行教学。
3、科学管理,通过电化教学设备的运用,促进教育信息化工作的有效开展。我们在保证电化教学设备正常运行的情况下,制定了相应的管理措施,促使教师运用网络资源进行教学。要求:1、45岁以上教师必须能运用电化教学模式进行教学;
45岁以下教师必须能充分运用下载的教育资源进行教学,并根据自己的要求与设计对课件作有效修改;
年轻教师能运用相应的素材自制课件;
进行网页制作,动画制作、多媒体制作等方面的学习。2、每位教师坚持经常使用电化教学设备上课,每学期至少精心准备2节汇报课,并做好相应的记录。通过强化管理,促使教师不断学习,巩固所学,互相交流,既提升了教师的知识结构、教育教学水平和业务能力;
也提高了电教设备的使用效率,达到开展电化教育的目的,有力的促进了教育信息化的开展。
4、教师认真开展信息化教育,取得显著成绩。学校教师利用远程教育和网络资源实施课堂教学,取得了良好的效果,有多位教师在多媒体教学优质课评比活动和课件制作评比活动中获奖。电化教学设备在我校还被广泛运用到开展的各项活动中,如家长会、文艺汇演等,均取得了良好的活动效果。
四、信息化教育的管理工作
(一)、加大投入,完善设备
为确保信息化教学工作的顺利开展,学校逐年增加信息化教育经费投入,及时对远教设备进行维护及维修。将资源接收硬件、软件进行及时更新,使其能够有效地接收下载教育教学资源,服务教学。
(二)、建立丰富的信息教育资源库
以远程教育和网络资源为载体,为教师提供信息化教育的资源。我校电教管理员及时下载整理远程教育资源,建立资源库供教师进行有效运用;
不断收集本校教师自己设计制作的教案、课件,与远教下载资料进行整合分类,建立校园资源库,大大地丰富了学校的教育资源,为教师进行教育信息化工作提供了极大帮助。
(三)、建立健全经费保障机制,保证信息化设备正常运行
几年来,我校高度重视信息化教育工作,为保障信息化工作的正常开展,每年均用相应经费对远程教育设备和办公电脑进行维修维护、购置电化教学所需物品。同时,为使教师更好的开展信息化教育工作,学校开通了宽带网,供教师查阅相关的教育教学资源。
(四)、引入激励机制,促进信息化工作的稳步进行
现在,我校将信息化教学纳入到教师绩效考核中,对多用设备和搞好信息化教学的教师加以奖励;
同时根据要求学校组织开展了校内优质课评比活动。学校成立优质课评比小组,确保优质课评比活动顺利开展,对成绩突出的教师采取绩效加分、推荐参加上级教育部门参加技能大赛等方面的激励机制。对学校进一步开展好信息化教育工作具有一定的推动作用。
五、我校在信息化教育开展工作中的优势
1、学校领导重视、积极搭建信息化教育教育平台
学校领导高度重视信息化推进工作,为加快信息化教育工作在我校的顺利实施,成立了以校长节新星为组长的信息化教育工作领导小组。学校积极争取上级教育部门的支持,不断增加对信息化教育的经费投入,努力推进信息化教育的各项工作。
2、上级领导对我校信息化教育工作非常重视,为我校装配电化教学设备,县教育局王勤局长、县教育台王心平台长、镇中心学校曹德领校长还多次到我校检查指导电化教学工作。
六、信息化建设目标
1、总体目标
建立班班通工程、校园网工程。逐步完善、补充学校资源库,实现学校管理、办公信息化;
实现卫星宽带、互联网宽带、学校资源结合。
2、分步目标
(1)、建成电子备课室6间,教师能运用电脑进行教学资源的查找,制作教学课件,使用电脑备课,实现办公信息化。
(2)、建立“班班通”工程。我校现有11个教学班,建立“班班通”后各科任教师均能进行信息化教学。
(3)、建立校园网。组建学校基本网络,通过校园网的建立,学校教师的备课、电子资料等学校教导处随时可以查看,教师之间可以相互学习、相互借鉴,共同学习,实现教学相长。
总之,几年来,我校信息化教育工作在上级有关部门的关心支持和全校师生的努力下取得了一定的成绩,也存在着一定的问题和不足。在今后的工作中,我们会总结经验,改进工作中发现的问题和存在的不足。相信在上级教育部门的关心、支持、帮助下,在全校师生的共同努力下,我校的信息化教育工作一定会朝着健康有序的方向发展。
- 高氯酸对阿胶进行湿法消化后, 用导数火焰原子吸收光谱技术测定阿胶中的铜、“中药三大宝, 人参、鹿茸和阿胶。”阿胶的药用已有两千多年的悠久历史, 历代宫① 马作峰.论疲劳源于肝脏[J].广西中医药,2008,31(1):31.① 史丽萍,马东明, 解丽芳等.力竭性运动对小鼠肝脏超微结构及肝糖原、肌糖元含量的影响[J]. 辽宁中医杂志,① 王辉武,吴行明,邓开蓉.《内经》“肝者罢极之本”的临床价值[J] . 成都中医药大学学报,1997,20(2):9.① 杨维益,陈家旭,王天芳等.运动性疲劳与中医肝脏的关系[J].北京中医药大学学报. 1996,19(1):8.1 运动性疲劳与肝脏① 张俊明.“高效强力饮”增强运动机能的临床[J].中国运动医学杂志,1989,8(2):10117 种水解蛋白氨基酸。总含量在56.73%~82.03%。霍光华②采用硝酸-硫酸消化法和18(4):372-374.1995,206.2② 林华,吕国枫,官德正等. 衰竭运动小鼠肝损伤的实验性[J].天津体育学院党报, 1994,9(4):9-11.② 凌家杰.肝与运动性疲劳关系浅谈[J].湖南中医学院学报.2003,2(6)31.② 凌家杰.肝与运动性疲劳关系浅谈[J].湖南中医学院学报.2003,23(6):31.② 谢敏豪等.训练结合用中药补剂强力宝对小鼠游泳耐力与肌肉和肝Gn, LDH 和MDH 的影响[J].中国运动医学杂② 杨维益,陈家旭,王天芳等.运动性疲劳与中医肝脏的关系[J].北京中医药大学学报. 1996,19(1):8.2.1 中药复方2.2 单味药33 阿胶和复方阿胶浆③ 常世和等.参宝片对机体机能影响的[J].中国运动医学杂志,1991,10(1):49.③ 聂晓莉,李晓勇等.慢性疲劳大鼠模型的建立及其对肝功能的影响[J]. 热带医学杂志,2007,7(4):323-325.3.1 概述3.2 关于阿胶和复方阿胶浆医疗保健作用的3.2.1 营养成分和评价3.2.2 阿胶的药理作用3.2.3 阿胶的临床应用4④ Xie MH, etal.Effects of "Hong jing tian she 1u" on reproductive axis function and exercise capacities in men. The5⑤ 周志宏等.补肾益元方对运动小鼠抗疲劳能力的影响[J].中国运动医学杂志,2001,20(1):83-84202-204.5`"InternationalCourseandConferenceonPhysiologicalChemistry and Natrition of exercise and training (Abstract)6⑥ 杨维益等.中药复方“体复康”对运动性疲劳大鼠血乳酸、p 一内啡肤、亮氨酸及强啡肤Al-13 影响的实验研⑥。仙灵口服液可提高机体运动能力,加速运动后血乳酸的消除。F3 口服液能调整PCO2⑧ 孙晓波等.鹿茸精强壮作用的[J].中药药理与临床,1987,3(3):11.⑨ 于庆海等.高山红景天抗不良刺激的药理[J].中药药理与临床,1995,7(7):283.⑩ 牛锐.淫羊藿炮制前后对小鼠血浆睾丸酮及附近性器官的影响[J].中国中药杂志,1989,14(9):18.P 0.05) 。肝脏是动物机体重要脏器之一,Pi,同疲),肝主筋,人之运动皆由于筋,故为罢极之本”。人体肝脏的功能活动也必阿胶, 味甘性平, 入肺、肝、肾经, 具有补血止血、滋阴润肺的功效。《神农本阿胶,又称驴皮胶,为马科动物驴的皮去毛后熬制而成的胶块,是中国医药宝库中阿胶、熟地配伍能使补而不滋腻, 共奏益气补血之功, 主要治疗各种原因导致的气血阿胶对细有促进作用;
提示阿胶能提高机体免疫功能。
另外阿胶具阿胶具有很好的止血作用,常用来治疗阴虚火旺、血脉受伤造成的出血。比如,阿胶能治疗缺铁性贫血,再生障碍性贫血等贫血症状,阿胶对血小板减少,白细阿胶是一类明胶蛋白,经水解分离得到多种氨基酸,阿胶具有很多的药理作用和阿胶又称驴皮胶, 为马科动物驴的皮去毛后熬制而成的胶块。中药界有句口头禅:阿胶中的营养成分比较多,主要有蛋白质、多肽、氨基酸、金属元素、硫酸皮肤。把阿胶应用于运动员或人群中的实践应用性,具有很大的潜力和市场前景,白血病、鼻咽癌、食道癌、肺癌、乳腺癌等。阿胶不温不燥,老少皆宜,一年四季均伴随现代竞技体育的强度越来越大,运动员在大运动量训练后出现的各种疲劳征象,胞减少等症也具有效果明显效果;
另外,经配伍,阿胶可用来治疗多种出血症。医学保健作用,阿胶具有耐缺氧、耐寒冷、抗疲劳和增强免疫功能作用;
同时,阿胶具有本文的目的意义有以下两个方面:一是通过阿胶的抗疲劳能力,来进一
本以运动性疲劳相关症状明显的篮球运动员为对象,以谷丙转氨酶、谷表明,阿胶还用于治疗妊娠期胎动不安,先兆流产,习惯性流产等。对于月经病步了解运动员服用阿胶以后,不但能够使男女运动员的谷草转氨酶含量水平、谷丙转参促进人体对糖原和三磷酸腺苷等能源物质的合理利用, 并使剧烈运动时产生的乳草经》将其列为上品。《本草纲目》载阿胶“疗吐血衄血, 血淋尿血, 肠风下痢, 女草转氨酶、谷酰转肽酶、总胆红素、白蛋白和白蛋白/球蛋白含量水平为测定指标,产生运动。从中医学的观点来看,筋就是聚集在一起的肌肉束,膜是筋的延长和扩布;
常所说的肌腱和韧带等器官,韧带和肌腱坚韧有力。通过韧带和肌腱伸缩牵拉骨骼肌充在筋”, 也就说明了筋的功能受到肝脏的调节, 所以, 医家大多从筋与肝相关的角除运动后的疲劳, 已经成为运动医学领域的热点,而中医药在改善、消除运动性促进肌肉和肝脏有氧氧化能力的作用③。
红景天圣露能促进机体运动后的恢复和消除促进血液凝固和抗贫血作用,有提高血红蛋白红细胞,白细胞和血小板的作用。到影响。的变化, 主要表现为部分肝细胞破裂, 内容物进入窦状隙, 未受损的肝细胞糖原明的核心问题之一, 也是运动训练学所要克服的核心问题之一, 疲劳是机体的一的滋补类药品;
因始产于聊城东阿,故名阿胶,距今已有两千多年的生产历史;
最早低分子肽含量分别是15%~45%、10.97%~13.18% 。霍光华③采用标准水解法和氨基低运动后血清尿素氮含量;
加速体内尿素氮及血乳酸的清除速率;
提高小鼠的游泳点、“肝之合筋”的观点、“肝者,其充在筋” 的观点、“食气入胃,散精于肝,淫气于动领域的广泛应用。动性疲劳关系最为密切者当首推肝脏。动性疲劳后机体恢复作用和机制的十分活跃。动员和贮备,以及机体对运动刺激的适应和运动后的疲劳的恢复起到重要的促进作用度阐述肝与疲劳的关系, 其实肝尚可通过脏腑气血等多个途径影响疲劳感的产生和度的DS 标准液, 加适量天青Ⅰ试液, 536nm 处测定吸收值, 建立工作曲线回归方程。对于运动产生的机理, 中医学解释比较通俗易懂, 即:韧带和肌腱的伸缩牵拉骨对运动性疲劳的多集中于中枢疲劳与外周肌肉疲劳,而较少涉及肝脏实质器而略于补立法,以健脾保肝、补中益气组方的确是防治运动性疲劳的一条新思新。故发挥和延缓运动性疲劳的产生都能起积极而有效的作用。总之,体力和脑力的产生均复的适应能力②。复方阿胶浆是由阿胶、红参、党参、熟地、山楂等药组成, 主入肝、脾两经。方肝,人动血运于经,”的论述。明确指出运动能力与肝和血密切相关。这种“动则血肝脾同处于中心位置,共同掌管着气化的职责,所以运动性疲劳的气虚神乏大多是由肝损害可导致动物运动能力下降, 也有大量实验观察了急性力竭疲劳对动物肝脏的肝糖原、肌糖元含量下降, 其程度随着衰竭运动次数增加而增加。林华等②通过对衰肝有关,由此可以推测神经递质、激素的释放等生理活动均同肝脏有密切关系。再者肝与筋的关系非常密切,在许多著作中都阐述了这一观点。如“肝主筋” 的观肝脏对内分泌具有促进作用。中医认为,胆汁的分泌、女子的排卵、男子的排精均主藏血、主筋,为“罴极之本”,有储藏营血与调节血量的作用,是提供运动所肝主疏泄,调畅气机,对气血津液的生成、输布和代谢有着重要意义。就运动生高山红景天在疲劳情况下能提高机体持续工作的时间,维持血压、心率的正常水高小鼠肝糖原的储备量;
降低运动后血清尿素氮含量;
加速体内尿素氮及血乳酸的骼肌产生运动。《素问•六节藏象论》曰:“肝者,罢极之本,魂之居也, 其华在爪, 其个特别复杂的生理生化过程。
总的说来,疲劳可分为生理疲劳和心理疲劳。
1982工作能力的作用①。强力宝能促进肌肉和肝脏有氧氧化能力的作用②。参宝片也能具有官的疲劳。肝脏作为人体重要的脏器,与运动性疲劳的关系极为密切。国际运动医学协会主席普罗科朴(Polo1Capur) 认为运动性疲劳问题是运动医学过度的训练、残酷的比赛引起的缺氧、强应激反应会导致机体的神经内分泌系统、心过去一段时间,抗运动性疲劳传统上单纯采用补的模式,现在,中医药抗疲劳出还认为“食气入胃,全赖肝木之气以疏泄之,而水谷乃化,气血方得以运生”,说明和血虚者,如服用阿胶补益,也具有良好的效果。临床上充分发挥阿胶的养血、补血、恢复正常,促进酸碱平衡的恢复,减少碱性物质的消耗⑦。机体的血量增加,以便增加通气/血流比值。肝内所贮存的血液就会更多的向机体全身肌腱和韧带等器官的力量。筋和筋膜向内连着五脏六腑,肝将脾输送来的精微之气浸、涉水等劳动或运动都称为“劳”, 而竞技体育由于其具有大运动量、高强度的加⑧。剑, 便无踪无影。阿娇日日夜夜在狮耳山、狼溪河附近狩猎。最后, 用利剑杀死了一奖牌呢?毫无疑问是靠长时间艰苦的训练,然而伴随现代竞技体育的强度越来越大,娇, 决心要找到救治此病的特效药物, 为民解忧。阿娇姑娘日以继夜地爬山涉水, 不竭性运动后小鼠肝脏超微结构的观察, 发现连续7 次的衰竭运动使肝细胞呈现明显筋”的观点、“肝主身之筋膜”的观点以及明•皇甫中《明医指掌》中的“劳伤乎肝,筋和筋膜把相邻的关节连在一起,对运动起着重要的作用;
并且,筋和筋膜向内连着进小白鼠耐力的提高。经论》有“肝藏血”的观点,另外,在《素问•五脏生成论》里,也有“人卧血归于景天圣露、补肾益元方、体复康、仙灵口服液及F3 口服液等。复方阿胶浆能显著提究[J].北京中医药大学学报,1997,20(4):37-40.具有多种代谢功能。血清谷草转氨酶、谷丙转氨酶升高在一定程度上反映了肝细胞的亢不抑,就会能协调精神、情趣和意志,使情绪稳定,思维敏捷,对运动技术水平的充分抗运动性疲劳的单味药主要有鹿茸、高山红景天、人参、淫羊藿和花粉等。实验抗运动性疲劳的中药复方主要有复方阿胶浆、高效强力饮、强力宝、参宝片、红可用,是强身健体的滋补佳品。阿胶中富含蛋白质降解成分,通过补血起到滋润皮肤劳感。” 运动性疲劳属中医“劳倦”范畴, 中医将劳力、劳役、强力举重、持重远行、劳模型组大鼠血清谷草转氨酶、谷丙转氨酶在此期间出现明显升高(P
浅淡存货信息化管理篇2
医院信息化管理 一、什么是医院信息化:
医院信息化是指医院以业务流程优化重组为基础,在一定的深度和广度上利用计算机技术、网络和通信技术及数据库技术,控制和集成化地管理医疗、护理、财务、药品、物资及研究、教学等活动中的所有信息,实现医院内、外部的信息共享和有效利用,提高医院的管理水平与综合发展实力的过程 二、我国医院信息化建设发展阶段:
医院管理信息系统在我国的应用,开始于20世纪80年代末期,大体上经历了计算机应用于收费、划价;
计算机网络技术应用于医院管理的各个环节;
数字化三个发展阶段,整个过程是与我国的整体信息化建设步伐相吻合的。2000年后随着通讯技术和光纤技术的发展,以及存储容量的提高,使影像信息的传输 和储存变得越来越方便,这就给真正意义上的电子病案的形成提供了契机。同时,指纹识别、数字签名技术的发展也给病案保存与传输的合法性提供了保证。在这一阶段,PACS(医学影像存储与传输系统)和LIS(临床试验信息系统)开始嵌人HIS,使HIS在功能上的全面提升成为可能。
三、我国医院信息化现状:
成绩:
(1) 发展的大环境已经形成(2)大型医院投巨资开发(3)医院信息化人才队伍逐步形成 (4)医院信息系统的应用基本取得成功(5)标准化工作得到重视 问题:
标准化问题、发展不平衡、法律不完善、医 院内部因素 四、医院信息化的意义:
医院信息化建设程度代表医院现代化管理水平高低和服务能力的多少。因此,各级医院把信息化建设作为医院工作重点,它是医院发展的重要标志。信息化能把医院领导从繁杂的管理中解脱出来,逐步使医院的管理现代化、科学化、规范化,从而实现医院管理向低成本、高效率的模式转变。成功的医院信息化建设会给医院带来巨大的效益。
(1) 信息化建设对医院管理的作用 1.1 提升医院的整体形象。信息化建设使老百姓切实地感受到了医院的正规化、现代化管理,增强了医院在当地的影响力。
1.2 开源节流,查漏补缺,实现人、财、物规范化管理信息建设从内部解决了管理漏洞和盲区。规范了管理流程,使医院的人、财、物处于全面受控状态,同时减少了资金占用,保证供应,增收节支效益显著。
1.3 提供辅助决策支持,降低管理成本 信息化能自动进行医院各项事务的统计和计算,大幅度提高管理数据的准确性和实时性,数据高度共享,无纸化信息传递,缩短决策周期,节约了日常办公消耗。从根本上改变管理者决策的方式和手段,让决策者能及时调整各种人员和物资的安排。
(2)信息化建设对医疗工作的作用 2.1 由于信息化建设加强了对患者挂号、病历、处方的管理,不仅可以帮助医院实现对医务人员工作的考核管理,动态了解医院的经营状况等,同时也从侧面减少了医院处方的流失,提高了医院的综合管理效益与经济效益。
2.2 在医院各部门之间进行数据通信,自动把信息送到各有关科室,易于实现全院性的各种统计、检索和分析。
2.3 医疗文书和医疗行为得到规范,在加速培养高水平医务人员上起到了极大的作用。
2.4 医院的“条码标识”技术,可以极大提高信息传递速度和减少错误。
1
浅淡存货信息化管理篇3
浅淡烟草行业内部专卖管理监督的信息化
烟草行业的内部专卖管理监管工作是行业内部监督管理的重要组成部分,也是当前烟草专卖工作面临的重大课题。XX年以来,行业内部专卖管理监督工作在制度建设、机构设置、内部专卖管理监督检查等方面取得了明显成效。国家烟草专卖局编制了《行业内部专卖管理监督工作规范》,统一了标准,明确了省、市、县三级局专卖内管监督工作的权责和具体内容。各省、市、县级局也根据国家局要求不断完善和改进组织机构、机制设置和程序规范。然而,行业内管监督工作仍存在着许多问题和矛盾,日常监管“管什么”、“怎么管”不清楚,监管绩效难以评估,专卖内管机构落实不到位仍然是行业专卖内管工作中存在的主要问题。 对于这些问题,根据国家局所号召的学习山西经验来看,以信息化为平台解决机制落实、量化监督、绩效评估、机构到位等重要问题,是解决行业内部专卖管理监督工作深化开展的根本途径。正如国家局对内管监督工作提出的要求:“信息化监管是加强内管工作的科学载体,也是内管工作方法创新的主要努力方向。”本文将以此为出发点,立足行业实际,结合山西经验,讨论和分析烟草行业内部专卖管理监督信息化建设的作用、困难及对策等问题。 一、内部专卖管理监督信息化的作用 根据山西经验,信息化为实施日常监督管理、实现有效的责任追究、加强垂直监督和同级监督提供了较好的方式,其在内部专卖管理监督方面的作用十分显著。 有效实施日常监管,可操作性强。 行业内部专卖管理监督长效机制的建设,其基础就在于如何实施日常监督管理,而信息化对于解决日常监督管理问题有诸多明显的优势。 一是监督制度量化。通过信息化系统,可以将制定的机制或制度进一步量化,将具体的工作和责任的划分通过计算机系统的设置而体现出来,并将细分的工作与相对应的数据建立起联系,使工作的操作性大大增强。二是程序简捷化。通过信息化手段,在整个产销流程中的各个环节之间建立起多维的数据链接,按监管工作的具体要求设置不同类型的数据关系,非常简捷地实现违规行为的预警、处理、反馈,使整个监管过程痕迹化、过程化、简捷化。三是管理高效化。信息化使操作人员在繁杂的多部门协调中解脱出来,而专注于问题本身,通过信息系统快捷地找出问题根源,并迅速寻找最佳解决办法和责任人,从而进一步促使日常管理明确化,高效化。 有效实施责任追究。 由于内部专卖管理监督涉及多个部门,一旦出现违规问题,往往会造成各部门互相推诿,互不承担责任的情况。如果查出的问题得不到解决,责任人无法认清,则会造成整个内部专卖管理监督制度的失效。信息化则可以在落实制度时充当公正、公平的裁判员,只要通过计算机系统和计算机网络按责任追究制度的要求设置各参数之间的关系,问题出现后其责任源将一目了然。所有环节是否存在不规范的现象,都可以通过预警设置体现出来,并可通过整个网络对外公布,做到真正的智能预警、流程控制,实现公平、公正、公开。 促进内管机构专业化,利于垂直监管和同级监管。 国家局反复强调机构设置在整个内管工作中的重要性,其目的在于将各个部门的设立与运行落到实处,尤其要避免将内部专卖管理监督岗位设置为虚位。而信息化则在这方面发挥着突出的作用:首先,信息化监管使内管监督岗位拥有了实实在在的可操作的监督手段和工具;
其次,由于内管工作涉及多部门,信息化可使内管监督机构保持相对的独立性和专业性;
第三,信息化、网络化的监管进一步促进了资源和信息的共享。一方面,加强了上级部门对下级部门的监管,对下级部门的违规行为保持着强大的监管压力;
另一方面,加强了行业的同级监管。不仅可使同级部门形成相互监督的良性机制,同级部门间的违规行为也难以掩饰。 二、内部专卖管理监督信息化建设的现状和存在的问题 尽管内部专卖管理监督信息化已经成为落实内管监督工作的必然趋势,各地也在积极投入,但在信息化建设过程中仍然存在着一些问题或障碍。主要体现在以下几个方面: 思想认识不足。 从全行业来看,对于专卖内管监督工作,各省局都普遍有较高的认识,但市级局、县级局认识的差异相对较大。由于近两年的专卖内管检查以整顿规范、专项治理、专项检查等带有整顿性质的形式为主,这种形式虽然是解决突出问题的有效措施,但它仅限于事后监管,有短期性、阶段性。在这样的背景下,部分部门仅仅将内管监督工作当作一个专项行动或短期行为,没有充分认识到该项工作的长期性和实效性,导致许多制度、规定以应付考核和检查为主,流于形式、走过场,没有真正理解国家局落实内管监督工作的重要宏观意义,没有真正将落实该项工作的认识提升到“两个维护”上来。缺乏思想上的正确认识,使得内管监督信息化建设缺乏思想基础和精神动力,不能下狠心抓落实、抓实效。 区域发展不平衡。 由于内管监督工作刚刚起步,真正建立完善的内管监督体系的地区不多,使得区域间开展该项工作不平衡,体现在三个层面。一是基础制度建立不平衡。有些区域已经建立了完整的机制和制度,保障了内管监督工作有章可循。但有些区域还没有真正认清内管监督工作“管什么”,即使建立了制度,设置了相应的机构,也不知用于何处,如何运用,使信息化建设缺乏必要的制度和机构基础;
二是执行力不平衡。部分烟草企业习惯于原有的管理和监督模式,不愿打破旧的体制,对新推行的管理模式不善于运用,执行力不够,导致其思想和行动不会统一到着力解决如何通过创新落实新的监督管理模式这一问题上来,信息化成为空谈。三是信息化建设发展不平衡。由于内管监督信息化体系需要有一系列的相关系统的支持,如物流信息系统、预测信息系统、销售信息系统、仓储信息系统、零售户信息系统等诸多信息系统作为基础,然而,各区域这些信息系统的发展不平衡,有的没有完善各类信息系统,有的信息系统存在着系统漏洞,有的没有统一数据信息标准,有的信息系统之间缺乏兼容性。这种现状的存在,是内管监督信息化建设的主要障碍。 人员素质有待提高。 内部专卖管理监督是一项复合性、综合性较强的工作,要求管理者和内管监督工作人员有较强的综合能力,既掌握理论知识,又了解一线工作的实际,他们必须深入了解烟叶收购知识、订单预测知识、仓储知识、物流知识、专卖法律法规知识等多方面的知识,对计算机操作技能的要求也较高。而现阶段,专卖队伍的整体素质仍然有待提高,人员素质差次不齐,而一些地区,尤其是县级局,仍然缺乏符合这些要求的高素质管理工作人员。 三、加强内部专卖管理监督信息化建设的对策 针对上述问题,我们就内部专卖管理监督信息化建设提出以下三个方面的意见或建议。 加强思想认识,提高执行力。 从省局到基层,要不断强化全员对深入开展内管监督工作重要性的认识,转变思想,将内管监督作为工作的重点。通过加强内管监督的领导,采取一把手负总责,分管领导具体负责的领导方式,将宣传、教育、学习工作落到实处。有计划地开展员工教育和培训工作,加强法律法规教育,切实增强全员的自律意识和责任意识,营造良好的舆论氛围。 同时,建立权责明确的岗位责任制,目标考核制,实现过程控制,加大责任追究力度,敢于碰硬,敢于问责,狠抓执行,狠抓监督,全面提高内部专卖管理监督工作的执行力。 加强制度建设,完善信息系统。 一是要建立并完善日常监管机制、工作规则、决策程序和违规行为处理机制,结合教育制度,形成事前、事中、事后的有效监督;
二是制度建设突出重点,要以到货确认、仓库管理、订单预测、零售户收货确认等工作为重点制定管理监督制度,密切监控销售异动、订单数据异动、库存异动等重点情况;
三是要完善配套的信息系统,确保信息系统无漏洞,并保证系统间的无缝对接。系统启用以后,根据国家局的要求,结合地方实际调适系统,使之真正实现流程驱动、源头治理、痕迹化管理。 加强人员培训,培养复合型人才。 内部专卖管理监督信息系统需要一批业务精、经验丰富、涉及领域广、技术强的高素质人才,因此,急需培养一批高素质复合型人才。在人才选择上,可以选用知识水平较高,基层工作经验较丰富,自学能力较强的人员作为培养对象;
在培养方式上,应当结合现场学习和专题学习,以从干中学、从问中学为主,不断增强参训人员的实践工作经验,提高员工解决实际问题的能力。有计划地开展专题培训工作,使工作人员熟悉工作流程,打造一支素质高、业务精、严于律已、执法严明的内部专卖管理监督队伍。 从山西省局落实《烟草行业内部专卖管理监督工作规范》工作的实践来看,其创造性、创新性就在于他们将信息化建设作为整个工作落实的突破口和亮点,从而保证了内管机构和人员发挥作用,实现了机制、机构的长效可靠运转,这也是国家局反复强调学习山西内管监督工作经验的重要原因。总之,通过加强思想认识、提高执行力、完善制度建设、健全信息系统、培养综合型高素质人才等多项措施,将信息化作为解决内管监督工作落实问题的一把钥匙,必然能将内管监督工作提升到一个新的高度。
浅淡存货信息化管理篇4
《会计信息化—库存管理存货核算系统》
实验指导书
实验一 《 存货子系统》业务流程分析 1
实验二 《 存货子系统》数据处理流程分析 1
实验三 《存货子系统》功能分析 2
实验四 《存货子系统》数据字典及数据库设计 2
实验五 建立《存货子系统》数据库 3
实验六 《存货子系统》基本窗口设计 4
实验七 《存货子系统》软件编程——码表处理 44
实验八 《存货子系统》软件编程——单表处理 47
实验九 《存货子系统》软件编程——导入导出处理 53
实验一 《库存管理存货核算系统》业务流程分析
实验目的:
分析《库存管理存货核算系统》的业务流程,画出《存货子系统》业务流程图。
实验环境:
安装Windows操作系统、Word软件、Visio软件等。
实验方式:
分组进行。
上机机时:
2机时
实验内容:
1、《库存管理存货核算系统》业务流程描述。
为了深入了解存货核算与管理的特点,我们首先分析手工条件下存货核算与管理的业务处理流程,掌握存货出库、入库、期末结账、对账以及管理分析的过程。
存货包括原材料、包装物、低值易耗品、自制半成品、产成品等。在手工条件下,当存货到达企业并办理入库手续后,除了仓库保管员要登记存货数量账外,财会部门也要根据各种凭单(如入库单、验收报告等)登记存货明细账,反映存货增加等经济业务;
当各个部门领用存货时(如生产车间领用材料用于生产、销售部门领用产品用于销售),仓库保管员又要登记存货数量账,财会部门又要根据各种凭单(如入库单等)登记存货明细账,反映存货减少等经济业务;
定期编制记账凭证传递到总账子系统,登记总账。此外,还要及时为管理提供各种存货报告,如存货状态报告、ABC存货成本分析报告、超储积压存货分析报告等。下面我们对入库流程、出库流程以及期末结账和管理分析流程进行分析。
(1)存货核算与管理——入库流程分析
当采购部门或者供应商将存货送入仓库,生产部门或者物流部门将生产的产成品送入仓库,入库业务便开始进行了。
1仓库保管员依据采购订单和计划入库安排,检查供应商送货及时性,根据事先设定的送货接收标准,判定是否收货。
2如果可以收货,仓库保管员编制收货凭证,并将收货凭证和质检抽样存货移入质检部门,进行抽样检验。
3如果质检合格,将质检合格存货退返仓库,进行库存移库操作,并编制验收报告。
4将验收报告传递给仓库和财务部门。
5仓库保管员根据验收报告和收货凭证编制入库单。
6登记相应存货的入库数量和结存数量,即存货三级账,并将相应的单据传递到财务部门。
7财务贲门根据入库单、验收报告编制记账凭证。
8存货核算会计审核凭证,登记存货明系账,并将凭证传递到总账子系统。
9总账会计定期根据记账凭证登记总账。
(2)存货核算与管理——出库、期末处理与管理的分析流程
当生产部门提出领料申请、销售部门提出发运产品时,出库业务便开始进行;
到会计期末进行相应的处理,并提交各种管理分析报告。
1仓库保管员接到各车间、用料单位提出的领料申请,或者销售部门提出的发运请求,经审核单据后,编制出库单,并发出存货。
2仓库保管员登记相应存货出库数量和结存数据,即存货三级账,并将相应的单据传递到财会部门。
3财会部门会计人员根据出库单等单据编制记账凭证,登记存货明细账,并将凭证传递到总账子系统。由于存货种类繁多、数量大、收发业务频繁,存货成本计算比较复杂,为了满足不同企业对核算的需要,存货可以按计划成本计价,也可按实际成本计价。按实际成本计价时,存货成本可以按照加权平均、移动加权平均、先进先出、后进先出和个别计价等方法进行计算。
4期末处理。财务部门期末对存货进行实地盘点,编制盘盈盘亏表,经审批后通知仓库、财会部门修改相应的存货一级、二级以及三级账。由于存货数量账(三级账)、存货明细账(二级账)、总账(一级账)是由不同的人员编制的,因此,会出现账账不一致的问题。因此,期末还需要进行三级账的核对工作,很多企业要花费一定的人力物力每月必须进行对账。财务部门根据不同的计价方法和成本计算方法,分别计算存货成本差异、发出存货成本,并进行结账工作。
5存货分析。财务管理人员需要根据入库单、出库单、存货数量账等编制包括超储积压一览表、ABC成本分析表、仓库存货汇总表等内容的管理分析报告,并提出存货管理的改进意见和评价信息。
2、通过分析《存货子系统》的业务流程,利用Visio软件画出《存货子系统》的业务流程图。
业务流程图如图1所示:
图1 存货子系统业务流程图
实验二 《存货子系统》数据处理流程分析
实验目的:
通过《存货子系统》的业务流程图,进一步分析优化《存货子系统》的数据处理流程,画出《存货子系统》的数据处理流程图。
实验环境:
安装Windows操作系统、Word软件、Visio软件等。
实验方式:
分组进行。
实验内容:
1、通过分析《存货子系统》的业务流程图,利用Visio软件画出《存货子系统》的数据处理流程图。
根据前面对存货子系统业务流程图的分析,运用系统分析法,可以绘出存货子系统的数据流程图。依据模块结构设计的原则,通过对存货子系统的数据流程图进行模块划分,存货子系统可以划分为入库管理、出库管理、存管理、损管理和调拨管理等功能模块。数据流程图如图2所示:
图2 存货子系统数据流程图
实验三 《 存货子系统》功能分析
实验目的:
通过分析《 存货子系统》的业务流程与数据处理流程图,进一步分析《存货子系统》的功能。
实验环境:
安装Windows操作系统、Word软件、Visio软件等。
实验方式:
分组进行。
实验内容:
1、通过分析《存货子系统》的业务流程与数据处理流程图,画出《存货子系统》的功能图。
根据业务流程图和数据流程图,存货子系统基本可以划分为入库管理、出库管理、盘点管理、报损管理、调拨管理等五个功能模块。每个功能模块又可以继续划分为若干个功能模块,直到每个功能模块都能够表示相当独立的功能为止。我们的存货子系统侧重于核算模块的设计。主要的功能结构有入库管理、出库管理、盘点管理模块。功能结构图如图3所示:
图3 存货子系统功能结构图
实验四 《 存货子系统》数据字典及数据库设计
实验目的:
通过分析《存货子系统》的数据流程图,进一步写出《存货子系统》的数据字典。
利用PowerDesigner软件,建立《存货子系统》的PDM。
实验环境:
安装Windows操作系统、Word软件、Visio软件、PowerDesigner软件等。
实验方式:
分组进行。
实验内容:
1、通过分析《存货子系统》的数据流程图,写出《存货子系统》的数据字典。
数据流的描述
数据流编号
数据流名称
简述
数据流来源
数据流去向
F1
库存产品信息表
库存部门记录存货信息的表
库存模块
其他各模块
F2
库存盘点表
库存部门记录存货期末盘点情况的表
库存模块
账务模块
F3
入库单
库存部门开出的入库单
库存模块
采购模块
F4
出库单
库存部门开出的出库单
库存模块
销售模块
F5
销售退货入库单
库存部门开出的销售退货入库单
库存模块
销售模块
F6
采购申请单
库存不足时库存部门开出的采购申请单
库存模块
采购模块
F7
报损单
库存部门开出的报损单
库存模块
质管模块
F8
部门用途表
各部门领用存货类别表
库存模块
账务模块
F9
流水账单
存货出入情况的账单
库存模块
信息使用者
F10
期初余额表
库存期初余额
库存模块
信息使用者
处理逻辑的描述
处理逻辑编号
处理逻辑名称
简述
输入的数据流
输出的数据流
P1
验收货物
对采购入库的货物进行检验
采购单
验收单
P2
出库处理
对销售的货物进行出库检验
销售单
销售检验单
P3
审核调拨单
对调拨单申请进行审核
调拨单(申请)
调拨单(审核)
P4
盘点库存
对库存中的存货进行盘点
实物清单
库存盘点单
P5
审核报损单
对报损单申请进行审核
报损单
报损单(审核)
数据存储的描述
数据存储编号
数据存储名称
简述
S1
库存账目
存货入库、出库、退货、报损后修改当前库存量
p
< cla>外部实体的描述
p
< cla>外部实体编号
外部实体名称
简述
输入的数据流
输出的数据流
p
< cla>E1
仓库部门
对存货保管、增减变化进行管理的部门
验收单、销售单
入库单、出库单
p
< cla>E2
采购部门
采购存货的部门
入库单
采购单
p
< cla>E3
销售部门
销售商品的部门
出库单
销售单
p
< cla>E4
财务部门
进行账务处理的部门
库存盘点单、报损单
帐簿、报表
2、利用PowerDesigner软件,建立《存货子系统》的PDM。
实验五 建立《存货子系统》数据库
实验目的:
建立《存货子系统》的SQL Anywhere数据库。
删除所建数据库的transaction log file文件。
建立《存货子系统》的ODBC。
通过《存货子系统》的PDM,生成《 存货子系统》数据库中的各张表。。
实验环境:
安装Windows操作系统、PowerDesigner软件、PowerBuilder软件、SQL Anywhere数据库等。
实验方式:
分组进行。
实验内容:
1、在PowerBuilder中,建立《存货子系统》的SQL Anywhere数据库。
2、在Sybase 中心Sybase Central中,利用Utilities 工具中的Change Log File Information功能,删除所建数据库的transaction log file文件。
3、在PowerBuilder中,或在PowerBuilder中,建立《存货子系统》的ODBC。
4、在PowerDesigner AppModeler软件,连接《存货子系统》数据库。
5、通过《存货子系统》的PDM,利用PowerDesigner AppModeler软件,生成《存货子系统》数据库中的各张表。
数据库设计
1.码表设计
一 仓库表
仓库表
c_ch_ckb
字段名
类型长度
是否空
含义
ckb_code
char(6)
NOT NULL
仓库编号
ckb_name
char(20)
NULL
仓库名称
二 职员表
职员表
c_ch_zyb
字段名
类型长度
是否空
含义
zyb_code
char(6)
NOT NULL
职员编号
zyb_name
char(20)
NULL
职员名称
zyb_szbm
char(20)
NULL
所在部门
三 部门表
部门表
c_ch_bmb
字段名
类型长度
是否空
含义
bmb_code
char(6)
NOT NULL
部门编号
bmb_name
char(20)
NULL
部门名称
四 货位表
货位表
c_ch_hwb
字段名
类型长度
是否空
含义
hwb_code
char(6)
NOT NULL
货位编号
hwb_name
char(20)
NULL
货位名称
hwb_szck
char(20)
NULL
所在仓库
五 业务性质表
业务性质表
c_ch_ywxzb
字段名
类型长度
是否空
含义
ywxzb_code
char(6)
NOT NULL
业务性质编码
ywxzb_name
char(40)
NULL
业务性质名称
2.基本表设计
一 库存产品信息表
库存产品信息表
T_kcxx
字段名
类型长度
是否空
含义
*chbm
Char(10)
NOT NULL
存货编码
chmc
char(50)
NULL
存货名称
ggxh
Char (5)
NULL
规格型号
jldw
Char(10)
NULL
计量单位
chlb
Char(10)
NULL
存货类别
Chsx
Char(20)
NULL
存货属性
Jhjg
Char(10)
NULL
计划价格
ckjg
char(10)
NULL
参考价格
hw
char(10)
NULL
货位
sh
char(10)
NULL
审核标志
qyrq
Char(30)
NULL
启用日期
bz
char(100)
NULL
备注
二 存货结存表
存货结存表
T_chjcb
字段名
类型长度
是否空
含义
*chbm
Char(10)
NOT NULL
存货编码
qcsl
decimal(10,2)
NULL
本月期初数量
qcdj
decimal(10,2)
NULL
本月期初单价
qcje
decimal(10,2)
NULL
本月期初金额=本月期初单价*本月期初单价
ssl
decimal(10,2)
NULL
本月收数量
sje
decimal(10,2)
NULL
本月收金额
fsl
decimal(10,2)
NULL
本月发数量
fje
decimal(10,2)
NULL
本月发金额
jcsl
decimal(10,2)
NULL
本月结存数量
jcdj
decimal(10,2)
NULL
本月结存单价
jcje
decimal(10,2)
NULL
本月结存金额
三 入库单
入库单表
T_rkd
字段名
类型长度
是否空
含义
*rkdh
Char(10)
NOT NULL
*入库单编号(自动生成)
rkrq
Char(15)
NULL
入库单日期
ywbh
Char(15)
NULL
业务编号
ywyxm
Char(10)
NULL
业务员姓名
chbm
Char(10)
NULL
存货编码
sl
decimal(10,2)
NULL
数量
dj
decimal(10,2)
NULL
单价
je
decimal(10,2)
NULL
金额
cd
Char(10)
NULL
产地
gys
Char(10)
NULL
供应商
ck
Char(10)
NULL
仓库
hw
Char(10)
NULL
货位
shbz
Char(2)
NULL
审核标志
clbz
Char(2)
NULL
处理标志
shbz
Char(2)
NULL
收货标志
zdr
Char(10)
NULL
制单人
shr
Char(10)
NULL
审核人
四 出库单
出库单表
T_ckd
字段名
类型长度
是否空
含义
*ckdh
Char(10)
NOT NULL
*出库单编号(自动生成)
ckrq
Char(15)
NULL
出库单日期
ywbh
Char(15)
NULL
业务编号
ywyxm
Char(10)
NULL
业务员姓名
chbm
Char(10)
NULL
存货编码
sl
decimal(10,2)
NULL
数量
dj
decimal(10,2)
NULL
单价
je
decimal(10,2)
NULL
金额
yt
Char(10)
NULL
用途
bm
Char(10)
NULL
部门
ck
Char(10)
NULL
仓库
hw
Char(10)
NULL
货位
shbz
Char(2)
NULL
审核标志
clbz
Char(2)
NULL
处理标志
shbz
Char(2)
NULL
收货标志
zdr
Char(10)
NULL
制单人
shr
Char(10)
NULL
审核人
bz
char(100)
NULL
备注
五 销售退货入库单
销售退货入库单
T_xsthrkd
字段名
类型长度
是否空
含义
*ckthdh
Char(10)
NOT NULL
*销售退货单编号(自动生成)
ckthdrq
Char(15)
NULL
销售退货单日期
ywbh
Char(15)
NULL
业务编号
ywyxm
Char(10)
NULL
业务员姓名
chbm
Char(10)
NOT NULL
存货编码
sl
decimal(10,2)
NULL
数量
dj
decimal(10,2)
NULL
单价
je
decimal(10,2)
NULL
金额
bm
Char(10)
NULL
部门
ck
Char(10)
NULL
仓库
hw
Char(10)
NULL
货位
shbz
Char(2)
NULL
审核标志
clbz
Char(2)
NULL
处理标志
shbz
Char(2)
NULL
收货标志
zdr
Char(10)
NULL
制单人
shr
Char(10)
NULL
审核人
thyy
Char(100)
NULL
退货原因
六 采购申请单
采购申请单
ch_cgsqd
字段名
类型长度
是否空
含义
*sqdbh
Char(10)
NOT NULL
*申请单编号(自动生成)
rq
Char(15)
NULL
日期
chbm
Char(10)
NULL
存货编码
chmc
Char(20)
NULL
存货名称
ggxh
Char(10)
NULL
规格型号
jldw
Char(4)
NULL
计量单位
chlb
Char(10)
NULL
存货类别
chsx
Char(10)
NULL
存货属性
xqsl
decimal(10,2)
NULL
需求数量
chr
Char(10)
NULL
制单人
shr
Char(10)
NULL
审核人
七 报损单
入库退货单
T_rkth
字段名
类型长度
是否空
含义
*bsbh
Char(10)
NOT NULL
*报损单编号(自动生成)
bsrq
Char(15)
NULL
报损单日期
ywyxm
Char(10)
NULL
业务员姓名
chbm
Char(10)
NULL
存货编码
sl
decimal(10,2)
NULL
数量
dj
decimal(10,2)
NULL
单价
je
decimal(10,2)
NULL
金额
cd
Char(10)
NULL
产地
gys
Char(10)
NULL
供应商
ck
Char(10)
NULL
仓库
hw
Char(10)
NULL
货位
shbz
Char(2)
NULL
审核标志
clbz
Char(2)
NULL
处理标志
shbz
Char(2)
NULL
收货标志
zdr
Char(10)
NULL
制单人
shr
Char(10)
NULL
审核人
bsyy
Char(100)
NULL
报损原因
八 部门用途表
部门用途表
T_bmytb
字段名
类型长度
是否空
含义
*bmbm
Char(10)
NOT NULL
*部门编码
bmmc
Char(20)
NULL
部门名称
ytdm
Char(10)
NULL
用途代码
ytmc
Char(10)
NULL
用途名称
xmfy
Char(10)
NULL
项目费用
九 流水账单
流水账单
ch_lszd
字段名
类型长度
是否空
含义
*xh
char(3)
NOT NULL
序号
sj
Char(15)
NULL
时间
djh
char(2)
NULL
单据号
ywxz
char(4)
NULL
业务性质
chbm
char(10)
NULL
存货编码
chmc
char(20)
NULL
存货名称
sl
decimal(10,2)
NULL
数量
dj
decimal(10,2)
NULL
单价
je
decimal(10,2)
NULL
金额
十 期初余额表
期初余额表
T_qcyeb
字段名
类型长度
是否空
含义
chbm
Char(10)
NULL
存货编码
chmm
Char(50)
not NULL
存货名称
sl
decimal(10,2)
NULL
数量
dj
decimal(10,2)
NULL
单价
je
decimal(10,2)
NULL
金额
cd
char(50)
null
产地
gys
char(50)
null
供应商
ck
Char(10)
NULL
仓库
hw
Char(10)
NULL
货位
bz
char(100)
NULL
备注
十一 存货盘点表
存货盘点表
T_chpdb
字段名
类型长度
是否空
含义
pddbh
Char(10)
not NULL
盘点单编号
pddrq
Char(15)
NULL
盘点单日期
ywyxm
Char(10)
NULL
业务员姓名
bm
Char(10)
NULL
部门
chbm
Char(10)
not NULL
存货编码
chmc
char(20)
null
存货名称
hw
char(10)
null
货位
chdj
decimal(10,2)
NULL
存货单价
zcsl
decimal(10,2)
NULL
账存数量
pdsl
decimal(10,2)
NULL
盘点数量
yksl
decimal(10,2)
NULL
盈亏数量
zdr
char(10)
NULL
制单人
shr
char(10)
NULL
审核人
实验六 《 存货子系统》基本窗口设计
实验目的:
《存货子系统》窗口设计。
《存货子系统》全局变量设计。
《存货子系统》全局函数设计。
实验环境:
安装Windows操作系统、PowerBuilder软件、SQL Anywhere数据库、教师提供的软件原型平台等。
实验方式:
分组进行。
实验内容:
1、《存货子系统》全局变量设计。
全局变量定义
string g_oper_code,g_oper_name,g_sheet_code,g_print
string g_date,g_dept,g_dept_day,g_func_code
string g_dept_month_date="2000-01-01"
string g_orig,g_warehouse
string g_sp_info,g_menu_name
boolean gb_db_connected
string g_price_power
decimal g_dept_interval
string g_color="80",g_color_key="80"
string g_IPAddress,g_MachineName
string g_log_rec="0" //"记录日志标记 1":记录,"0":不记录
string g_sys_name="重庆工学院会计学院 实验案例"
string g_comp_name="重庆工学院 会计学院会计学院 "
string g_proj_code="",g_proj_name=""
string g_drive="d:\io" ,g_pathfilename //导入导出路径
string g_dir_sc="" //自动生成路径
integer g_sheet_code_len =10 //单据长度
integer g_len1=3,g_len2=7,g_len3=11,g_len4=19 //小区、大楼、单元、房间编码长度
integer g_len4_1=3,g_len4_2=3 //g_len4_1楼层长度 g_len4_2 房间长度
string g_zth="001" //帐套号
string g_nkjqj="2005" //年会计期间
2、《存货子系统》全局函数设计。
函数名
函数功能
f_oper_check
判断操作员输入的编码及密码是否合法
gf_dw_count
显示数据窗口的行数
f_where_exist
判断有无WHERE条件
f_string
字符变量的处理
f_sql
sqlca.sqlcode判断,0、100:false,-1:true
gf_ini_table
码表初始化
f_i_o
导入导出初始
f_dw_test_repeat
对数据窗口中的导入数据进行重复性测试
f_dw_test_repeat_del
删除导入导出中的重复数据
函数名
f_oper_check
返回值类型
integer
函数功能
判断操作员输入的编码及密码是否合法
参数定义
r_oper_code:string
r_pass:string
脚本
string r_oper_pass
SELECT pass INTO :r_oper_pass FROM c_operator WHERE oper_code= :r_oper_code;
IF sqlca.sqlcode = 100 then
messagebox(g_sys_name,"您提供的操作员号码不正确!")
return 1
ELSE
IF trim(r_oper_pass) trim(r_pass) THEN
messagebox(g_sys_name,"您提供的密码和操作员号不符!~r~r是否没有区分大小写?")
return 2
END IF
END IF
return 0
函数名
gf_dw_count
返回值类型
无
函数功能
显示数据窗口的行数
参数定义
r_dw_table: datawindow
r_sle_count: singlelineedit
脚本
long r_row,r_count
r_count=r_dw_table.ROWCOUNT()
r_row=r_dw_table.getrow()
IF r_row>0 and r_count>0 THEN
r_sle_count.TEXT=string(r_row)+"/"+string(r_count)
ELSEIF r_count>0 then
r_sle_count.TEXT="共"+string(r_count)+"条"
ELSE
r_sle_count.TEXT=""
END IF
return
函数名
f_where_exist
返回值类型
integer
函数功能
判断有无WHERE条件
参数定义
r_orig_sql: string
脚本
if pos(r_orig_sql,"WHERE")>0 or pos(r_orig_sql,"where")>0 then
return 1 //有WHERE条件
else
return 0 //无WHERE条件
end if
函数名
f_string
返回值类型
string
函数功能
字符变量的处理
参数定义
r:string
脚本
IF ISNULL(r) OR TRIM(r)="" THEN
r="%"
ELSE
r= r+"%"
END IF
RETURN r
函数名
f_sql
返回值类型
boolean
函数功能
sqlca.sqlcode判断,0、100:false,-1:true
参数定义
无
脚本
if sqlca.sqlcode=-1 then
messagebox("sql错误信息",sqlca.sqlerrtext)
rollback;
return true
else
commit;
return false
end if
函数名
gf_ini_table
返回值类型
无
函数功能
码表初始化
参数定义
无
脚本
//职位码表
DELETE FROM c_postion ;
INSERT INTO c_postion(postion_code, postion_name) VALUES ("01","董事长") ;
INSERT INTO c_postion(postion_code, postion_name) VALUES ("02","副董事长") ;
INSERT INTO c_postion(postion_code, postion_name) VALUES ("03","财务总监") ;
INSERT INTO c_postion(postion_code, postion_name) VALUES ("04","销售总监") ;
//学历码表c_edu_level
INSERT INTO c_edu_level(edu_level_code,edu_level_name ) VALUES ("01","博士") ;
INSERT INTO c_edu_level(edu_level_code,edu_level_name ) VALUES ("02","硕士") ;
INSERT INTO c_edu_level(edu_level_code,edu_level_name ) VALUES ("03","学士") ;
//凭证类型码表
DELETE FROM ZW_C_PZLX ;
INSERT INTO ZW_C_PZLX(PZLX_CODE,PZLX_NAME) VALUES ("CH","转账凭证") ;
INSERT INTO ZW_C_PZLX(PZLX_CODE,PZLX_NAME) VALUES ("SK","收款凭证") ;
INSERT INTO ZW_C_PZLX(PZLX_CODE,PZLX_NAME) VALUES ("FK","付款凭证") ;
if f_sql() then return
函数名
f_i_o
返回值类型
无
函数功能
导入导出初始
参数定义
脚本
SetPointer(HourGlass!)
delete from save_import ;
//导入导出码表
delete from c_save_import ;
insert into c_save_import values ("01","导入");
insert into c_save_import values ("02","导出");
delete from c_mean ;
insert into c_mean values ("01","固定");
insert into c_mean values ("02","自由");
insert into c_mean values ("03","生成");
delete from c_file_type ;
insert into c_file_type values ("01","dbf");
insert into c_file_type values ("02","txt");
insert into c_file_type values ("03","excel");
insert into c_file_type values ("04","sql");
delete from c_interval ;
insert into c_interval values ("00","无");
insert into c_interval values ("01","每日");
insert into c_interval values ("02","每周");
insert into c_interval values ("03","每月");
insert into c_interval values ("04","每季度");
insert into c_interval values ("05","每年");
delete from c_flag_code ;
insert into c_flag_code values ("01","成功");
insert into c_flag_code values ("02","失败");
if f_sql() then return
INSERT INTO save_import VALUES (
"001","c_operator","dw_c_operator_grid","01","02","D:\io\data",
"c_operator","01","人员信息","00","000","2002-01-01","2002-01-01","01","","");
INSERT INTO save_import VALUES (
"001","c_operator","dw_c_operator_grid","02","02","D:\io\data",
"c_operator","01","人员信息","00","000","2002-01-01","2002-01-01","01","","");
SetPointer(arrow!)
if f_sql() then
return
else
// messagebox("提示","导入导出表初始成功!")
end if
return
函数名
f_dw_test_repeat
返回值类型
long
函数功能
对数据窗口中的导入数据进行重复性测试
参数定义
r_type:string
r_dw: datawindow
r_sle: singlelineedit
脚本
long r_row,r_rowcount,r_count,r_select,r_return=0
string r_primary[]
r_rowcount=r_dw.rowcount()
r_type=lower(r_type)
CHOOSE CASE r_type
CASE "c_operator"
r_count=1 //关键字段数
r_primary[r_count]=""
FOR r_row=1 TO r_rowcount
r_primary[1]=r_dw.getitemstring(r_row,"oper_code") //取关键字
select count(*) into :r_select from c_operator where c_operator.oper_code = :r_primary[1] ;
if r_select>0 then
r_dw.SelectRow(r_row, TRUE)
r_return=r_return + 1
end if
NEXT
CASE ELSE
END CHOOSE
return r_return
函数名
f_dw_test_repeat_del
返回值类型
long
函数功能
删除导入导出中的重复数据
参数定义
r_type:string
r_dw: datawindow
r_sle: singlelineedit
脚本
long r_row,r_rowcount,r_count,r_select,r_return=0
string r_primary[]
r_type=lower(r_type)
r_rowcount=r_dw.rowcount()
CHOOSE CASE r_type
CASE "c_operator"
r_count=1
r_primary[r_count]=""
FOR r_row=1 TO r_rowcount
r_primary[1]=r_dw.getitemstring(r_row,"oper_code")
delete from c_operator where c_operator.oper_code = :r_primary[1] ;
NEXT
CASE "c_supp"
r_count=1 //关键字段数
r_primary[r_count]=""
FOR r_row=1 TO r_rowcount
r_primary[1]=r_dw.getitemstring(r_row,"supp_code") //取关键字
delete from c_supp where c_supp.supp_code = :r_primary[1] ;
NEXT
CASE ELSE
END CHOOSE
f_sql()
return r_return
3、通过分析,设计《存货子系统》的通用窗口。
窗口名
窗口功能
w_start
登陆窗口
W_set
系统设置窗口
W_code
码表输入、修改窗口
w_sheet_input
单表输入窗口
W_select
综合查询窗口
w_i_o_ini
数据导入导出初始窗口
w_i_o
数据导入导出窗口
窗口名
w_start
Message参数
无
主要功能
登陆窗口
实例变量声明
无
窗口函数
无
控件事件
脚本
w_start:
open!
//居中
Environment a
Integer w,h
GetEnvironment(a)
w=PixelsToUnits(a.screenwidth,xpixelstounits!)
h=PixelsToUnits(a.screenheight,ypixelstounits!)
move((w - width)/2,(h - height)/2)
this.title="☆" + g_sys_name + " 系统登录☆"
确定
cb_ok :
clicked!
string r_func_code,r_menu_name,r_date,r_sp_info
long r_result
r_result=f_oper_check(sle_oper_code.text,sle_pass.text)
IF r_result0 THEN
If r_result=1 Then
sle_oper_code.Text=""
sle_oper_code.SetFocus()
ElseIf r_result=2 Then
sle_pass.Text=""
sle_pass.SetFocus()
End If
return
End If
g_date=string(today())
g_oper_code=sle_oper_code.text
SELECT oper_name ,func_code ,sheet_code,DEPT_CODE,postion_code INTO :g_oper_name,:r_func_code,:g_sheet_code,:g_dept,:r_sp_info
FROM c_operator
WHERE oper_code = :g_oper_code ;
//操作人员的打印权限
SELECT print_yn,menu_name
INTO :g_print,:g_menu_name
FROM c_func
WHERE func_code = :r_func_code ;
close(parent)
open(w_set)
退出
cb_cancel:
clicked!
close(parent)
窗口名
W_set
Message参数
无
主要功能
系统设置窗口
实例变量声明
无
窗口函数
wf_change_menu(r_menu_name)
参数:string r_menu_name
返回值类型:integer
string ls_menu
select s_menu into :ls_menu
from c_menu where menu_group=:r_menu_name;
choose case ls_menu
case "m_crm"
w_genapp_frame.ChangeMenu(m_crm)
f_set_purview(r_menu_name,m_crm)
case else
Return 1
end choose
Return 0
控件事件
脚本
W_set:
Open!
dw_dept.SetTransObject ( sqlca )
dw_dept.insertrow(0)
dw_dept.setitem(1,1,g_dept)
em_date.text=string(today())
g_date=em_date.text
Environment a
Integer w,h
GetEnvironment(a)
w=PixelsToUnits(a.screenwidth,xpixelstounits!)
h=PixelsToUnits(a.screenheight,ypixelstounits!)
move((w - width)/2,(h - height)/2)
this.title=g_sys_name + " 设置"
确定
cb_set:
clicked!
string r_dept_day,r_date1
string r_date,r_dept
string r_dept_month_date
r_date=em_date.text
r_dept=dw_dept.getitemstring(1,1)
g_dept=r_dept
g_date=r_date
setpointer(hourglass!)
open(w_genapp_frame)
If wf_change_menu(g_menu_name)0 Then
messagebox(g_sys_name,"系统没有给您提供可用的菜单!~r程序将终止!")
halt
Else
End If
setpointer(arrow!)
close(parent)
退出
cb_cancel:
clicked!
close(parent)
窗口名
W_code
Message参数
Message.StringParm
主要功能
码表管理窗口
实例变量声明
string i_type,i_code
integer i_tab[30]
long i_row,i_col
string i_orig_sql
string i_str_precolumn=""
integer i_int_clicktime=0
string i_title //窗口的标题变量
窗口函数1
f_exit()
参数:无
返回值类型:无
INTEGER NET,RTN
dw_table.accepttext()
IF dw_table.ModifiedCount( ) > 0 OR dw_table.DeletedCount( ) >0 THEN
Net = MessageBox("提示", "是否需要保存所修改的信息?", Exclamation!, YESNO!, 1)
IF Net = 1 THEN
rtn = dw_table.Update( )
IF rtn = 1 THEN
COMMIT USING SQLCA;
ELSE
ROLLBACK USING SQLCA;
END IF
END IF
END IF
窗口函数2
get_tab_order()
参数:无
返回值类型:无
integer j
FOR j=1 TO i_col
i_tab[j]=dw_table.setTabOrder(j, 0)
NEXT
窗口函数3
set_tab_0()
参数:无
返回值类型:无
integer j
FOR j=1 TO i_col
dw_table.SetTabOrder(j, 0)
NEXT
cb_modi.TEXT="&X不修改"
cb_delete.enabled=false
cb_save.enabled=false
窗口函数4
set_tab_old()
参数:无
返回值类型:无
integer j
FOR j=1 TO i_col
dw_table.SetTabOrder(j, i_tab[j])
NEXT
cb_modi.TEXT="&X可修改"
cb_modi.enabled=true
cb_save.enabled=true
控件事件
脚本
W_code:
Open!
//确定数据窗口dw_table的DATAOBJECT
//确定窗口的标题
//将dw_table的数据源Select描述赋予实例变量 String i_orig_sql
i_type=Message.StringParm
CHOOSE CASE i_type
CASE "c_func"
dw_table.DATAOBJECT="dw_c_func"
i_title="系统操作功能码表"
CASE "c_postion"
dw_table.DATAOBJECT="dw_c_postion"
i_title="操作员职位码表"
CASE "c_edu_level"
dw_table.DATAOBJECT="dw_c_edu_level"
i_title="学历码表"
CASE "c_supp_attr"
dw_table.DATAOBJECT="dw_c_supp_attr"
i_title="往来单位属性"
CASE ELSE
messagebox("提示","无此参数"+i_type)
return
END CHOOSE
dw_table.SetTransObject ( sqlca )
sle_count.TEXT=""
i_orig_sql=dw_table.Describe("DataWindow.Table.Select")
i_col=integer(dw_table.object.datawindow.column.count) //数据窗口的列数
get_tab_order()
SET_TAB_0()
this.title=i_title + "维护"
//窗口居中
Environment a
Integer w,h
GetEnvironment(a)
w=PixelsToUnits(a.screenwidth,xpixelstounits!)
h=PixelsToUnits(a.screenheight,ypixelstounits!)
move((w - width)/2,(h - height)/2)
W_code:
closequery!
f_exit()
dw_table:
clicked!
this.setrow(row)
i_row=this.getrow()
IF i_row>0 THEN
dw_table.SELECTROW(0,FALSE)
dw_table.SELECTROW(i_row,TRUE)
i_code=dw_table.getitemstring(i_row, 1)
if cb_modi.TEXT="&X可修改" then
cb_delete.enabled=true
end if
END IF
gf_dw_count(this,sle_count)
dw_table:
double clicked!
//取得上次单击的列对象 string i_str_precolumn=""
//判断上次是按升还是按降来排序 integer i_int_clicktime=0
string str_column,str_format
str_column=dwo.name //取点击的对象
if right(str_column,2) "_t" then return
//对于列标题,取得的对象是列名+"_t"
str_column=left(str_column,len(str_column) - 2)
if str_column=i_str_precolumn then //已点击过
if i_int_clicktime=0 then //0表示原来按降序
i_int_clicktime=1
str_format=str_column + " A"
else
i_int_clicktime=0
str_format=str_column + " D"
end if
else
i_int_clicktime=1 //1表示原来按升序
str_format=str_column + " A"
end if
i_str_precolumn = str_column
this.SetSort(str_format)
this.Sort()
dw_table:
error!
BEEP(5)
dw_table:
itemerror!
return 1
dw_table:
itemchanged!
//用于控制对码表中的数据进行相关操作
//控制码表编码的唯一性:输入不能重复,数据库中已经存在的编码不能再次输入
INTEGER r_col
String r_code,r_code1,r
LONG r_row,r_rowcount,i,j
r_col=THIS.Getcolumn( ) //当前数据窗口列的序号
r_row=THIS.GETROW() //数据窗口当前行
r_rowcount=THIS.ROWCOUNT()
IF r_col=1 THEN
IF THIS.AcceptText( ) = 1 THEN
r_code = THIS.GetitemString(r_row, r_col)
//输入不能重复
FOR i=1 TO r_rowcount
IF ir_row THEN
r_code1 = THIS.GetitemString(i, r_col)
IF r_code=r_code1 THEN
BEEP(5)
MESSAGEBOX("提示","编码输入重复! 请重新输入!")
THIS.Setitem(r_row, r_col,"") //当前行当前列的值设为空
RETURN 1
END IF
END IF
NEXT
//数据库中已经存在的编码不能再次输入
CHOOSE CASE i_type
CASE "c_func"
SELECT func_code INTO :r FROM c_func WHERE func_code= :r_code ;
CASE "c_postion"
SELECT postion_code INTO :r FROM c_postion WHERE postion_code= :r_code ;
CASE "c_edu_level"
SELECT edu_level_code INTO :r FROM c_edu_level WHERE edu_level_code= :r_code ;
CASE "c_supp_attr"
SELECT supp_attr_code INTO :r FROM c_supp_attr WHERE supp_attr_code= :r_code ;
END CHOOSE
IF sqlca.sqlcode 100 then
MESSAGEBOX("提示","该编码已经存在! 请重新输入!")
THIS.Setitem(r_row, r_col,"")
RETURN 1
END IF
END IF
END IF
确定
cb_retr:
clicked!
//按查询条件对码表中的数据进行查询
string r_code,r_name
long r_row
string r_where_sql,r_modi_sql,r_state
r_code=trim(sle_code.text)
r_name=trim(sle_name.text)
r_code=f_string(r_code) //x=x+"%"
r_name=f_string(r_name)
//r_code=" ~""+ r_code +"~"" //SQL server
//r_name=" ~""+ r_name +"~"" //SQL server
r_code="~""+ r_code +"~"" //SQL anywhere
r_name="~""+ r_name +"~"" //SQL anywhere
CHOOSE CASE i_type
CASE "c_func"
r_where_sql= " where c_func.func_code like " + r_code &
+" and c_func.func_name like " + r_name
CASE "c_postion"
r_where_sql= " where c_postion.postion_code like " + r_code &
+" and c_postion.postion_name like " + r_name
CASE "c_edu_level"
r_where_sql= " where c_edu_level.edu_level_code like " + r_code &
+" and c_edu_level.edu_level_name like " + r_name
CASE "c_supp_attr"
r_where_sql= " where c_supp_attr.supp_attr_code like " + r_code &
+" and c_supp_attr.supp_attr_name like " + r_name
END CHOOSE
//r_modi_sql = "DataWindow.Table.Select="" + i_orig_sql + r_where_sql + """ //SQL server
r_modi_sql = "DataWindow.Table.Select=~"" + i_orig_sql + r_where_sql + "~"" //SQL anywhere
r_state = dw_table.Modify(r_modi_sql)
IF r_state = "" THEN
r_row=dw_table.Retrieve( )
dw_table.setfocus()
ELSE
MessageBox("提示", "数据窗口修改失败!" + r_state)
return
END IF
gf_dw_count(dw_table,sle_count)
SET_TAB_0()
if r_row>0 then
dw_table.scrolltorow(1)
dw_table.SELECTROW(0,FALSE)
dw_table.SELECTROW(1,TRUE)
end if
复位
cb_reset:
clicked!
dw_table.reset()
sle_count.TEXT=""
增加
cb_insert:
clicked!
long r_row
dw_table.INSERTROW(0)
r_row=dw_table.rowcount()
dw_table.SCROLLTOROW(r_row)
dw_table.setfocus()
dw_table.SetColumn(1)
dw_table.setrow(r_row)
dw_table.setfocus()
dw_table.SELECTROW(0,FALSE)
dw_table.SELECTROW(r_row,TRUE)
set_tab_old()
gf_dw_count(dw_table,sle_count)
不修改
cb_modi:
clicked!
IF THIS.TEXT="&G可修改" THEN
SET_TAB_0()
ELSE
set_tab_old()
dw_table.setrow(dw_table.rowcount())
dw_table.setcolumn(1)
dw_table.setfocus()
dw_table.selectrow(0,false)
dw_table.selectrow(dw_table.rowcount(),true)
END IF
删除
cb_delete:
clicked!
INTEGER NET
long R_ROW,r_count
if not dw_table.IsSelected(i_row) then return
Net = MessageBox("提示", "是否真的要删除所选中的行?", Exclamation!, YESNO!, 2)
IF Net = 2 THEN return
this.enabled=false
dw_table.DELETEROW(i_row)
gf_dw_count(dw_table,sle_count)
保存
cb_save:
clicked!
integer rtn, NET
Net = MessageBox("提示", "是否真的要保存?", Exclamation!, YESNO!, 1)
IF Net 1 THEN return
dw_table.accepttext()
IF dw_table.ModifiedCount( ) > 0 OR dw_table.DeletedCount( ) >0 THEN rtn = dw_table.Update( )
IF rtn = 1 THEN
COMMIT USING SQLCA;
messagebox("提示","保存成功!")
cb_reset.TriggerEvent(Clicked!)
ELSE
ROLLBACK USING SQLCA;
messagebox("提示","保存失败!")
END IF
END IF
set_tab_0()
if cb_reset.TEXT="&X可修改" then
cb_save.enabled=true
end if
打印
cb_print:
clicked!
str_printtool l_str_printtool //定义结构,存放调用参数
l_str_printtool.str_dw = dw_table//赋值:需要打印的datawindow名字
l_str_printtool.str_title_1 = " "//主标题
l_str_printtool.str_title_2 = ""//副标题,如果赋值"today" 打印时自动显示当前日期
l_str_printtool.str_title_3 = g_date//脚注,如果赋值"today" 打印时自动显示当前日期
l_str_printtool.str_underline_1=1//主标题下划线,1有下划线,其它无下划线
l_str_printtool.str_underline_2=0//副标题下划线,1有下划线,其它无下划线
l_str_printtool.str_underline_3=0//脚注下划线,1有下划线,其它无下划线
l_str_printtool.str_align_3=3//脚注对齐方式,1右对齐,2中间对齐,3左对齐,其它无效
openWithparm(w_printtool,l_str_printtool)//调用打印窗口
//long job
//INTEGER NET,NET1
//
//Net = MessageBox("提示", "是否真的要打印?", Exclamation!, YESNO!, 1)
//IF Net = 1 THEN
// Net1 = MessageBox("提示", "请准备好打印机!", Exclamation!, YESNO!, 1)
// IF NET1=1 THEN
// THIS.ENABLED=FALSE
// job = PrintOpen( )
// PrintDataWindow(job, dw_table)
// PrintClose(job)
// MessageBox("提示", "打印完毕!")
// THIS.ENABLED=TRUE
// END IF
//END IF
退出
cb_cancel:
clicked!
close(parent)
窗口名
W_sheet_input
Message参数
Message.StringParm
主要功能
单表管理窗口
实例变量声明
string i_type
integer i_col, i_col_count //数据窗口的列数
datawindowchild i_dwc,i_dwc_supp_attr_code
long i_row
string i_str_precolumn=""
integer i_int_clicktime=0
string i_form, i_where_sql,i_modi_sql,i_orig_sql,i_orig_sql_new
long i_x,i_y,i_width,i_height
string ename[],coltype[],col_width[], col_height[],col_height_t[]
double col_y[],col_y_t[],col_interval[],col_interval_t[]
integer i_col_copy_count
string i_col_copy[]
string i_title//窗口的标题变量
窗口函数
f_itemchanged(r_code)
参数:string r_code
返回值类型:integer
string r_code1
CHOOSE CASE i_type
CASE "c_operator"
select oper_code into :r_code1 from c_operator where oper_code=:r_code;
END CHOOSE
if sqlca.sqlcode=0 then
CHOOSE CASE i_type
CASE "c_operator"
messagebox("提示","该编码已经存在! ~r~n请重新输入!")
dw_free.setitem(dw_free.getrow(),"oper_code","")
return 1
END CHOOSE
END IF
return 0
控件事件
脚本
W_sheet_input:
Open!
string r_modi,r_col,r_col_name
integer i
i_type=Message.StringParm
CHOOSE CASE i_type
CASE "c_operator"
dw_table.DATAOBJECT="dw_c_operator_grid"
dw_free.DATAOBJECT="dw_c_operator_free"
dw_print.DATAOBJECT="dw_c_operator_free"
i_title="操作员情况表"
CASE "c_corp"
dw_table.DATAOBJECT="dw_c_corp_grid"
dw_free.DATAOBJECT="dw_c_corp_free"
dw_print.DATAOBJECT="dw_c_corp_free"
i_title="公司信息"
END CHOOSE
i_col=integer(dw_table.object.datawindow.column.count) //数据窗口的列数
//注意:只有dw_free中挂的下拉数据窗口是带retrieve参数的,dw_table,dw_print均未带
FOR i=1 TO i_col
r_col = "#"+string(i) + ".Name" // "#i"代表第i列, #1.Name为第一列列名.
ename[i]=dw_free.describe(r_col) //ename[i]放第i列列名.
coltype[i]=dw_free.describe(ename[i] + ".ColType")
col_width[i]=dw_free.describe(ename[i] + ".width")
col_height[i]=dw_free.describe(ename[i] + ".height")
col_y[i]=Double(dw_free.describe(ename[i] + ".y"))
col_height_t[i]=dw_free.describe(ename[i] + "_t.height")
col_y_t[i]=Double(dw_free.describe(ename[i] + "_t.y"))
if dw_free.getchild(ename[i],i_dwc)=1 then
i_dwc.settransobject(sqlca)
i_dwc.retrieve("%")
CHOOSE CASE ename[i]
CASE "supp_attr_code"
i_dwc_supp_attr_code=i_dwc
CASE ELSE
END CHOOSE
end if
NEXT
dw_table.settransobject(sqlca)
dw_free.settransobject(sqlca)
dw_print.settransobject(sqlca)
dw_free.sharedata(dw_table)
dw_free.sharedata(dw_print)
cb_increase.triggerevent(clicked!)
rb_free.triggerevent(clicked!)
rb_free.checked=true
dw_table.x=dw_free.x
dw_table.y=dw_free.y
dw_table.width=dw_free.width
dw_table.height=dw_free.height
this.title=i_title + "输入"
dw_table:
buttonclicked!
string r_object,r_type, r_code,r_col
r_object = String(dwo.name)
CHOOSE CASE i_type
CASE "c_operator"
CHOOSE CASE r_object
CASE "cb_func_code" //所有按钮以cb_开头(命名规则:cb_+列名)
r_type="c_func" //选择的码表
CASE "cb_postion_code"//所有按钮以cb_开头(命名规则:cb_+列名)
r_type="c_postion"//选择的码表
END CHOOSE
CASE ELSE
return
END CHOOSE
openwithparm(w_code_sheet_inqu,r_type)
r_code=message.stringparm
r_col=mid(r_object,4) //取按钮对应的列名
dw_free.setitem(dw_free.getrow(),r_col,r_code)
dw_table:
double clicked!
String ls,ld,r_StringParm,r_columnname
r_columnname=this.getcolumnname()
i_row=this.getrow()
if not i_row > 0 then return
if lower(right(r_columnname,2 )) "rq" then return 1
//日期选择处理
AcceptText()
str_calendar lstr_cal // create a structure (included in the calendar .pbl)
lstr_cal.active_datawindow = this
lstr_cal.active_row = i_row
lstr_cal.active_column = r_columnname //dwo.name
openwithparm(w_pb_calendar,lstr_cal)
r_StringParm=Message.StringParm
ld=this.getitemstring(i_row,lstr_cal.active_column)
ld=f_null_string(ld)
if ld r_StringParm then
this.setitem(i_row,r_columnname,r_StringParm)
end if
Return 1
dw_table:
editchanged!
if isnull(data) then return
CHOOSE CASE i_type
CASE "c_supp"
CHOOSE CASE dwo.name
CASE "supp_attr_code"
i_dwc_supp_attr_code.retrieve(data+"%")
END CHOOSE
END CHOOSE
dw_table:
itemerror!
return 1
dw_table:
losefocus!
this.accepttext()
dw_table:
itemchanged!
string r_col,r_code,r_code1,r_date,r_kh_code,r_zffs_code
long r_row,r_count,r_sql_count
INTEGER NET,i
decimal r_sum_ye,r_ye,r_jhfkje
string r_ht_id
integer r_ht_itemno
if not this.accepttext()=1 then return
//r_editstyle=dwo.edit.style
//if r_editstyle="dddw" then
// this.getchild(dwo.name,i_dwc) //dwo.name is like this.GetColumnName()
// string ls_data_column
// ls_data_column=dwo.dddw.datacolumn
// r_row=i_dwc.find(ls_data_column+"=""+data+""",1,i_dwc.rowcount())
// if r_row0 then return
r_col=this.GetColumnName( )
if not this.accepttext()=1 then return
CHOOSE CASE i_type
CASE "c_operator"
CHOOSE CASE r_col
CASE "oper_code"
r_code=data //相当于r_code=this.GetItemString( r_row, col)
// r_code1=f_sheet_len(r_code) //r_code1是规格化后的编码
// if r_coder_code1 then
// r_code = r_code1
// end if
// this.settext(r_code)
if f_itemchanged(r_code)=1 then
this.setitem(r_row,r_col,"")
return 1
end if
return 1
CASE else
RETURN
END CHOOSE
END CHOOSE
表格格式
rb_table:
clicked!
dw_table.visible=true
dw_free.visible=false
cb_del.enabled=false //需要点击后才能删除
自由格式
rb_free:
clicked!
dw_free.visible=true
dw_table.visible=false
cb_del.enabled=true //可删除当前行
cb_next:
clicked!
long r_row
r_row=dw_table.scrollnextrow()
r_row=dw_table.getrow()
dw_table.setrow(r_row)
dw_table.selectrow(0,false)
dw_table.selectrow(r_row,true)
dw_free.scrolltorow(r_row)
if dw_table.getrow()=dw_table.rowcount() then
this.enabled=false
cb_last.enabled=false
end if
cb_first.enabled=true
cb_prior.enabled=true
gf_dw_count(dw_table,sle_count)
cb_last:
clicked!
long r_count
r_count=dw_table.rowcount()
dw_table.scrolltorow(r_count)
dw_table.selectrow(0,false)
dw_table.selectrow(r_count,true)
dw_free.scrolltorow(r_count)
this.enabled=false
cb_next.enabled=false
cb_first.enabled=true
cb_prior.enabled=true
gf_dw_count(dw_table,sle_count)
增加
cb_increase:
clicked!
long r_rowcount
string r_code
if rb_free.checked=true then
dw_free.setfocus()
dw_free.SetColumn(1)
else
dw_table.setfocus()
dw_table.SetColumn(1)
end if
dw_free.insertrow(0)
cb_last.triggerevent(clicked!)
gf_dw_count(dw_table,sle_count)
r_rowcount=dw_free.rowcount()
r_code = f_sheet_code(i_type,r_code) //产生单据号
CHOOSE CASE i_type
CASE "dj_cb_project"
dw_free.SetItem ( r_rowcount,"PROJ_CODE" ,r_code )
dw_free.SetItem ( r_rowcount,"KSRQ" ,g_date )
dw_free.SetItem ( r_rowcount,"JGRQ" ,g_date)
CASE else
END CHOOSE
复制列选择
cb_copy_col:
clicked!
//复制列选择
s_one_datawindow dws
string r_string,r_string1
integer r_length,r_col_row
dws.string1="copy"
dws.dw1=dw_table
OpenWithParm(w_col_copy,dws)
r_string=Message.StringParm
if isnull(r_string) or trim(r_string)="" then
i_col_copy_count=0
return //没有数据传过来
end if
r_string1=r_string //初始化
i_col_copy_count=0
DO WHILE pos(r_string1,",")>0 // 计算","的个数r_count
r_length=len(r_string1)
r_string1 = mid(r_string1, pos(r_string1,",") + 1,r_length)
i_col_copy_count = i_col_copy_count + 1
LOOP
i_col_copy[i_col_copy_count]=""
DO WHILE pos(r_string,",")>0 //将选择的字符串存储到i_col_copy[]中
r_col_row = r_col_row + 1
r_length=len(r_string)
i_col_copy[r_col_row] = mid(r_string, 1,pos(r_string,",") - 1)
r_string = mid(r_string, pos(r_string,",") + 1,r_length)
LOOP
复制增加
cb_increase_copy:
clicked!
string r_string,r_sql,r_coltype
integer r_col_row
long r_count,r_count1
decimal r_decimal
r_count=dw_table.rowcount()
dw_table.INSERTROW(0)
r_count1=dw_table.rowcount()
dw_table.scrolltorow(r_count1)
i_row=dw_table.getrow()
dw_table.setrow(i_row)
if r_count>0 then //copy
FOR r_col_row=1 TO i_col_copy_count
r_sql = i_col_copy[r_col_row] + ".ColType"
r_coltype = dw_table.describe(r_sql)
IF r_coltype = "!" THEN
MessageBox("错误", "数据类型错误!")
return
END IF
CHOOSE CASE r_coltype
CASE "number","long" ,"int"
r_decimal=dw_table.getitemdecimal(r_count,i_col_copy[r_col_row])
dw_table.setitem(i_row,i_col_copy[r_col_row],r_decimal)
CASE "date"
CASE "datetime"
CASE ELSE
IF Left(r_coltype,4) = "char" THEN
r_string=dw_table.getitemstring(r_count,i_col_copy[r_col_row])
dw_table.setitem(i_row,i_col_copy[r_col_row],r_string)
ELSEIF Left(r_coltype,7) = "decimal" THEN // type is decimal
r_decimal=dw_table.getitemdecimal(r_count,i_col_copy[r_col_row])
dw_table.setitem(i_row,i_col_copy[r_col_row],r_decimal)
ELSE // error,"!"
END IF
END CHOOSE
NEXT
end if
cb_last.triggerevent(clicked!)
gf_dw_count(dw_table,sle_count)
删除
cb_del:
clicked!
if rb_free.checked=true then
dw_free.deleterow(0)
elseif rb_table.checked=true then
dw_table.deleterow(i_row)
this.enabled=false
end if
gf_dw_count(dw_table,sle_count)
打印
cb_print:
clicked!
//定义结构,存放调用参数
str_printtool l_str_printtool
//赋值:需要打印的datawindow名字
if rb_free.checked=true then
l_str_printtool.str_dw = dw_free
else
l_str_printtool.str_dw = dw_table
end if
//主标题
l_str_printtool.str_title_1 = " "
//副标题,如果赋值"today" 打印时自动显示当前日期
l_str_printtool.str_title_2 = ""
//脚注,如果赋值"today" 打印时自动显示当前日期
l_str_printtool.str_title_3 = g_date
//主标题下划线,1有下划线,其它无下划线
l_str_printtool.str_underline_1=1
//副标题下划线,1有下划线,其它无下划线
l_str_printtool.str_underline_2=0
//脚注下划线,1有下划线,其它无下划线
l_str_printtool.str_underline_3=0
//脚注对齐方式,1右对齐,2中间对齐,3左对齐,其它无效
l_str_printtool.str_align_3=3
//调用打印窗口
openWithparm(w_printtool,l_str_printtool)
复位
cb_reset:
clicked!
dw_free.reset()
cb_increase.enabled=true
sle_count.text=""
保存
cb_save:
clicked!
long r_row,Net
string r_sheet_type_code,r_flag_code
Net = MessageBox("提示", "是否真的保存?", Exclamation!, YESNO!, 1)
IF Net = 2 THEN return
dw_free.accepttext()
dw_table.accepttext()
if f_check_null(i_type,dw_table,"")=1 then
messagebox("提示","修改后再保存!")
return
end if
r_row=dw_free.getrow()
if not( dw_free.rowcount()>=1 ) then return
if dw_free.update()>0 then
commit;
dw_free.reset()
sle_count.text=""
messagebox("提示","保存成功!")
else
rollback;
messagebox("提示","保存失败!")
return
end if
退出
cb_cancel:
clicked!
close(parent)
窗口名
w_select
Message参数
Message.StringParm
主要功能
综合查询窗口
实例变量声明
string i_type,i_form, i_where_sql,i_modi_sql,i_orig_sql
integer i_col
string i_str_precolumn=""
integer i_int_clicktime=0
long i_x,i_y,i_width,i_height,i_row
string ename[],coltype[],col_width[], col_height[],col_height_t[]
double col_y[],col_y_t[],col_interval[],col_interval_t[]
string i_xh_xx_c
string i_tip_flag,i_click_tip
datawindowchild i_dwc
datawindow i_dw
string i_title
窗口函数
参数:
返回值类型:
控件事件
脚本
w_select:
Open!
i_type=Message.StringParm
CHOOSE CASE i_type
CASE "c_operator"
dw_table.DATAOBJECT="dw_c_operator_grid"
dw_free.DATAOBJECT="dw_c_operator_free"
i_title="操作员情况表"
CASE "c_corp"
dw_table.DATAOBJECT="dw_c_corp_grid"
dw_free.DATAOBJECT="dw_c_corp_free"
i_title="公司信息"
END CHOOSE
dw_table.settransobject(sqlca)
dw_free.settransobject(sqlca)
dw_table.sharedata(dw_free)
this.title=i_title+"查询"
dw_table.object.datawindow.readonly="yes"
dw_free.object.datawindow.readonly="yes"
i_col=integer(dw_table.object.datawindow.column.count) //dw_table数据窗口的列数
i_orig_sql=dw_table.Describe("DataWindow.Table.Select")
integer i
string r_col,r_col_name
FOR i=1 TO i_col
r_col="#"+string(i)
r_col_name = "#"+string(i) + ".Name" // "#i"代表第i列, #1.Name为第一列列名.
ename[i]=dw_table.describe(r_col_name) //ename[i]放第i列列名.
coltype[i]=dw_table.describe(ename[i] + ".ColType")
NEXT
rb_table.triggerevent(clicked!)
rb_table.checked=true
i_dw=dw_table
dw_free.x=dw_table.x
dw_free.y=dw_table.y
dw_free.width=dw_table.width
dw_free.height=dw_table.height
dw_table:
clicked!
long r_rowcount
i_row=row
IF not i_row>0 THEN return
this.SetColumn(this.GetClickedColumn( ))
this.setrow(row)
this.SELECTROW(0,FALSE)
this.SELECTROW(i_row,TRUE)
cb_first.enabled=true
cb_prior.enabled=true
cb_next.enabled=true
cb_last.enabled=true
gf_dw_count(this,sle_count)
r_rowcount=this.rowcount()
if i_row=1 and r_rowcount=1 then
cb_prior.enabled=false
cb_next.enabled=false
cb_last.enabled=false
elseif i_row=r_rowcount then
cb_next.enabled=false
cb_last.enabled=false
elseif i_row=1 and r_rowcount>1 then
cb_first.enabled=false
cb_prior.enabled=false
end if
dw_table:
double clicked!
string str_column,str_format
str_column=dwo.name //取点击的对象
if right(str_column,2) = "_t" then //按升降排序
//对于列标题,取得的对象是列名+"_t"
str_column=left(str_column,len(str_column) - 2)
if str_column=i_str_precolumn then //已点击过
if i_int_clicktime=0 then //0表示原来按降序
i_int_clicktime=1
str_format=str_column + " A"
else
i_int_clicktime=0
str_format=str_column + " D"
end if
else
i_int_clicktime=1 //1表示原来按升序
str_format=str_column + " A"
end if
i_str_precolumn = str_column
this.SetSort(str_format)
this.Sort()
end if
cb_next:
clicked!
long r_row
i_dw.scrollnextrow()
r_row=i_dw.getrow()
if i_dw.getrow()=i_dw.rowcount() then
this.enabled=false
cb_last.enabled=false
end if
cb_first.enabled=true
cb_prior.enabled=true
gf_dw_count(dw_table,sle_count)
cb_last:
clicked!
i_dw.scrolltorow(i_dw.rowcount())
this.enabled=false
cb_next.enabled=false
cb_first.enabled=true
cb_prior.enabled=true
gf_dw_count(dw_table,sle_count)
打印
cb_print:
clicked!
//定义结构,存放调用参数
str_printtool l_str_printtool
//赋值:需要打印的datawindow名字
if rb_free.checked=true then
l_str_printtool.str_dw = dw_free
else
l_str_printtool.str_dw = dw_table
end if
//主标题
l_str_printtool.str_title_1 = " "
//副标题,如果赋值"today" 打印时自动显示当前日期
l_str_printtool.str_title_2 = ""
//脚注,如果赋值"today" 打印时自动显示当前日期
l_str_printtool.str_title_3 = g_date
//主标题下划线,1有下划线,其它无下划线
l_str_printtool.str_underline_1=1
//副标题下划线,1有下划线,其它无下划线
l_str_printtool.str_underline_2=0
//脚注下划线,1有下划线,其它无下划线
l_str_printtool.str_underline_3=0
//脚注对齐方式,1右对齐,2中间对齐,3左对齐,其它无效
l_str_printtool.str_align_3=3
//调用打印窗口
openWithparm(w_printtool,l_str_printtool)
复位
cb_reset:
clicked!
dw_table.reset()
sle_count.text=""
查询
cb_select:
clicked!
gf_query(dw_table, i_orig_sql, sle_count)
dw_table.SetRedraw(True)
cb_first.triggerevent(clicked!)
全部查询
cb_retr:
clicked!
string r_proj_code,r_where_sql
string r_state
i_modi_sql = "DataWindow.Table.Select="" + i_orig_sql + r_where_sql + """
//i_modi_sql = "DataWindow.Table.Select="" + i_orig_sql + """
r_state = dw_table.Modify(i_modi_sql)
IF r_state = "" THEN
dw_table.Retrieve( )
dw_table.setfocus()
ELSE
MessageBox("提示", "数据窗口修改失败!" + r_state)
return
END IF
gf_dw_count(dw_table,sle_count)
排序
cb_sort:
clicked!
s_one_datawindow dws
string r_string,r_string1,r_col_primary[],mod_string,err
integer r_length,r_col_row,r_col_count3,r_row
dws.string1="sort"
dws.dw1=dw_table
OpenWithParm(w_col_copy,dws)
r_string=Message.StringParm
dw_table.SetSort(r_string)
dw_table.Sort( )
cb_first.triggerevent(clicked!)
过滤
cb_filter:
clicked!
openwithparm(w_filter,dw_table)
dw_table.SetRedraw(True)
cb_first.triggerevent(clicked!)
表格格式
rb_table:
clicked!
dw_table.visible=true
dw_free.visible=false
i_dw=dw_table
自由格式
rb_free:
clicked!
dw_free.visible=true
dw_table.visible=false
i_dw=dw_free
退出
cb_exit:
clicked!
close(parent)
窗口名
w_i_o_ini
Message参数
无
主要功能
数据导入导出表初始窗口
实例变量声明
无
窗口函数
参数:
返回值类型:
控件事件
脚本
w_i_o_ini:
Open!
this.title="导入导出表初始"
Environment a
Integer w,h
GetEnvironment(a)
w=PixelsToUnits(a.screenwidth,xpixelstounits!)
h=PixelsToUnits(a.screenheight,ypixelstounits!)
move((w - width)/2,(h - height)/2)
导入导出表初始
cb_ini:
clicked!
integer NET
Net = MessageBox("提示", "是否真的要对导入导出表进行初始化?", Exclamation!, YESNO!, 2)
IF Net = 2 THEN return
SetPointer(HourGlass!)
f_i_o()
SetPointer(Arrow!)
MessageBox("提示","导入导出表初始化完毕!")
退出
cb_exit:
clicked!
close(parent)
窗口名
w_i_o
Message参数
Message.StringParm
主要功能
数据导入导出窗口
实例变量声明
string i_type,i_orig_sql_1,i_dept_code
string i_orig_sql,i_table_name
string i_save_import
string i_repeat_flag="0" //无重复数据行
string i_str_precolumn,i_path
string ename[],i_title
long i_int_clicktime,i_row
string i_filename,i_tablename//用于生成导出的文件名
窗口函数1
f_date2(r_date_temp,r_interval)
参数:string r_date_temp
string r_interval
返回值类型:string
//取出提醒日期
string r_date
//导入导出期限(00无、01每日、02每周、03每月、04每季度、05每年)
choose case r_interval
case "00"
r_date=r_date_temp
case "01"
r_date=f_date_after_day(r_date_temp)
case "02"
r_date=string(RelativeDate(date(r_date_temp), 7),"yyyy-mm-dd")
case "03"
r_date=f_date_after_month(r_date_temp)
case "04"
r_date=f_date_after_quarter(r_date_temp)
case "05"
r_date=f_date_after_year(r_date_temp)
end choose
return string(date(r_date),"yyyy-mm-dd")
窗口函数2
f_copy_free(r_filename,r_row,r_date2,r_tablename)
参数:string r_filename
long r_row
string r_date2
string r_tablename
返回值类型:integer
int r_value,r_pathlen,r_rt
string r_filetype,r_filename_code,r_pathfilename,r_path
r_pathfilename=i_table_name + g_pathfilename
//1、打开文件保存对话窗口
r_value=getfilesavename("导出",r_pathfilename,&
r_filename,"dbf",&
"dbf files(*.dbf),*.dbf,"+&
"text files(*.txt),*.txt,"+&
"excel files(*.excel),*.xls,"+&
"sql files(*.sql),*.sql,")
if r_value1 then
messagebox("提示","打开文件保存对话窗口失败!")
return 0
end if
r_filetype=right(r_pathfilename,3)
r_pathlen=len(r_pathfilename) - len(r_filename) - 1
r_path=left(r_pathfilename,r_pathlen)
//2、按不同类型文件进行保存,并修改提醒日期及成功标记
choose case r_filetype
case "dbf"
r_filename_code="01" r_rt=tab_copy.tabpage_item.dw_copy_table.saveas(r_pathfilename,dbase3!,true)
case "txt"
r_filename_code="02"
// r_rt=tab_copy.tabpage_item.dw_copy_table.saveas(r_pathfilename,text!,true) //true:要title
r_rt=tab_copy.tabpage_item.dw_copy_table.saveas(r_pathfilename,text!,false) //false:不要title
case "xls"
r_filename_code="03" r_rt=tab_copy.tabpage_item.dw_copy_table.saveas(r_pathfilename,Excel!,true)
case "sql"
r_filename_code="04" r_rt=tab_copy.tabpage_item.dw_copy_table.saveas(r_pathfilename,sqlinsert!,true)
end choose
//3、修改路径、操作员、文件名、文件类型、操作日期 (flag_code标记:01成功、02失败)
if r_rt=1 then
messagebox("提示","数据导出成功!")
tab_copy.tabpage_main.dw_main.setitem(r_row,"flag_code","01")
tab_copy.tabpage_main.dw_main.setitem(r_row,"date2",r_date2)
else
messagebox("提示",r_tablename+"数据导出失败!")
tab_copy.tabpage_main.dw_main.setitem(r_row,"flag_code","02")
end if
tab_copy.tabpage_main.dw_main.setitem(r_row,"path",r_path)
// tab_copy.tabpage_main.dw_main.setitem(r_row,"oper_code",g_oper_code)
tab_copy.tabpage_main.dw_main.setitem(r_row,"file_type_code",r_filename_code)
tab_copy.tabpage_main.dw_main.setitem(r_row,"date1",g_date)
if tab_copy.tabpage_main.dw_main.update()>0 then
commit using sqlca;
else
rollback using sqlca;
end if
return r_rt
窗口函数3
f_copy_gd(r_path,r_filename,r_row,r_date2)
参数:string r_path
string r_filename
long r_row
string r_date2
返回值类型:integer
string r[20],r_pathfilename,r_filetype,r_filename_code
int i,p=1,net,r_rt
boolean r_state
//1、生成路径
do while p0
p=pos(r_path,"\",p+1)
if p0 then
i=i+1
r[i]=mid(r_path,1,p - 1)
end if
loop
r[i+1]=r_path
for p=2 to i+1
CreateDirectoryA(r[p],0)
next
r_pathfilename=r_path+"\"+r_filename
r_state=fileexists(r_pathfilename)
if r_state then net=messagebox("提示",r_pathfilename+" 文件已经存在,是否覆盖原文件?",question!,yesno!,2)
if net=2 then return 0
//覆盖
filedelete(r_pathfilename)
r_filetype=right(r_pathfilename,3)
//2、按不同类型文件进行保存、修改成功标记、提醒日期
r_pathfilename=g_pathfilename
//messagebox("r_pathfilename",r_pathfilename)
choose case r_filetype
case "dbf"
r_filename_code="01"
r_rt=tab_copy.tabpage_item.dw_copy_table.saveas(r_pathfilename,dbase3!,true)
case "txt"
r_filename_code="02"
r_rt=tab_copy.tabpage_item.dw_copy_table.saveas(r_pathfilename,text!,false) //false:不要title
case "xls"
r_filename_code="03"
r_rt=tab_copy.tabpage_item.dw_copy_table.saveas(r_pathfilename,Excel!,true)
case "sql"
r_filename_code="04"
r_rt=tab_copy.tabpage_item.dw_copy_table.saveas(r_pathfilename,sqlinsert!,true)
end choose
//3、修改路径、日期、操作员
if r_rt=1 then
messagebox("提示","数据导出成功!")
tab_copy.tabpage_main.dw_main.setitem(r_row,"flag_code","01")
tab_copy.tabpage_main.dw_main.setitem(r_row,"date2",r_date2)
else
messagebox("提示",r_tablename+"数据导出失败!")
tab_copy.tabpage_main.dw_main.setitem(r_row,"flag_code","02")
end if
tab_copy.tabpage_main.dw_main.setitem(r_row,"path",r_path)
tab_copy.tabpage_main.dw_main.setitem(r_row,"date1",g_date)
//tab_copy.tabpage_main.dw_main.setitem(r_row,"oper_code",g_oper_code)
if tab_copy.tabpage_main.dw_main.update()>0 then
commit using sqlca;
else
rollback using sqlca;
end if
return r_rt
控件事件
脚本
w_i_o:
Open!
integer r_col_count,i
string r_col,r_modi=""
s_three_strings s
s=Message.PowerObjectParm
i_type=s.string1
i_save_import = s.string2
tab_copy.tabpage_main.dw_main.dataobject="dw_save_import"
tab_copy.tabpage_main.dw_main.settransobject(sqlca)
tab_copy.tabpage_main.dw_dept.settransobject(sqlca)
tab_copy.tabpage_main.dw_interval.settransobject(sqlca)
tab_copy.tabpage_main.dw_save_import.settransobject(sqlca)
tab_copy.tabpage_main.dw_mean_code.settransobject(sqlca)
tab_copy.tabpage_main.dw_file_type.settransobject(sqlca)
tab_copy.tabpage_main.dw_dept.insertrow(0)
tab_copy.tabpage_main.dw_mean_code.insertrow(0)
tab_copy.tabpage_main.dw_interval.insertrow(0)
tab_copy.tabpage_main.dw_save_import.insertrow(0)
tab_copy.tabpage_main.dw_file_type.insertrow(0)
tab_copy.tabpage_main.dw_save_import.setitem(1,1,i_save_import)
tab_copy.tabpage_item.ddlb_drive.DirList("*.*",49152)
tab_copy.tabpage_item.ddlb_drive.text=g_drive //g_drive:"[-e-]"
tab_copy.tabpage_item.ddlb_drive.visible=false
tab_copy.tabpage_item.st_drive.visible=false
tab_copy.tabpage_main.dw_main.Object.DataWindow.ReadOnly="Yes"
tab_copy.tabpage_item.dw_copy_table.Object.DataWindow.ReadOnly="No"
tab_copy.tabpage_main.dw_save_import.Object.DataWindow.ReadOnly="Yes"
tab_copy.tabpage_item.cb_copy.enabled=false
tab_copy.tabpage_item.enabled=false
i_type=lower(i_type)
CHOOSE CASE i_type
CASE "c_operator"
tab_copy.tabpage_main.sle_table_name.text="c_operator"
tab_copy.tabpage_main.sle_chinese_name.text="人员信息"
tab_copy.tabpage_main.sle_dw_name.text="dw_c_operator_grid"
CASE "all" //用于维护
tab_copy.tabpage_main.sle_table_name.text=" "
tab_copy.tabpage_main.sle_chinese_name.text=" "
tab_copy.tabpage_main.sle_dw_name.text=" "
this.title="所有表"
CASE ELSE
this.title=""
END CHOOSE
r_col_count=integer(tab_copy.tabpage_main.dw_main.object.datawindow.column.count) //dw_table数据窗口的列数
i_orig_sql=tab_copy.tabpage_main.dw_main.Describe("DataWindow.Table.Select")
i_orig_sql_1=tab_copy.tabpage_main.dw_main.Describe("DataWindow.Table.Select")
FOR i=1 TO r_col_count
r_col = "#"+string(i) + ".Name" ename[i]=tab_copy.tabpage_main.dw_main.describe(r_col)
if not(ename[i]="save_import_code" or ename[i]="chinese_name" ) then
r_modi=r_modi + ename[i] + ".width=0"
end if
NEXT
tab_copy.tabpage_main.dw_main.modify(r_modi)
tab_copy.tabpage_item.dw_copy_table_repeat.visible=false
tab_copy.tabpage_item.dw_copy_table_repeat.x=tab_copy.tabpage_item.dw_copy_table.x
tab_copy.tabpage_item.dw_copy_table_repeat.y=tab_copy.tabpage_item.dw_copy_table.y
tab_copy.tabpage_item.dw_copy_table_repeat.width=tab_copy.tabpage_item.dw_copy_table.width
tab_copy.tabpage_item.dw_copy_table_repeat.height=tab_copy.tabpage_item.dw_copy_table.height
if i_save_import="01" then //"01"导入
this.title="导入" + this.title
elseif i_save_import="02" then //"02"导出
this.title="导出" + this.title
end if
tab_copy.tabpage_main.dw_main.modify("DataWindow.Detail.color ="0~tIF(isrownew(getrow()),RGB(238, 237, 234), IF(MOD(GETROW(),2)=0,RGB(238, 237, 234), RGB(255, 255, 255)))"")
tab_copy.tabpage_item.dw_copy_table.modify("DataWindow.Detail.color ="0~tIF(isrownew(getrow()),RGB(238, 237, 234), IF(MOD(GETROW(),2)=0,RGB(238, 237, 234), RGB(255, 255, 255)))"")
tab_copy.tabpage_main. dw_main:
clicked!
if not row>0 then return
This.SetRow(row)
This.SelectRow(0, FALSE)
This.SelectRow(row, TRUE)
i_save_import=this.getitemstring(row,"save_import_code")
if i_save_import="01" then //"01"导入
i_title="导入" + this.getitemstring(row,"chinese_name")
elseif i_save_import="02" then //"02"导出
i_title="导出" + this.getitemstring(row,"chinese_name")
end if
st_tip.text=i_title
gf_dw_count(tab_copy.tabpage_main.dw_main,tab_copy.tabpage_main.sle_count_main)
i_row=row
dw_main.TriggerEvent("ue_1")
tab_copy.tabpage_main. dw_main:
ue_1!
(自定义事件)
string r_dw_name
r_dw_name=this.getitemstring(i_row,"table_dw_name")
i_save_import=this.getitemstring(i_row,"save_import_code")
i_type=this.getitemstring(i_row,"table_name")
//01导入、02导出
if i_save_import="02" then
tab_copy.tabpage_item.cb_inqu_select.enabled=true
tab_copy.tabpage_item.cb_input.enabled=false
tab_copy.tabpage_item.cb_copy.enabled=false
tab_copy.tabpage_item.cb_save.enabled=false
tab_copy.tabpage_item.cb_test.enabled=false
tab_copy.tabpage_item.cb_del.enabled=false
tab_copy.tabpage_item.cb_repeat_data.enabled=false
tab_copy.tabpage_item.rb_append.enabled=false
tab_copy.tabpage_item.rb_override.enabled=false
else
tab_copy.tabpage_item.cb_inqu_select.enabled=false
tab_copy.tabpage_item.cb_input.enabled=true
tab_copy.tabpage_item.cb_copy.enabled=false
tab_copy.tabpage_item.cb_save.enabled=false
tab_copy.tabpage_item.cb_test.enabled=false
tab_copy.tabpage_item.cb_del.enabled=false
tab_copy.tabpage_item.cb_repeat_data.enabled=false
tab_copy.tabpage_item.rb_append.enabled=true
tab_copy.tabpage_item.rb_override.enabled=true
end if
tab_copy.tabpage_item.dw_copy_table.dataobject=r_dw_name
tab_copy.tabpage_item.dw_copy_table.settransobject(sqlca)
i_orig_sql=tab_copy.tabpage_item.dw_copy_table.Describe("DataWindow.Table.Select")
//dw_copy_table_repeat存放dw_copy_table中测试后删除的重复行
tab_copy.tabpage_item.dw_copy_table_repeat.dataobject=r_dw_name
tab_copy.tabpage_item.dw_copy_table_repeat.settransobject(sqlca)
tab_copy.tabpage_item.dw_copy_table_repeat.visible=false
tab_copy.tabpage_item.dw_copy_table_repeat.object.datawindow.readonly="yes"
tab_copy.tabpage_item.dw_copy_table.object.datawindow.readonly="yes"
查询
tab_copy.tabpage_main.
cb_retrieve:
clicked!
//按查询条件查询出需要导入导出的表
string r_dept,r_save_import,r_table_name,r_chinese_name
string r_dw_name,r_path,r_interval,r_date1,r_date2
long r_rowcount
string r_modi_sql,r_where_sql,r_state,r_mean_code,r_file_type,r_code
dw_dept.accepttext()
dw_save_import.accepttext()
dw_interval.accepttext()
dw_mean_code.accepttext()
dw_file_type.accepttext()
r_dept=dw_dept.getitemstring(1,1)
r_mean_code=dw_mean_code.getitemstring(1,1)
r_save_import=dw_save_import.getitemstring(1,1)
r_file_type=dw_file_type.getitemstring(1,1)
r_interval=dw_interval.getitemstring(1,1)
r_table_name=sle_table_name.text
r_chinese_name=sle_chinese_name.text
r_dw_name=sle_dw_name.text
r_path=sle_path.text
r_date1=sle_date1.text
r_date2=sle_date2.text
i_dept_code=r_dept
r_code="%"
r_dept="~"" + f_string(r_dept) +"~""
r_mean_code="~"" + f_string(r_mean_code) + "~""
r_save_import="~"" + f_string(r_save_import) +"~""
r_file_type="~"" + f_string(r_file_type) +"~""
r_table_name="~"" + f_string(r_table_name) +"~""
r_chinese_name=trim(r_chinese_name)
r_chinese_name="~"" + f_string2(r_chinese_name) +"~""
r_dw_name="~"" + f_string(r_dw_name) +"~""
r_path="~"" + f_string(r_path) +"~""
r_interval="~"" + f_string(r_interval) +"~""
r_date1="~"" + f_string(r_date1) +"~""
r_date2="~"" + f_string(r_date2) +"~""
r_code="~"" + r_code +"~""
r_where_sql= " dept_code like " + r_dept &
+ " and save_import_code like " + r_save_import &
+ " and mean_code like " + r_mean_code &
+ " and table_name like " + r_table_name &
+ " and chinese_name like " + r_chinese_name &
+ " and table_dw_name like " + r_dw_name &
+ " and path like " + r_path &
+ " and file_type_code like " + r_file_type &
+ " and interval_code like " + r_interval &
+ " and date1 like " + r_date1 &
+ " and date2 like " + r_date2 &
+ " and oper_code like " + r_code
if f_where_exist(i_orig_sql_1)=1 then
r_where_sql=" and " + r_where_sql
else
r_where_sql=" where " + r_where_sql
end if
r_modi_sql = "DataWindow.Table.Select=~"" + i_orig_sql_1 + r_where_sql + "~""
r_state = tab_copy.tabpage_main.dw_main.Modify(r_modi_sql)
IF r_state = "" THEN
tab_copy.tabpage_main.dw_main.Retrieve()
tab_copy.tabpage_main.dw_main.setfocus()
r_rowcount= tab_copy.tabpage_main.dw_main.rowcount()
IF r_rowcount>0 THEN
tab_copy.tabpage_item.enabled=true gf_dw_count(tab_copy.tabpage_main.dw_main,tab_copy.tabpage_main.sle_count_main)
i_row=1
dw_main.scrolltorow(i_row)
dw_main.SelectRow(0, FALSE)
dw_main.SelectRow(i_row, TRUE)
dw_main.TriggerEvent("ue_1")
ELSE
tab_copy.tabpage_item.enabled=false
sle_count_main.TEXT=""
END IF
ELSE
tab_copy.tabpage_item.enabled=false
MessageBox("提示", "数据窗口修改失败!" + r_state)
return
END IF
tab_copy.tabpage_item.dw_copy_table:
clicked!
this.setrow(row)
i_row=this.getrow()
IF i_row>0 THEN
This.SELECTROW(0,FALSE)
This.SELECTROW(i_row,TRUE)
if i_save_import="01" then cb_del.enabled=true //01导入、02导出
END IF
gf_dw_count(tab_copy.tabpage_item.dw_copy_table,tab_copy.tabpage_item.sle_count)
条件查询
tab_copy.tabpage_item.
cb_inqu_select:
clicked!
long r_rowcount,r_ret
r_ret=gf_query(tab_copy.tabpage_item.dw_copy_table, i_orig_sql, tab_copy.tabpage_item.sle_count)
if r_ret=0 then
return
end if
tab_copy.tabpage_item.dw_copy_table.SetRedraw(True)
gf_dw_count(tab_copy.tabpage_item.dw_copy_table,tab_copy.tabpage_item.sle_count)
r_rowcount=dw_copy_table.rowcount()
if r_rowcount>0 then
cb_copy.enabled=true
else
cb_copy.enabled=false
messagebox("提示","无记录!")
end if
导出
tab_copy.tabpage_item.
cb_copy:
clicked!
long r_rowcount,r_row,r_pos_date
string r_interval,r_mean_code,r_path,r_filename
string r_date2,r_tablename
int net,r_return,r_rt
stringr_dept_code,i_orig_sql_temp,r_drive,r_date
string r_file_type,r_file_type_name
r_rowcount=dw_copy_table.rowcount()
if not r_rowcount>0 then
messagebox("提示","该窗口无数据!")
return
end if
Net = MessageBox("提示", "是否真的要导出?", Exclamation!, YESNO!, 1)
if net=2 then return
r_dept_code=i_dept_code
r_row=tab_copy.tabpage_main.dw_main.getrow()
if not r_row>0 then
messagebox("提示","请选择需要导出的表!")
return
end if
i_table_name=tab_copy.tabpage_main.dw_main.getitemstring(r_row,"table_name")//用于生成导出的文件名
//取出固定变量
r_mean_code=tab_copy.tabpage_main.dw_main.getitemstring(r_row,"mean_code")
r_tablename=tab_copy.tabpage_main.dw_main.getitemstring(r_row,"table_name")
r_path=tab_copy.tabpage_main.dw_main.getitemstring(r_row,"path")
r_filename=tab_copy.tabpage_main.dw_main.getitemstring(r_row,"file_name")
r_interval=tab_copy.tabpage_main.dw_main.getitemstring(r_row,"interval_code")
r_file_type=tab_copy.tabpage_main.dw_main.getitemstring(r_row,"interval_code")
r_file_type=tab_copy.tabpage_main.dw_main.getitemstring(r_row,"file_type_code")
choose case r_file_type
case "01"
r_file_type_name="dbf"
case "02"
r_file_type_name="txt"
case "03"
r_file_type_name="xls"
case "04"
r_file_type_name="sql"
case else
r_file_type_name="dbf"
end choose
//取出提醒日期,date1:最近操作日期,date2:提醒日期
r_pos_date=pos(i_orig_sql,"DATE1 =")
if r_pos_date>0 then
r_date=mid(i_orig_sql,r_pos_date+9,10)
r_date2=f_date2(r_date,r_interval)
else
r_date2=f_date2(g_date,r_interval)
end if
choose case r_mean_code
case "01" //固定目录导出(g_dir_gd)
r_filename=r_filename+"."+r_file_type_name
f_copy_gd(r_path,r_filename,r_row,r_date2,r_tablename)
case "02" //自由导出
f_copy_free(r_filename,r_row,r_date2,r_tablename)
case "03" //生成目标文件夹导出(g_dir_sc),与路径设置r_path无关
r_drive=ddlb_drive.text
if isnull(r_drive) or trim(r_drive)="" then
messagebox("警告","盘符设置不能为空!")
return
end if
r_drive=upper(mid(r_drive,3,1)) //盘符
r_path=r_drive+g_dir_sc+"\"+r_tablename //自动生成路径
r_filename=r_filename+"."+r_file_type_name
f_copy_gd(r_path,r_filename,r_row,r_date2,r_tablename)
case else
messagebox("提示","该表无导出方式,无法导出!")
return
end choose
this.enabled=false
导入
tab_copy.tabpage_item.
cb_input:
clicked!
long r_row,r_pathlen
int r_rtn
string r_pathfilename,r_filename,r_filetype,r_path,r_tablename
string r_filename_code,r_interval,r_date2
string r_mean_code,r_drive,r_date,r_dept_code
string r_file_type,r_file_type_name
r_row=tab_copy.tabpage_main.dw_main.getrow()
if not r_row>0 then
messagebox("提示","请选择需要导入的表!")
return
end if
//取出固定变量
r_mean_code=tab_copy.tabpage_main.dw_main.getitemstring(r_row,"mean_code")
r_path=tab_copy.tabpage_main.dw_main.getitemstring(r_row,"path")
r_tablename=tab_copy.tabpage_main.dw_main.getitemstring(r_row,"table_name")
r_filename=tab_copy.tabpage_main.dw_main.getitemstring(r_row,"file_name")
i_filename=r_tablename //供接口转换用
r_interval=tab_copy.tabpage_main.dw_main.getitemstring(r_row,"interval_code")
r_file_type=tab_copy.tabpage_main.dw_main.getitemstring(r_row,"file_type_code")
choose case r_file_type
case "01"
r_file_type_name="dbf"
case "02"
r_file_type_name="txt"
case "03"
r_file_type_name="xls"
case "04"
r_file_type_name="sql"
case else
r_file_type_name="dbf"
end choose
r_dept_code=i_dept_code
r_date2=f_date2(g_date,r_interval)
i_table_name=r_tablename
r_rtn=1
choose case r_mean_code
case "01" //固定目录导入(g_dir_gd)
r_pathfilename=r_path+"\"+r_filename+"."+r_file_type_name
case "02" //自由导入
r_rtn=getfilesavename("打开文件",r_pathfilename,&
r_filename,"dbf", "Dbf Files (*.dbf),*.dbf," + &
"Text Files (*.TXT),*.TXT," + "Excel Files (*.xls),*.xls," + &
"SQL Files (*.sql),*.sql," )
case "03" //生成目标文件夹导入(g_dir_sc),与路径设置r_path无关
r_drive=ddlb_drive.text
if isnull(r_drive) or trim(r_drive)="" then
messagebox("警告","盘符设置不能为空!")
return
end if
r_drive=upper(mid(r_drive,3,1)) //盘符
r_path=r_drive+g_dir_sc+"\"+r_tablename //自动生成路径
r_pathfilename=r_path+"\"+r_filename+"."+r_file_type_name
case else
messagebox("提示","该表无导入方式,无法导入!")
return
end choose
if r_rtn1 and r_rtn0 then
messagebox("提示","操作失败!")
return
end if
if r_rtn=0 then
return
end if
r_rtn=dw_copy_table.ImportFile(r_pathfilename)if r_rtn>0 then
tab_copy.tabpage_main.dw_main.setitem(r_row,"flag_code","01") //01成功、02失败
tab_copy.tabpage_main.dw_main.setitem(r_row,"date2",r_date2) //提醒日期
cb_save.enabled=false
cb_test.enabled=true
cb_repeat_data.enabled=false
else
messagebox("提示","导入失败!")
tab_copy.tabpage_main.dw_main.setitem(r_row,"flag_code","02")
cb_save.enabled=false
cb_test.enabled=false
cb_repeat_data.enabled=false
return
end if
r_filetype=right(r_pathfilename,3)
choose case r_filetype
case "dbf"
r_filename_code="01"
case "txt"
r_filename_code="02"
case "xls"
r_filename_code="03"
case "sql"
r_filename_code="04"
case else
r_filename_code="01"
r_filetype ="dbf"
end choose
if r_mean_code="02" then
tab_copy.tabpage_main.dw_main.setitem(r_row,"path",i_path)
r_filetype="." + r_filetype
r_filename=mid(r_filename,1,pos(r_filename,r_filetype) - 1 )
tab_copy.tabpage_main.dw_main.setitem(r_row,"file_name",r_filename)
tab_copy.tabpage_main.dw_main.setitem(r_row,"file_type_code",r_filename_code) //文件类型
end if
tab_copy.tabpage_main.dw_main.setitem(r_row,"date1",g_date) //最近操作日期
r_rtn = MessageBox("提示", "导入成功,是否需要对数据窗口中的导入数据进行重复性测试?",Exclamation!, YESNO!, 1)
if r_rtn=1 then
cb_test.enabled=true
// cb_test.triggerevent(clicked!)
else
cb_test.enabled=false
i_repeat_flag="null" //未进行重复数据测试标记
//cb_repeat_data.text="&F显示重复数据"
tab_copy.tabpage_item.dw_copy_table_repeat.visible=false
cb_repeat_data.enabled=false
rb_append.enabled=false
rb_override.enabled=false
rb_override.checked=true
end if
cb_save.enabled=true
gf_dw_count(tab_copy.tabpage_item.dw_copy_table,tab_copy.tabpage_item.sle_count)
测试重复数据
tab_copy.tabpage_item.
cb_test:
clicked!
//对数据窗口中的导入数据进行重复性测试
integer NET
long r_count,r_rowcount,r_row
dw_copy_table.accepttext()
dw_copy_table.SelectRow(0, FALSE) //所有行均不选中
SetPointer(HourGlass!)
r_count=f_dw_test_repeat(i_type,dw_copy_table,tab_copy.tabpage_item.sle_count)
if r_count=0 then
MessageBox("提示", "无重复数据行!")
i_repeat_flag="0" //无重复数据行
else
MessageBox("提示", "有 " + string(r_count) +" 行重复数据!")
i_repeat_flag="1" //有重复数据行
r_rowcount=dw_copy_table.rowcount()
r_count=1
r_row=1
DO WHILE r_count0 THEN
messagebox("提示","共 "+string(r_count)+" 条重复数据行!")
ELSE
messagebox("提示","无重复数据行!")
END IF
ELSE
this.text="&F显示重复数据"
tab_copy.tabpage_item.dw_copy_table.visible=true
tab_copy.tabpage_item.dw_copy_table_repeat.visible=false
r_count=tab_copy.tabpage_item.dw_copy_table.ROWCOUNT()
IF r_count>0 THEN
messagebox("提示","共 "+string(r_count)+" 条新数据行!")
ELSE
messagebox("提示","无新的数据行!")
END IF
END IF
删除
tab_copy.tabpage_item.
cb_del:
clicked!
INTEGER NET
Net = MessageBox("提示", "是否真的要删除所选中的行?", Exclamation!, YESNO!, 1)
IF Net = 2 THEN return
this.enabled=false
dw_copy_table.DELETEROW(i_row)
gf_dw_count(tab_copy.tabpage_item.dw_copy_table,tab_copy.tabpage_item.sle_count)
复位
tab_copy.tabpage_item.
cb_reset:
clicked!
dw_copy_table.reset()
dw_copy_table_repeat.reset()
sle_count.text=""
cb_test.enabled=false
cb_repeat_data.enabled=false
cb_repeat_data.text="&F显示重复数据"
tab_copy.tabpage_item.dw_copy_table_repeat.visible=false
tab_copy.tabpage_item.dw_copy_table.visible=true
退出
tab_copy.tabpage_main.
cb_exit:
clicked!
cb_close.triggerevent(clicked!)
关闭
cb_close:
clicked!
close(parent)
保存
tab_copy.tabpage_item.
cb_save:
clicked!
int r_rtn
long r_rowcount,r_return,NET,r_rowcount_repeat
boolean r_retu
r_rowcount=dw_copy_table.rowcount()
r_rowcount_repeat=dw_copy_table_repeat.rowcount()
if r_rowcount0 then
dw_table.scrolltorow(1)
dw_table.SELECTROW(0,FALSE)
dw_table.SELECTROW(1,TRUE)
end if
2、《 存货子系统》码表查询处理。
通过继承窗口w_code_ch,产生窗口w_code_ch_inqu,来实现对《 存货子系统》码表的查询处理。
窗口w_code_ch_inqu的相关脚本修改如下:
窗口名
w_code_ch_inqu
父窗口
w_code_ch
实例变量声明
窗口函数
控件事件
脚本
w_code_ch_inqu:
open!
扩展父脚本:Extend Ancestor Script
//w_code_inqu: open
dw_table.object.datawindow.readonly="yes"
cb_inser.enabled=false
cb_del.enabled=false
cb_recov.enabled=false
cb_repair.enabled=false
cb_save.enabled=false
实验八 《 存货子系统》软件编程——单表处理
实验目的:
完成《存货子系统》单表处理模块的编程。
实验环境:
安装Windows操作系统、PowerBuilder软件、SQL Anywhere数据库、教师提供的软件原型平台等。
实验方式:
分组进行。
实验内容:
1、《存货子系统》单表输入、修改处理。
通过继承窗口w_sheet_input,产生窗口w_sheet_input_ch,来实现对《 存货子 系统》单表的输入处理。
窗口w_sheet_input_ch的相关事件及脚本修改如下:
窗口名
w_sheet_input_ch
父窗口
w_sheet_input
实例变量声明
窗口函数
控件事件
脚本
w_sheet_input_ch:
open!
覆盖父脚本:Override Ancestor Script
string r_modi,r_col,r_col_name
integer i
i_type=Message.StringParm
CHOOSE CASE i_type
CHOOSE CASE i_type
CASE "ch_kcxxb"
dw_table.DATAOBJECT="dw_ch_kcxxb_grid"
dw_free.DATAOBJECT="dw_ch_kcxxb_free"
dw_print.DATAOBJECT="dw_ch_kcxxbr_free"
this.title="库存信息输入"
CASE "ch_qcyeb"
dw_table.DATAOBJECT="dw_ch_qcyeb_grid"
dw_free.DATAOBJECT="dw_ch_qcyeb_free"
dw_print.DATAOBJECT="dw_ch_qcyeb_free"
this.title="库存期初表"
END CHOOSE
dw_table.settransobject(sqlca)
dw_free.settransobject(sqlca)
dw_print.settransobject(sqlca)
dw_free.sharedata(dw_table)
dw_free.sharedata(dw_print)
cb_increase.triggerevent(clicked!)
rb_free.triggerevent(clicked!)
rb_free.checked=true
dw_table.x=dw_free.x
dw_table.y=dw_free.y
dw_table.width=dw_free.width
dw_table.height=dw_free.height
this.title=i_title + "输入"
2、《存货子 系统》单表综合查询处理。
通过继承窗口w_select,产生窗口w_select_ch,来实现对《 存货子 系统》单表的综合查询处理。
窗口w_select_ch的相关事件及脚本修改如下:
窗口名
w_select_ch
父窗口
w_select
实例变量声明
窗口函数
控件事件
脚本
w_select_ch:
open!
覆盖父脚本:Override Ancestor Script
i_type=Message.StringParm
CHOOSE CASE i_type
CASE "ch_kcxxb"
dw_table.DATAOBJECT="dw_ch_kcxxb_grid"
dw_free.DATAOBJECT="dw_ch_kcxxb_free"
dw_print.DATAOBJECT="dw_ch_kcxxbr_free"
this.title="库存信息输入"
CASE "ch_qcyeb"
dw_table.DATAOBJECT="dw_ch_qcyeb_grid"
dw_free.DATAOBJECT="dw_ch_qcyeb_free"
dw_print.DATAOBJECT="dw_ch_qcyeb_free"
this.title="库存期初表"
END CHOOSE
dw_table.settransobject(sqlca)
dw_free.settransobject(sqlca)
dw_table.sharedata(dw_free)
this.title=i_title+"查询"
dw_table.object.datawindow.readonly="yes"
dw_free.object.datawindow.readonly="yes"
i_col=integer(dw_table.object.datawindow.column.count) //dw_table数据窗口的列数
//i_col = integer(dw_table.describe("DataWindow.Column.Count"))
i_orig_sql=dw_table.Describe("DataWindow.Table.Select")
integer i
string r_col,r_col_name
FOR i=1 TO i_col
r_col="#"+string(i)
r_col_name = "#"+string(i) + ".Name" // "#i"代表第i列, #1.Name为第一列列名.
ename[i]=dw_table.describe(r_col_name) //ename[i]放第i列列名.
coltype[i]=dw_table.describe(ename[i] + ".ColType")
NEXT
rb_table.triggerevent(clicked!)
rb_table.checked=true
i_dw=dw_table
dw_free.x=dw_table.x
dw_free.y=dw_table.y
dw_free.width=dw_table.width
dw_free.height=dw_table.height
3、《存货子系统》单表修改处理。
通过继承窗口w_select_ch,产生窗口w_select_ch_modi,来实现对《存货子系统》单表的修改处理。
窗口w_select_ch_modi的相关事件及脚本修改如下:
窗口名
w_select_ch_modi
父窗口
w_select_ch
实例变量声明
窗口函数
增加控件
增加控件:cb_del、cb_del_all、cb_increase_copy、cb_modi、cb_save、st_modi、sle_modi
控件事件
脚本
w_select_ch_modi:
open!
扩展父脚本:Extend Ancestor Script
this.title= this.title + "修改"
dw_table.object.datawindow.readonly="no"
dw_free.object.datawindow.readonly="no"
dw_table:
clicked!
扩展父脚本:Extend Ancestor Script
IF i_row>0 THEN cb_del.enabled=true
dw_table:
itemerror!
扩展父脚本:Extend Ancestor Script
return 1
删除
cb_del:
clicked!
INTEGER NET
long R_ROW,r_count
Net = MessageBox("提示", "是否真的要删除所选中的行?", Exclamation!, YESNO!, 1)
IF Net = 2 THEN return
this.enabled=false
dw_table.DELETEROW(i_row)
gf_dw_count(dw_table,sle_count)
全部删除
cb_del_all:
clicked!
INTEGER NET
long R_ROW,r_count
Net = MessageBox("提示", "是否真的要全部删除?", Exclamation!, YESNO!, 1)
IF Net = 2 THEN return
this.enabled=false
r_count=dw_table.rowcount()
FOR R_ROW=1 TO r_count
dw_table.DELETEROW(0)
gf_dw_count(dw_table,sle_count)
NEXT
cb_save:
clicked!
integer rtn, NET
Net = MessageBox("提示", "是否真的要保存?", Exclamation!, YESNO!, 1)
IF Net 1 THEN return
dw_table.accepttext()
dw_free.accepttext()
if f_check_null(i_type,dw_table,"")=1 then
messagebox("提示","修改后再保存!")
return
end if
IF dw_table.ModifiedCount( ) > 0 OR dw_table.DeletedCount( ) >0 THEN
rtn = dw_table.Update( )
IF rtn = 1 THEN
COMMIT USING SQLCA;
messagebox("提示","保存成功!")
cb_reset.TriggerEvent(Clicked!)
ELSE
ROLLBACK USING SQLCA;
messagebox("提示","保存失败!")
END IF
END IF
cb_increase_copy:
clicked!
string r_string,r_sql,r_coltype
integer r_col_row
long r_count,r_count1,r_select_count
decimal r_decimal
r_count=dw_table.rowcount()
dw_table.INSERTROW(0)
r_count1=dw_table.rowcount()
dw_table.scrolltorow(r_count1)
i_row=dw_table.getrow()
dw_table.setrow(i_row)
r_select_count=dw_table.GetSelectedRow(0)
if r_count>0 then
if not r_select_count>0 then
r_select_count=r_count
end if
FOR r_col_row=1 TO i_col
r_coltype = coltype[r_col_row]
IF r_coltype = "!" THEN
MessageBox("错误", "数据类型错误!")
return
END IF
CHOOSE CASE r_coltype
CASE "number","long" ,"int" r_decimal=dw_table.getitemdecimal(r_select_count,ename[r_col_row])
dw_table.setitem(i_row,ename[r_col_row],r_decimal)
CASE "date"
CASE "datetime"
CASE ELSE
IF Left(r_coltype,4) = "char" THEN
r_string=dw_table.getitemstring(r_select_count,ename[r_col_row])
dw_table.setitem(i_row,ename[r_col_row],r_string)
ELSEIF Left(r_coltype,7) = "decimal" THEN // type is decimal
r_decimal=dw_table.getitemdecimal(r_select_count,ename[r_col_row])
dw_table.setitem(i_row,ename[r_col_row],r_decimal)
ELSE // error,"!"
END IF
END CHOOSE
NEXT
end if
cb_last.triggerevent(clicked!)
gf_dw_count(dw_table,sle_count)
cb_modi:
clicked!
//对所选中数据所在行中的数据全部按输入的当前列修改值 进行批量修改
long r_rowcount,r_row,i
string r_colname,r_value,r_col_type,r_colname_t
decimal r_value_d
integer NET
r_rowcount=dw_table.rowcount()
if not r_rowcount>0 then return
r_colname=dw_table.GetColumnName ( )
if isnull(r_colname) or trim(r_colname)="" then return
r_colname_t=dw_table.describe(r_colname + "_t.text")
Net = MessageBox("提示", "是否真的要对 "+r_colname_t+" 列进行修改?", Exclamation!, YESNO!, 2)
IF Net 1 THEN return
r_value=sle_modi.text
r_value_d=real(r_value)
r_col_type=""
SetPointer(HourGlass!)
FOR i=1 TO i_col
if ename[i]= r_colname then
r_col_type=coltype[i]
exit
end if
NEXT
If Left(r_col_type,4)="char" Then
FOR r_row=1 TO r_rowcount
dw_table.setitem(r_row,r_colname,r_value)
NEXT
Else
If Left(r_col_type,4)="date" Then
FOR r_row=1 TO r_rowcount
dw_table.setitem(r_row,r_colname,r_value)
NEXT
Else
FOR r_row=1 TO r_rowcount
dw_table.setitem(r_row,r_colname,r_value_d)
NEXT
End If
End If
SetPointer(arrow!)
1.库存信息输入的free 的格式
库存信息输入的grid的格式
库存期初的free格式的输入
库存期初的grid格式的输入
实验九 《 存货子系统》软件编程——业务处理
实验目的:
完成《存货子系统》单表处理模块的编程。
实验环境:
安装Windows操作系统、PowerBuilder软件、SQL Anywhere数据库、教师提供的软件原型平台等。
实验方式:
分组进行。
实验内容:
1、《存货子系统》单表输入、修改处理。
通过继承窗口w_sheet_input,产生窗口w_sheet_input_ch,来实现对《 存货子 系统》单表的输入处理。
窗口w_sheet_input_ch的相关事件及脚本修改如下:
窗口名
w_sheet_input_ch
父窗口
w_sheet_input
实例变量声明
窗口函数
控件事件
脚本
w_sheet_input_ch:
open!
覆盖父脚本:Override Ancestor Script
string r_modi,r_col,r_col_name
integer i
i_type=Message.StringParm
CHOOSE CASE i_type
CASE "ch_rkd"
dw_table.DATAOBJECT="dw_ch_rkd_free"
dw_free.DATAOBJECT="dw_ch_rkd_grid1"
dw_print.DATAOBJECT="dw_c_supp_free"
this.title="存货入库单"
CASE "ch_ckd"
dw_table.DATAOBJECT="dw_ch_ckd_free"
dw_free.DATAOBJECT="dw_ch_ckd_grid"
dw_print.DATAOBJECT="dw_c_supp_free"
this.title="存货出库单"
CASE "ch_xsthd"
dw_table.DATAOBJECT="dw_ch_xsthd_free"
dw_free.DATAOBJECT="dw_ch_xsthd_grid"
dw_print.DATAOBJECT="dw_c_supp_free"
this.title="销售退货单"
CASE "ch_chjcb"
dw_table.DATAOBJECT="dw_ch_chjcb_grid"
dw_free.DATAOBJECT="dw_ch_chjcd_free"
dw_print.DATAOBJECT="dw_ch_chjcd_free"
this.title="存货结存表"
CASE "ch_chpdb"
dw_table.DATAOBJECT="dw_ch_chpdb_free"
dw_free.DATAOBJECT="dw_ch_chpdb_grid"
dw_print.DATAOBJECT="dw_ch_chpdb_free"
this.title="存货盘点单"
END CHOOSE
dw_table.settransobject(sqlca)
dw_free.settransobject(sqlca)
dw_print.settransobject(sqlca)
dw_free.sharedata(dw_table)
dw_free.sharedata(dw_print)
i_col=integer(dw_table.object.datawindow.column.count) //数据窗口的列数
//注意:只有dw_free中挂的下拉数据窗口是带retrieve参数的,dw_table,dw_print均未带
FOR i=1 TO i_col
r_col = "#"+string(i) + ".Name" // "#i"代表第i列, #1.Name为第一列列名.
ename[i]=dw_free.describe(r_col) //ename[i]放第i列列名.
coltype[i]=dw_free.describe(ename[i] + ".ColType")
col_width[i]=dw_free.describe(ename[i] + ".width")
col_height[i]=dw_free.describe(ename[i] + ".height") //dw_vh isused in tab_1.tabpage_3.dw_3_free_v
col_y[i]=Double(dw_free.describe(ename[i] + ".y"))
col_height_t[i]=dw_free.describe(ename[i] + "_t.height")
col_y_t[i]=Double(dw_free.describe(ename[i] + "_t.y"))
// if dw_free.getchild(ename[i],i_dwc)=1 then
// i_dwc.settransobject(sqlca)
// i_dwc.retrieve("%")
// end if
if dw_free.getchild(ename[i],i_dwc)=1 then
i_dwc.settransobject(sqlca)
i_dwc.retrieve("%")
CHOOSE CASE ename[i]
CASE "kh_code"
i_dwc_kh_code=i_dwc
CASE "ht_id"
i_dwc_ht_id=i_dwc
CASE ELSE
END CHOOSE
end if
NEXT
cb_increase.triggerevent(clicked!)
rb_free.triggerevent(clicked!)
rb_free.checked=true
dw_table.x=dw_free.x
dw_table.y=dw_free.y
dw_table.width=dw_free.width
dw_table.height=dw_free.height
w_sheet_input_ch_rkd.width=3488
w_sheet_input_ch_rkd.height=1848
2、《存货子 系统》单表综合查询处理。
通过继承窗口w_select,产生窗口w_select_ch,来实现对《 存货子 系统》单表的综合查询处理。
窗口w_select_ch的相关事件及脚本修改如下:
窗口名
w_sheet_ch
父窗口
w_ sheet
实例变量声明
窗口函数
控件事件
脚本
w_sheet_ch_rkd:
dw_free
clicked!
覆盖父脚本:Override Ancestor Script
int rr,r_dw1_row
ii_row = dw_table.rowcount()
for rr = 1 to ii_row
r_dw1_row=dw_1.getrow()
i_rkd_rkdh=dw_1.getitemstring(r_dw1_row,"rkd_rkdh")
i_rkd_rkrq=dw_1.getitemstring(r_dw1_row,"rkd_rkrq")
i_rkd_yebh=dw_1.getitemstring(r_dw1_row,"rkd_yebh")
i_rkd_ywyxm=dw_1.getitemstring(r_dw1_row,"rkd_ywyxm")
dw_table.setitem(rr,"rkd_rkdh",i_rkd_rkdh)
dw_table.setitem(rr,"rkd_rkrq",i_rkd_rkrq)
dw_table.setitem(rr,"rkd_yebh",i_rkd_yebh)
dw_table.setitem(rr,"rkd_ywyxm",i_rkd_ywyxm)
next
w_sheet_ch_rkd:
Cb_increase
Clicked!
dw_1.insertrow(0)
dw_2.insertrow(0)
w_sheet_ch_rkd:
cb_saved
clicked
string r_chbm
long r_row1,r_rowcount
r_rowcount=dw_free.rowcount()
if r_rowcount = 1 then
r_chbm = dw_free.getitemstring(1,"ch_xsthd")
if isnull(r_chbm)=true then
dw_free.deleterow(r_row1)
end if
end if
long r_row,Net
string r_sheet_type_code,r_flag_code
Net = MessageBox("提示", "是否真的保存?", Exclamation!, YESNO!, 1)
IF Net = 2 THEN return
dw_free.accepttext()
dw_table.accepttext()
if f_check_null(i_type,dw_table,"")=1 then
messagebox("提示","修改后再保存!")
return
end if
r_row=dw_free.getrow()
if not( dw_free.rowcount()>=1 ) then return
if dw_free.update()>0 then
commit;
dw_free.reset()
sle_count.text=""
messagebox("提示","保存成功!")
else
rollback;
messagebox("提示","保存失败!")
return
end if
1.入库单的窗口
2 出库单的窗口
3.销售退货单的窗口
4.存货的盘点表窗口
5.存货的结存表窗口
实验九 《存货子系统》软件编程——导入导出处理
实验目的:
完成《存货子系统》导入导出处理模块的编程。
实验环境:
安装Windows操作系统、PowerBuilder软件、SQL Anywhere数据库、教师提供的软件原型平台等。
实验方式:
分组进行。
实验内容:
1、《存货子系统》的导入导出初始化处理。
通过以下修改来实现对《存货子系统》导入导出的初始化处理:
创建新的全局函数f_i_o_ch()。
通过继承窗口w_i_o_ini,产生窗口w_i_o_ini_ch。
函数名
f_i_o_ch
返回值类型
无
函数功能
导入导出初始化
参数定义
无
脚本
INSERT INTO save_import VALUES (
"001","ch_rkd","dw_ch_rkd_grid","01","02","D:\dj\data","ch_rkd","01","入库单","00","000","2002-01-01","2002-01-01","01","","");
INSERT INTO save_import VALUES (
"001","ch_rkd","dw_ch_rkd_grid","02","02","D:\dj\data","ch_rkd","01","入库单","00","000","2002-01-01","2002-01-01","01","","");
INSERT INTO save_import VALUES (
"001","ch_ckd","dw_ch_ckd_grid","01","02","D:\dj\data","ch_rkd","01","出库单","00","000","2002-01-01","2002-01-01","01","","");
INSERT INTO save_import VALUES (
"001","ch_ckd","dw_ch_ckd_grid","02","02","D:\dj\data","ch_rkd","01","出库单","00","000","2002-01-01","2002-01-01","01","","");
INSERT INTO save_import VALUES (
"001","ch_xsthd","dw_ch_xsthd_grid","01","02","D:\dj\data","ch_xsthd","01","销售退货单","00","000","2002-01-01","2002-01-01","01","","");
INSERT INTO save_import VALUES (
"001","ch_xsthd","dw_ch_xsthd_grid","02","02","D:\dj\data","ch_xsthd","01","销售退货单","00","000","2002-01-01","2002-01-01","01","","");
INSERT INTO save_import VALUES (
"001","ch_chpdb","dw_ch_chpdb_grid","01","02","D:\dj\data","ch_chpdb","01","存货盘点表","00","000","2002-01-01","2002-01-01","01","","");
INSERT INTO save_import VALUES (
"001","ch_chpdb","dw_ch_chpdb_grid","02","02","D:\dj\data","ch_chpdb","01","存货盘点表","00","000","2002-01-01","2002-01-01","01","","");
INSERT INTO save_import VALUES (
"001","ch_chjcb","dw_ch_chjcb_grid","01","02","D:\dj\data","ch_chjcb","01","存货结存表","00","000","2002-01-01","2002-01-01","01","","");
INSERT INTO save_import VALUES (
"001","ch_chjcb","dw_ch_chjcb_grid","02","02","D:\dj\data","ch_chjcb","01","存货结存表","00","000","2002-01-01","2002-01-01","01","","");
窗口名
w_i_o_ini_ch
父窗口
w_i_o_ini
实例变量声明
窗口函数
控件事件
脚本
导入导出表初始按钮
cb_ok:
clicked!
覆盖父脚本:Override Ancestor Script
integer NET
Net = MessageBox("提示", "是否真的要对导入导出表进行初始化?", Exclamation!, YESNO!, 2)
IF Net = 2 THEN return
SetPointer(HourGlass!)
f_i_o_ch()
SetPointer(Arrow!)
MessageBox("提示","导入导出表初始化完毕!")
2、《 存货子系统》的导入导出处理。
通过以下修改来实现对《存货子系统》导入导出的初始化处理:
创建新的全局函数f_dw_test_repeat_ch ()、f_dw_test_repeat_del_ch()。
通过继承窗口w_i_o,产生窗口w_i_o_ch。
函数名
f_dw_test_repeat_ch
返回值类型
long
函数功能
对数据窗口中的导入数据进行重复性测试
参数定义
r_type:string
r_dw: datawindow
r_sle: singlelineedit
脚本
//删除导入导出中的重复数据用于w_i_o导入导出
long r_row,r_rowcount,r_count,r_select,r_return=0
string r_primary[]
r_type=lower(r_type)
r_rowcount=r_dw.rowcount()
CHOOSE CASE r_type
CASE "c_operator"
r_count=1
r_primary[r_count]=""
FOR r_row=1 TO r_rowcount
r_primary[1]=r_dw.getitemstring(r_row,"oper_code")
delete from c_operator where c_operator.oper_code = :r_primary[1] ;
NEXT
CASE "ch_rkd"
r_count=1
r_primary[r_count]=""
FOR r_row=1 TO r_rowcount
r_primary[1]=r_dw.getitemstring(r_row,"rkd_rkdh")
delete from ch_rkd where ch_rkd.rkd_rkdh = :r_primary[1] ;
NEXT
CASE "ch_ckd"
r_count=1
r_primary[r_count]=""
FOR r_row=1 TO r_rowcount
r_primary[1]=r_dw.getitemstring(r_row,"ckd_ckdh")
delete from ch_ckd where ch_ckd.ckd_ckdh = :r_primary[1] ;
NEXT
CASE "ch_xsthd"
r_count=1
r_primary[r_count]=""
FOR r_row=1 TO r_rowcount
r_primary[1]=r_dw.getitemstring(r_row,"xsthd_xsthdh")
delete from ch_xsthd where ch_xsthd.xsthd_xsthdh = :r_primary[1] ;
NEXT
CASE "ch_chpdb"
r_count=1
r_primary[r_count]=""
FOR r_row=1 TO r_rowcount
r_primary[1]=r_dw.getitemstring(r_row,"chpdb_pddbh")
delete from ch_chpdb where ch_chpdb.chpdb_pddbhh = :r_primary[1] ;
NEXT
CASE "ch_chjcb"
r_count=1
r_primary[r_count]=""
FOR r_row=1 TO r_rowcount
r_primary[1]=r_dw.getitemstring(r_row,"chjcb_chbm")
delete from ch_chjcb where ch_chjcb.chjcb_chbm = :r_primary[1] ;
NEXT
CASE ELSE
END CHOOSE
return r_return
r_primary[1]=r_dw.getitemstring(r_row,"supp_code") //取关键字
delete from c_supp
where c_supp.supp_code = :r_primary[1] ;
NEXT
CASE ELSE
END CHOOSE
f_sql()
return r_return
函数名
f_dw_test_repeat_del_ch
返回值类型
long
函数功能
删除导入导出中的重复数据
参数定义
r_type:string
r_dw: datawindow
r_sle: singlelineedit
脚本
//删除导入导出中的重复数据用于w_i_o导入导出
long r_row,r_rowcount,r_count,r_select,r_return=0
string r_primary[]
r_type=lower(r_type)
r_rowcount=r_dw.rowcount()
CHOOSE CASE r_type
CASE "ch_rkd"
r_count=1
r_primary[r_count]=""
FOR r_row=1 TO r_rowcount
r_primary[1]=r_dw.getitemstring(r_row,"rkd_rkdh")
delete from ch_rkd where ch_rkd.rkd_rkdh = :r_primary[1] ;
NEXT
CASE "ch_ckd"
r_count=1
r_primary[r_count]=""
FOR r_row=1 TO r_rowcount
r_primary[1]=r_dw.getitemstring(r_row,"ckd_ckdh")
delete from ch_ckd where ch_ckd.ckd_ckdh = :r_primary[1] ;
NEXT
CASE "ch_xsthd"
r_count=1
r_primary[r_count]=""
FOR r_row=1 TO r_rowcount
r_primary[1]=r_dw.getitemstring(r_row,"xsthd_xsthdh")
delete from ch_xsthd where ch_xsthd.xsthd_xsthdh = :r_primary[1] ;
NEXT
CASE "ch_chpdb"
r_count=1
r_primary[r_count]=""
FOR r_row=1 TO r_rowcount
r_primary[1]=r_dw.getitemstring(r_row,"chpdb_pddbh")
delete from ch_chpdb where ch_chpdb.chpdb_pddbhh = :r_primary[1] ;
NEXT
CASE "ch_chjcb"
r_count=1
r_primary[r_count]=""
FOR r_row=1 TO r_rowcount
r_primary[1]=r_dw.getitemstring(r_row,"chjcb_chbm")
delete from ch_chjcb where ch_chjcb.chjcb_chbm = :r_primary[1] ;
NEXT
CASE ELSE
END CHOOSE
f_sql()
return r_return
窗口名
w_i_o_ch
父窗口
w_i_o
实例变量声明
窗口函数
控件事件
脚本
测试重复数据按钮
cb_test:
clicked!
覆盖父脚本:Override Ancestor Script
//对数据窗口中的导入数据进行重复性测试
integer NET
long r_count,r_rowcount,r_row
dw_copy_table.accepttext()
dw_copy_table.SelectRow(0, FALSE) //所有行均不选中
SetPointer(HourGlass!)
r_count=f_dw_test_repeat_ch(i_type,dw_copy_table,tab_copy.tabpage_item.sle_count)
if r_count=0 then
MessageBox("提示", "无重复数据行!")
i_repeat_flag="0" //无重复数据行
else
MessageBox("提示", "有 " + string(r_count) +" 行重复数据!")
i_repeat_flag="1" //有重复数据行
//删除重复数据行
r_rowcount=dw_copy_table.rowcount()
r_count=1
r_row=1
DO WHILE r_count
浅淡存货信息化管理篇5
医院信息化管理系统
一、项目总体目标本次项目的建设,意在医院信息化管理的创新,通过医院名医的经验记录、整理分析的全程信息化,促进临床科研有机结合,全面提升医院临床服务水平与传承创新能力,弘扬中西医药文化。
二、设计原则本系统设计须严格执行国家有关软件工程的标准,保证系统质量,提供完整、准确、详细的开发文档资料,应用设计符合国家及医疗卫生行业的相关标准、规范和医院自身的发展规划,遵循现行的或即将发布的涉及电子病历系统的国家法律法规。
2.1设计原则
系统的先进性
从医院的实际需求出发,对此次系统工程进行全面规划,采用现代化的理念和技术,对系统的设计做到合理化、科学化,达到低投资、高效益;
建成系统先进、适应未来发展,并具有强大的发展潜力。
系统的可靠性
此次系统是一个实际使用的工程,其技术是相对成熟的。应当充分利用现代最新技术、最可靠的成果,以便该系统在尽可能长的时间内与社会发展相适应。
系统的可维护性
系统建成后满足一是易于故障的排除,二是系统人性化管理,日常管理操作简便。
系统的安全性
此次系统采用多种手段防止各种形式与途径的非法破坏,建立健全各种保障措施,使系统处于正常运行。系统需在应用层面提供对数据的保护,保护数据的完整性、保密性、抗抵赖性;
需提供所见即所得的痕迹管理功能。
系统的整体性
此次系统为综合系统。针对各子系统有着很好的兼容性,统筹各种因素,预留外接接口,构成一个有机的安全管理系统。
系统的应用性
此次系统的设计完全考虑医院的实际要求。建成后的系统会达到各种使用要求,并会为医院的管理带来便利,提高效率,带来明显的经济和社会效益。
系统的开放性
为了保证此次系统中各供应商产品的协同运行,系统必须是开放系统,并结合相关的国际标准或工业标准进行。
系统的可扩充性
此次系统建成后具有在系统产品的系列、容量与处理能力等方面的扩充与换代的可能。需以医院现有的各种应用系统为基础,进行整合的原则,尽量保护现有投资,以完善和扩展现有系统为主要任务;
需考虑业务扩充带来的使用者和数据量的剧增;
系统的规范性
此次系统是一个规范综合性系统,遵从所涉及的业务的国际标准、国家标准及规范各项技术规定,做好系统的标准化设计与管理工作。
三、系统架构本系统采用asp.net MVC架构进行开发。采用sql Server数据库。实现医院信息化管理系统。
四、系统主要功能模块1、账户管理(1)用户管理管理员用户管理,包括账户的添加、修改、删除、冻结等功能。
(2)角色管理角色管理针对管理员账户,可对管理员账户进行角色设置,设置不同的访问权限。
2、名医信息系统可维护名医的个人及诊疗学术专长信息,包括个人简介、临床与教学工作、科研成果、学习经历等。
3、项目信息可维护名医项目的完整信息,包括项目名称、来源、所属单位、单位性质等。
4、课题信息提供课题的信息维护,并可设置课题与传承项目的所属关系。
5、医案管理(1)医案列表系统提供传承的医案编辑维护机制,并可设置医案所属课题。
(2)医案编辑可编辑患者完整诊疗医案内容,包括就诊信息、临床表现、检查检验、辨证分析、诊断信息等。
(3)病历集成医案编辑时,可查看患者在医院门诊或住院系统中的病历,并可选择引用部分内容。
(4)辅助检查集成编辑医案中的检查检验结果时,可通过接口集成查看其他系统中的检查报告。
(5)病历文本系统可汇总显示医案的病历文本,便于出版医案集。
(6)文件管理可上传医案的辅助文件,保障临床数据完整性。
文件可包括病历照片、检验检查单照片等。
6、患者同步系统可从院内现有系统同步患者诊疗数据。
系统可查找指定范围的患者,从院内现有系统同步患者诊疗数据。
7、古籍文献系统古籍文献管理,是对医药古籍进行数字化加工,实现古籍数字化,并提供展示、传播等服务的平台,以达到向公众提供中医药博物馆的全方位信息服务、传播医药文化和保护医药非物质文化遗产的最终目标。
提供浏览阅读、全文检索、研究支持等功能,能给管理者、研究者、公众的管理、研究和阅读提供帮助。
1)古籍文献列表
系统提供名医经典古籍文献列表;
系统可按年代、使用热度等多种方式提供列表。
2)古籍分类
系统支持古籍分类,按基础典籍、养生保健等维度分类显示;
3)文献浏览
系统可选择古籍后,浏览其各章节内容;
4)古籍病证检索
可根据疾病诊断、证候诊断、症状等指标检索古籍文献中的内容;
检索结果中可列出相应关键词的主要上下文。
5)内容定位
系统可显示检索关键词在古籍原文中的定位段落;
可打开调阅其完整内容。
6)高级检索
系统提供对古籍的多维度高级检索;
通过Luncen高级检索可设置更多维度的筛选条件。
7)医案列表
系统提供常见病的医案列表;
可列出近期病案中热搜的疾病关键词。
8)医案疾病分类
提供热门疾病标签,以及各科室疾病的医案分类。
9)推荐医家
系统提供根据医案调阅率进行排名,给出推荐医家列表。
10)医案病证检索
可按疾病诊断、证候、症状名检索经典医案;
并列出相应医案的症状与证候描述。
11)方剂列表
系统提供方剂列表,并可列出方剂的精选;
同时提供方剂分类与名家经验方链接。
12)方剂分类
系统提供规范方剂分类;
方剂分类可按功效联动分类。
13)方剂检索
系统可按方名、功效主治检索方剂;
检索结果列表可显示该方剂主治、出处等。
14)名家经验方
系统可按知名医家列出其典型经验方;
选择某名家则可显示其经验方列表。
15)智慧开方
系统提供根据部位、症状表现的智慧开方辅助决策;
通过向导式选择各部位的症状与临床表现,给出推荐方案。
五、系统性能及安全防护措施(1)系统安全说明
管理员可以通过采用定期备份功能,对数据进行定期备份。可以将员工误操作,机器掉电,病毒攻击,系统崩溃等人为或其它意外情况造成的损失减少到最低。
将两台服务器通过批处理文件将系统备份做双机热备,避免因一台服务器故障导致数据丢失。
(2)数据加密存储
针对系统中非常核心、隐私的数据,如用户密码、企业端口密码等通过我们自己定义的加密规则进行处理后,再采用MD5加密方式进行加密传输及存储,确保核心数据的安全性。
(3)业务权限与角色管理
系统具备权限控制,所有操作人员将根据系统管理员分配的角色来访问数据。而这种角色的分配与业务模块相结合,可以细化到每一条记录。
(4)登录安全及系统日志
密码强度要求至少八位,必须是数字和字母、大小写字母组合。
建立登录日志,记录用户登录系统的用户名、时间、IP地址、登录状态。
建立操作日志:记录主要业务模块的操作日志,包括增加、修改、删除等关键性操作。
(5)服务器操作系统安全
通过第三方系统安全软件对文件、目录、进程、注册表和服务的强制访问控制,有效的制约和分散了原有系统管理员的权限,综合了对文件和服务的完整性检测、Web过滤防护和防缓冲区溢出等功能,能够把普通的操作系统从体系上升级,使其符合国家信息安全等级保护服务器操作系统安全的三级标准。
六、系统部署需求部署硬件防火墙和正版杀毒软件,禁用不用的端口。
∙部署硬件防火墙,封闭一些不用的端口;
∙部署应用防火墙,防止网页篡改、跨站脚本攻击、Ddos攻击等;
∙配置两台服务器,将平台同时部署在两台服务器上,形成双机热备。