精华内容
下载资源
问答
  • ACCESS VBA编程(使用技巧大全)[].doc
    2021-01-26 13:01:11

    ACCESS VBA编程(使用技巧大全)[].doc

    ACCESS VBA编程(使用技巧大全)[1]

    ACCESS-VBA编程 ACCESS-VBA编程. 控件: 常量控件 acBoundObjectFrame绑定对象框 acCheckBox复选框 acComboBox组合框 acCommandButton命令按钮 acCustomControlActiveX(自定义)控件 acImage图像 acLabel标签 acLine线条 acListBox列表框 acObjectFrame未绑定对象框或图表 acOptionButton选项按钮 acOptionGroup选项组 acPage页 acPageBreak分页符 acRectangle矩形 acSubform子窗体/子报表 acTabCtl选项卡 acTextBox文本框 acToggleButton切换按钮 在VB中对窗体控件的引用 键入包含控件的窗体或报表的标识符,后面紧接!运算符和控件的名称。例如,下列标识符将引用“订单”窗体上“订单ID”控件值: Forms![订单]![订单ID] 引用子窗体或子报表上的控件,不必使用“窗体”或“报表”属性为窗体或报表指定完整的标识符。例如,可以使用下列标识符来引用“订单”子窗体上的“数量”控件: Forms![订单]![订单子窗体]![数量] 判断窗体或报表中控件的数目,然后将该数目赋给一个变量。 DimintFormControlsAsInteger DimintReportControlsAsInteger intFormControls=Forms!Employees.Count intReportControls=Reports!FreightCharges.Count 设置控件可见性 Dimi,iiAsInteger Forii=3To10 Me.Controls.Item(ii).Visible=True Next Fori=11To22 Me.Controls.Item(i).Visible=False Next 按特殊名在VBA中设置控件的可见性: Fori=27To47 IfMe.Controls.Item(i).NameLike"A*"Then Me.Controls.Item(i).Visible=False EndIf 1 ACCESS-VBA编程 Next 指定一个控件能否接受焦点 Enabled属性: me.控件.Enabled=true'能 =false'不能 指定一个控件能否被编辑: locked 如: me.控件.Locked=true me.控件.Locked=false 设置控件标题显示的文字 Me.控件.Caption="显示窗体" 设置标签颜色: Me.LabelColor=200 获得焦点及失去焦点时字段变更颜色。 如果你的控件是文本框,名称为“txt字段”,写如下代码: PrivateSubtxt字段_GotFocus() Me.txt字段.BackColor EndSub 当中是灰色,你可以自己选择希望的颜色,如果想在失去焦点时改为原来的颜色,写如下代码:PrivateSubtxt字段_LostFocus() Me.txt字段.BackColor EndSub 使标签闪烁以引人注意 设置窗体的TimerInterval值为1000(1秒). formsOnTimer加入代码: SubForm_Timer() YourTextLabel.Visible=NotYourTextLabel.Visible End_Sub 设置标签字体颜色: Me.Label1.ForeColor= 设置文本框颜色: Me.TextColor=300 设置文本框字体颜色: Me.TextFontColor=500 标签等左边距离: Me.Label2.Left=2200 定位控件 Me.控件.Top=8290

    更多相关内容
  • Access Vba 编程教程

    热门讨论 2009-07-29 23:13:33
    AccessVba编程教程,PDF格式,欢迎下载学习!
  • Access VBA编程ppt.rar

    2021-04-10 14:06:11
    Access VBA编程ppt 虽然Access的交互操作功能非常强大且易于掌握,但是在实际的数据库应用系统中,用户还是希望尽量通过自动操作达到数据库管理的目的。应用程序设计语言在开发中的应用,可以加强对数据管理应用功能...
  • 手册包含VBA编程中涉及的:对象、属性、方法、示例及相关的参考代码。 VbA_Office编程帮助手册(CHM版本).chm VBA_Excel编程帮助手册(CHM版本).chm VBA_Word编程帮助手册(CHM版本).chm VBA_PowerPoint编程帮助...
  • Access数据库和VBA编程总结.pdf
  • access VBA-2

    2019-01-04 17:09:20
    access VBA程序设计PPT
  • Access VBA编程指南

    2012-12-20 10:27:35
    Access VBA编程指南 详细讲解了access开发的完整过程
  • 摘 要:微软Office中的VBA编程功能可以将办公操作自动化。由于现代翻译中绝大多数原文和译文都用办公软件呈现,而且现代翻译中译前和译后的编辑工作基本上都可以在office软件中完成,因此VBA编程可以将翻译实践中的...

    摘  要:微软Office中的VBA编程功能可以将办公操作自动化。由于现代翻译中绝大多数原文和译文都用办公软件呈现,而且现代翻译中译前和译后的编辑工作基本上都可以在office软件中完成,因此VBA编程可以将翻译实践中的许多操作自动化,从而提高翻译效率。本文首先介绍了VBA编程在翻译中应用的可能性及VBA编程的一些特点,然后通过一些实例来证明VBA编程在原文和译文等译前和译后文档编辑活动中有重要的作用,希望能够促进VBA编程在翻译中的应用研究。

    关键词:VBA;编程;翻译;

    一、        引言

    VBA是微软公司开发的面向办公软件的一种编程语言。这种编程语言可以将许多微软办公软件中的操作自动化,从而节省用户大量的时间和精力(Mansfield,2010:xxvii,3;2008:xxvii,3)。利用VBA可以将一些简单重复性的工作编写为程序代码,从而通过运行代码自动完成办公任务,提高文字处理、数字统计和信息管理等办公效率。现代翻译大多数以办公软件特别是Word的形式呈现,因此利用VBA编程可以提高翻译效率并保证翻译质量,特别是译前和译后的原文与译文编辑、修订的效率和质量。本文以翻译中的几个实例说明VBA编程在翻译中的应用,希望今后有更多人参与到相关研究中。

    二、        VBA编程在翻译应用研究

    由于VBA编程在办公自动化过程中有重要的作用,对其在各个领域的应用研究也非常广泛。根据知网上面以“VBA的应用”为检索词所得到的结果,VBA编程在其他各个领域应用的研究非常普遍,但是在翻译方面的应用却搜不到任何文献。造成这种现象的主要原因是国内大多数翻译实践和翻译理论研究者出身于外语专业,而以外语这种文科专业为背景的学者多少都有一点“技术恐惧症”:对技术性的问题不敢尝试。而大多数计算机基础类的课程又很少涉及办公软件中的高级用法,造成大多数翻译实践人员对微软办公中的许多高级应用知识知之甚少。正如有学者指出的,“80%的Word用户,其实只知道它20%的功能”(徐彬,2017)。许多人甚至根本不知道微软办公软件还有编程功能。

    文字处理是翻译实践中最重要的工作内容,在现代翻译中,绝大多数的原文和译文都是以办公软件特别是微软Word的形式呈现。VBA可以扩充办公软件的功能,使文字处理等办公操作自动化,因此在翻译原文和译文的编辑、修订过程中也应该有重要作用。虽然上文说在知网上搜不到VBA编程与翻译之间关系的文献,但这并不是说没有人知道VBA编程在翻译中的重要作用。例如,徐彬就多次提到了录制宏(其实就是VBA编程最基本的部分)在处理译文标点符号(2007:80)、术语收集整理(2010:47;2017:97)、隐藏奇数段落以获得原文与译文逐段对照的格式(2017:97)中的作用,以及在其他方面的应用(2014:108)。王华树也在其主编的翻译技术教材中将“宏编程基础与文本处理”作为翻译技术课程体系构建中计算机基础部分的一项内容。此外,王华树(2013)也多次在其研究中提到了Java和Python等计算机语言在翻译中的作用。因此,计算机编程应该成为计算机辅助翻译能力的一部分,而并不是可有可无的技术。

    作为办公软件的一部分,VBA编程与办公软件操作密切相关,比其他独立编程语言更容易学习和掌握。翻译实践人员可以在学会VBA编程的基础上将自己反复使用的操作进行编程,从而实现操作的自动化,节省时间和精力,而将更多的时间投入到翻译过程中译文理解和语言转换等创造性的工作上。

    必须指出,虽然上文提到录制宏也可以完成一些重复性的操作,但是录制宏的功能非常有限。翻译实践人员想要通过VBA编程解决翻译中的实际问题,最好还是要学会自己编写VBA代码。原因主要有以下四点。

    第一,不是所有的办公软件都有宏录制功能。在微软系列办公软件中,只有Word、Excel和PowerPoint提供了录制宏的功能,而其他office软件并没有这个功能。特别是Access这个数据库软件在开发基于数据的程序方面具有非常重要的作用,但是却无法通过录制宏生成宏程序代码,自动完成各种操作。

    第二,宏录制不能将两种以上软件结合起来使用。微软的各个办公软件都有自己的优势,如Word利于编辑处理文字,Excel利于处理表格和数字信息,PowerPoint利于演示,Access利于各种数据处理。一般来说,用户在办公时很少能够同时使用两个以上办公软件。即使需要使用也需要另外打开一种程序文件,如译者可以查找存储在Excel中的英汉术语表并且将相关术语插入到Word文件中,就需要同时打开Word和Excel文件,通过在两个不同类型的文档之间复制粘贴来完成任务。然而在VBA编程中,各个不同软件之间可以相互调用。这样就可以用一种办公软件同时操作两个以上的软件,从而将各个不同软件之间的功能结合起来使用。

    第三,并不是所有的办公操作都能通过录制宏来完成。宏录制只是将用户的某些操作通过VBA代码记录了下来,而这些代码通常会受到录制宏时所处理的文件对象本身的限制。例如,如果一个文档只有六个段落,而用户通过录制宏将这六个段落依次复制到了另一个文件中,以后启动录制的程序代码就只能复制六个段落,如果一个文档段落超过了六个,后面的段落就无法复制。

    第四,即使有些操作可以用宏录制,而且以后启动后完全可以满足用户的操作要求,也会产生冗余代码。例如,以下两个代码块的执行都可以将所选文字设置为隐藏字体,由于第一个是通过录制宏产生的代码块,而第二个是编写的代码块,结果代码长度差别很大。因为在第一个代码块中除了两个语句是有效语句以外,其他语句代码都是冗余代码。这样的代码如果不删除虽然并不会影响自动完成操作任务,但是代码过长却会拖慢程序运行速度,从而影响操作效率,而且代码过长也会影响以后对程序的维护和修改。

    WithSelection.Font

        .Hidden = True  '有效语句

        .SmallCaps = False

        .AllCaps = False

        .Color = wdColorBlue  '有效语句

        .Engrave = False

        .Superscript = False

        .Subscript = False

        .Spacing = 0

        .Scaling = 100

        .Position = 0

        .Kerning = 1

        .Animation = wdAnimationNone

        .DisableCharacterSpaceGrid = False

        .EmphasisMark = wdEmphasisMarkNone

        .Ligatures = wdLigaturesNone

        .NumberSpacing = wdNumberSpacingDefault

        .NumberForm = wdNumberFormDefault

        .StylisticSet = wdStylisticSetDefault

        .ContextualAlternates = 0

    End With

    录制宏产生的代码

    WithSelection.Font

        .Hidden = True

        .Color = wdColorBlue

    End With

    编写的代码

    三、        VBA编程与计算机辅助翻译软件的共同设计原则

    计算机辅助翻译技术“利用计算机模拟人脑记忆功能的机制,把翻译过程中简单、重复性的记忆活动交给计算机来做,将译者从机械性的工作中解放出来,全力关注翻译活动本身”(王华树,2017)。目前所有的计算机辅助软件的设计都是基于这条原则。VBA编程也是基于相似的原则,它可以让用户将办公过程中一些常见的重复性工作通过VBA代码编写为程序,然后通过运行程序而自动完成同样的操作。由于VBA和计算机辅助翻译软件有相似的设计原则,并且VBA编程主要处理的是各种办公操作,所以VBA应该成为现代翻译技术的一个组成部分,用来处理翻译过程中的各种文档操作。例如,在汉英翻译中,译文单词之间可能有一些多余的空格,通常可以用Word的查找和替换功能并结合Word通配符来将多个空格替换为一个空格。具体做法是使用查找和替换对话框中的“使用通配符”,在查找框中输入一个空格和{2,},在替换框中输入一个空格,然后点“全部替换”就可以清除全部的多余空格。在一般人看来,这个操作已经非常方便快捷。实际上这个操作因为反复使用可以编写为程序,以后就可以通过运行程序来自动完成,而不必每次都调用查找和替换对话框,并且在查找和替换框中输入查找和替换项。而且还可以将这个程序通过命令按钮加载到常用工具栏中并且为程序设置一个快捷键,以后需要时直接点击这个命令按钮或按快捷键就可以直接完成操作。

    四、        VBA编程的特点

    利用各种编程语言将日常生活和工作中的操作自动化已经非常普遍。为了满足各种不同编程的需要,现在也出现了各种不同的编程语言,如Perl、Python等。由于VBA与办公软件相结合,而翻译实践主要用的是各种办公软件,所以对于翻译实践中的各种操作而言,VBA有以下的特点和优势。

    (一)操作便捷

       微软VBA所编写的程序可以指定为常用工具栏的命令按钮,或指定快捷组合键,或通过给文件中添加命令按钮来运行,甚至还可以指定程序自动运行,因此使用起来非常方便快捷。对于一些个人常用的程序,可以存为文件模板,并且用命令按钮的形式加载在常用工具栏中,以后使用时像点击其他命令按钮一样来完成相应的操作。图1中最右侧的三列三行命令按钮就是将一些常用操作编写为VBA小程序,并以命令按钮的形式加载到了Word工具栏中。这样就可以点击Word命令按钮一样就可以完成所需要的操作。

    42b31853-091c-eb11-8da9-e4434bdf6706.png

    图1 加载为工具按钮的VBA小程序 

    同时,有些稍微复杂一点的小程序,由于代码较长,可以单独保存为启用宏的Word文档(后缀名为.docm),并且给文档中添加一个程序启动按钮,并且将程序的操作说明直接写到文档中。为了保证程序的安全性和不被误改,可以使用Word的限制编辑功能。这样的文档以后再次使用时,只要打开文档,点击启动按钮就可以自动运行。不仅操作方便,而且还可以像一个小软件一样与团队成员或朋友相互分享。图2就是这样一个启动了宏程序的Word文档的部分截图。

    4bb31853-091c-eb11-8da9-e4434bdf6706.png

    图2 添加了启动按钮和操作说明的启动宏的Word文档

    (二)简单易学

    与其他大多数编程语言相比,VBA编程简单易学,容易上手。首先,用户不必学习和掌握许多与编程相关的知识。因为VBA内置于微软应用软件中,所以利用VBA编写程序不需要专门的集成开发环境,也就不需要学习开发环境软件。大多数程序开发者除了要掌握一门计算机编程语言之外,还需要学习和掌握操作系统知识、数据库知识和计算机网络知识。而利用VBA编程,程序编写人员只要掌握了VBA语言并且熟悉微软办公软件的各种操作就可以编写一些简单实用的程序。其次,由于VBA语言中所涉及的各种对象、属性、方法和事件都对应于应用软件中的各种不同操作,因此编写的代码也相对容易理解和掌握,而且VBA的帮助文件提供了非常详细的查询,学习者可以通过查找帮助文件,较快掌握VBA中各种对象、属性、方法和事件的编码。再次,VBA编辑器提供了自动插入功能,自动显示各个对象所涉及的属性、方法、数据类型,以及各种常量,用户只需根据自己的编程需要进行选择,更容易学习。最后,通过上文所提到的微软办公软件提供的宏录制功能,初学者可以较快理解各种代码的含义。因此,即使不熟悉算法的初学者也可以通过录制宏查看程序代码,从而熟悉各种算法和程序编码。

    (三)灵活定制

    VBA虽然基于微软办公软件,但是它能够满足不同目的的编程需求。可以根据用户的需要编写简单实用的代码完成实现小的办公操作的自动化,同时也可以通过调用其他办公软件的VBA编程实现复杂任务的自动化操作。因为不同的用户用办公软件来完成不同的任务,所以不同的用户可以根据自己的需要编写不同的代码,实现不同操作的自动化。对于翻译来说,从译前原文文档的处理到译后译文的编辑都可以使用VBA编程实现翻译编辑过程某些操作的自动化。此外,VBA编程也可以用于翻译术语管理之中。

    五、        VBA编程在翻译应用中实例

    以翻译技术为基础的翻译流程包括译前、译中和译后三个过程。VBA编程主要出现在译前的原文文本编辑和译后的译文文本加工,其次也可以应用于翻译术语管理方面(李海亭,2019)。以下就用几个实例说明VBA编程在翻译中的具体应用。这些例子中的代码一般都比较简单,基本上都适合添加到工具栏中,随时处理文档。

    (一)显示或不显示隐藏文字

    校对是翻译过程中非常重要的环节。在校对过程中,有时候需要对照原文,以确定译文的意义是否与原文一致,这时候可以将原文和译文排列为段落对照的格式,也就是所有奇数段落都是原文,而所有的偶数段落都是译文。这样可以随时对照原文,检查译文意义表达是否准确。但有时在译文与原文意义一致的情况下,却只需要对译文的行文进行润色。这时候呈现原文反而会造成不便。其实,完全可以使用Word隐藏文字的功能并利用显示或不显示隐藏文字满足两种不同的需要。具体方法是将原文和译文排成段落对照的格式,并且将原文设置为隐藏文字的格式(这个过程也可以用宏程序完成,见下文)。然后可以编两个不同的宏程序,一个显示隐藏字体,一个不显示隐藏文字(两个程序的代码如下),并且将两个宏加载到常用工具栏中,设置为按钮。在需要显示原文时,点击显示隐藏字体的按钮,原文自动出现。而在不需要显示原文时,点击不显示隐藏文字的按钮,原文自动隐藏,而只显示译文。

    Sub 不显示隐藏文字()

        ActiveWindow.View.ShowAll= False

        ActiveWindow.View.ShowHiddenText= False

    End Sub

    Sub 显示隐藏文字()

        ActiveWindow.View.ShowAll= True

        ActiveWindow.View.ShowHiddenText= True

    End Sub

    (二)隐藏原文奇数段落

    Trados、Déjà vu和memoQ都可以忽略原文中隐藏的文字,利用这个特点,可以将原文中每一个段落都复制,变成AABBCC的形式,然后将奇数段落隐藏,这样导入CAT软件,翻译完成后,导出来的译文就成为原文和译文段落对照的格式。用表格和文本互换的操作可以完成这一任务,而且也可以将这个操作录制成宏,以便以后自动完成各种操作(徐彬,2017)。其实这种利用表格和文本相互转换的操作完成的任务也可以通过编写程序代码来自动完成,而且编写的代码要比宏录制产生的代码更加简洁,从而更容易理解和维护。图1和图2分别就是编写的代码和录制宏的代码实现自动隐藏奇数段落的部分代码。以下是这个程序的全部代码。

    Sub复制原文段落并隐藏奇数段落()

        Dialogs(wdDialogFileOpen).Show  '打开文件选择窗口

        Dim Doc As Document             '定义新文档

        Set Doc = ActiveDocument        '为新文档赋值

        Dim Total As Integer            '定义整形变量作为总行数

        Total = Doc.Paragraphs.Count    '为总行数赋值

        Dim DocName1 As String          '定义整形变量作为活动文档名称

        Dim DocPath As String           '获取活动文档路径

        DocPath = Doc.Path              '为活动文档路径赋值

        Selection.WholeStory            '选择整篇文档内容

        '将文档转换成表格

    Selection.ConvertToTableSeparator:=wdSeparateByParagraphs,           NumColumns:=1, _

    NumRows:=Total,AutoFitBehavior:=wdAutoFitFixed

        With Selection.Tables(1)

            .ApplyStyleHeadingRows = True

            .ApplyStyleLastRow = False

            .ApplyStyleFirstColumn = True

            .ApplyStyleLastColumn = False

        End With

    Doc.Tables(1).Columns(1).Select'选择表1中的第一列

    Selection.Copy         '复制第一列内容

    Selection.InsertColumnsRight   '在所选第一列后面插入新列

    Selection.PasteAndFormat(wdPasteDefault)'粘贴所选第一列并格式化

    Doc.Tables(1).Columns(1).Select'选择表1中的第一列

        With Selection.Font'对所选列字体进行设置

            .Hidden = True

            .Color = wdColorBlue

        End With

    Doc.Tables(1).Select'选择表1

        '将所选表格转换为文档

    Selection.Rows.ConvertToTextSeparator:=wdSeparateByParagraphs, _

    NestedTables:=False

    DocName = Left(Doc.Name,InStrRev(Doc.Name, ".") - 1) '截取源文档的文件名

    Doc.SaveAs2 FileName:=DocPath&"\" &DocName& "段段对照"  '另存新文档为源文档的路径并重新命名

    Doc.CloseSavechanges:=wdSaveChanges'关闭文档并保存修改

    End Sub

    (三)切分长文档

    在翻译活动中,经常会遇到一些长文档,如长达数百页的一本书。这样的翻译工作通常需要好几位译者合作完成。此时就需要翻译项目管理人员将长文档切分成多个短文档,然后分配给不同的译者。即使是一位译者独立在CAT软件中翻译这样的长文档,也应该将其按照章节切分成多个不同的文档,否则在原文导入和译文导出时,由于文件整体太大而导致导入、导出和打开过程太长,从而耗费大量时间。此外,长文档在翻译过程中如果出现任何错误可能会导致整个译文无法导出,给译文译后编辑带来不便,而切分后的各个短文档即使出现问题,也只影响局部而不会影响全部。在长文档的切分中,可以利用Word大纲视图中创建子文档功能完成(徐彬,2017)。当然也可以使用VBA编写一个小程序来自动完成。以下代码就是通过录制宏产生的按照一级标题切分长文档的程序代码。可以按照不同的章节要求先设定好一级标题,然后直接运行该程序或点击添加到菜单栏中对应的按钮就可以直接将一篇长文档切分为好多个短文档。

    Sub 切分文档()

        ActiveWindow.ActivePane.View.Type= wdOutlineView

        Selection.WholeStory

        If ActiveWindow.View =wdMasterView Then

            ActiveWindow.View =wdOutlineView

        Else

            ActiveWindow.View =wdMasterView

        End If

     ActiveDocument.Subdocuments.AddFromRangeRange:=Selection.Range

    ActiveWindow.Close

    End Sub

    (四)去掉多余空格

    在汉译英中,译文中一般要求在两个单词中间有一个空格,而在单词与标点符号之间不要空格。但一般会因为输入失误而在两个单词之间产生两个以上的空格或者在单词与后面的标点符号之间加上空格。通常在译文校对过程中应该去掉这些多余的空格。如果用人工校对和修改,不仅费时费力,还会因为各种原因而未能全部修改。这种简单的劳动其实也可以通过VBA编码来交给计算机自动完成。以下就是通过录制并编辑宏代码产生的去除英文多余空格的程序代码。

    Sub 去除多余空格()

        Selection.Find.ClearFormatting

        Selection.Find.Replacement.ClearFormatting

        With Selection.Find

            .Text = "{1,}([\,\.\?\!^13\(\)'""])"

            .Replacement.Text = "\1"

            .Forward = True

            .Wrap = wdFindContinue

            .MatchWildcards = True

        End With

        Selection.Find.ExecuteReplace:=wdReplaceAll

        With Selection.Find

            .Text = " {2,}"

            .Replacement.Text = " "

            .Forward = True

            .Wrap = wdFindContinue

            .MatchWildcards = True

        End With

    Selection.Find.ExecuteReplace:=wdReplaceAll

    End Sub

    (五)去掉所有书签

    在翻译实践中,经常会遇到利用OCR技术将PDF文件(特别是PDF图像)转换成Word格式,然后再导入CAT软件翻译的情形。例如,用FineReade将PDF文件转换为Word,然而有时PDF文档转换成Word后会出现大量的书签。这种书签一般用Word查找替换对话框中的定位功能一个一个删除,这样做费时费力,其实可以用以下四行代码编写的小程序一次全部删除,当然最好将这样的宏程序附加到常用菜单栏中,每次使用时只要点击一次就可以瞬间完成删除。

    Sub 删除所有书签()

    Dim MyBkAs Bookmark

    For EachMyBkInActiveDocument.Bookmarks

    MyBk.Delete

    Next

    End Sub

    以上几个小程序都是使用WordVBA编写的,这些Word VBA程序也是翻译中对原文和译文进行编辑最常使用的程序。

    六、        结语

    本文论述了VBA编程在翻译实践中的应用,并以几个实例说明了VBA编程在原文和译文编辑及术语管理中的作用。实际上VBA编程在翻译中的应用远不止这些。作为办公软件的一个扩展功能,VBA有极强的灵活性和适应性。将微软办公软件中的Word、Excel、PowerPoint及Access等各种功能通过VBA编程相互结合起来,会在翻译中有无限的应用前景。希望今后有更多学者在这一方面有所研究。

    参考文献

    李海亭. Office VBA编程设计两款翻译术语工具[J].电子技术与软件工程, 2019(07):230-232.

    王华树. 翻译技术教程[M]. 上海:商务印书馆, 2017.

    王华树. 翻译专业硕士(MTI)翻译技术教学研究:问题与对策[J]. 外语电化教学, 2018(06):76-82.

    王华树. 语言服务行业技术视域下的MTI技术课程体系构建[J]. 中国翻译, 2013, 34(06):23-28.

    徐彬. 计算机辅助翻译教学——设计与实施[J]. 上海翻译, 2010(04):45-49.

    徐彬. 翻译技术教学新思考[J]. 北京航空航天大学学报(社会科学版), 2014, 27(06):107-111.

    徐彬, 郭红梅, 国晓立. 21世纪的计算机辅助翻译工具[J]. 山东外语教学, 2007(04):79-86.

    徐彬, 郭红梅. 翻译技术教学新谈[J]. 当代外语研究, 2017(05):96-101.

    徐彬, 谭莹. 计算机辅助下的翻译协作[J]. 山东外语教学, 2008(04):91-94.

    俞敬松, 王华树. 计算机辅助翻译硕士专业教学探讨[J]. 中国翻译, 2016(03):38-42.

    RICHARD M.Mastering VBA for Microsoft Office 2007[M], Indianapolis: Wiley Publishing,Inc. 2008:xxvii, 3.

    RICHARD M. Mastering VBAfor Microsoft Office 2010[M], Indianapolis: Wiley Publishing, Inc.2010:xxvii, 3.


    展开全文
  • Access+VBA(完整版)

    2008-03-11 14:34:11
    VBA小而精 ,学学很有用 ,此为AccessVBA经典教程
  • excel vba 编程24学时教程+access 2007使用教程+access vba 讲解
  • AccessVBA的代码集。文件为iso镜像,内含文字电子版和随书实例。
  • access vba数据库开发

    2018-09-29 20:40:04
    介绍详细,可以直接用于开发vbaaccess应用。
  • Access-VBA编程(使用技巧大全)[1].doc
  • 教程以零基础自学为宗旨,用实例引导读者深入学习,采取“数据库基础→数据库基本操作→界面设计→编程技术→高级应用→项目实战”的讲解模式,深入浅出地讲解Access的各项技术及实战技能。 本教程共分为16章,...
  • ACCESS_VBA编程.pdf

    2010-10-08 15:31:54
    ACCESS_VBA编程.pdf:学习步骤循序渐进!
  • ACCESSVBA编程

    2010-02-25 10:06:11
    ACCESSVBA编程 this is aceess advance appliaction.
  • 可直接运行的ACCESS2003数据库范例,其中代码可看。数据库中有六条记录。特征与性能同前面上传的单纯源代码相同。
  • Access-VBA编程(使用技巧大全)[1].doc
  • Access_VBA编程使用技巧大全.doc
  • Access vba实例

    2021-05-30 22:56:00
    On Error Resume Next strSQL = "select top 1 from Inventorytemp" rs.Open strSQL, CurrentProject.AccessConnection If (Err) Then '临时表不存在,复制库存表到临时表 DoCmd.SetWarnings False strSQL = "select...
    Option Compare Database
    
    '按批次分配
    Private Sub Command0_Click()
        'ADO连接数据库
        Dim rs As ADODB.Recordset
        Set rs = New ADODB.Recordset
        Dim strSQL As String
        Dim name As String, pass As String
        '复制库存表做临时表
        On Error Resume Next
        strSQL = "select top 1 from Inventorytemp"
        rs.Open strSQL, CurrentProject.AccessConnection
        If (Err) Then
            '临时表不存在,复制库存表到临时表
            DoCmd.SetWarnings False
            strSQL = "select * into Inventorytemp from [Inventory-raw]"
            DoCmd.RunSQL strSQL
            DoCmd.SetWarnings True
        Else
            '先删除临时表再复制表到临时表
            DoCmd.SetWarnings False
            strSQL = "drop table [Inventory-raw]"
            DoCmd.RunSQL strSQL
            strSQL = "select * into Inventorytemp from [Inventory-raw]"
            DoCmd.RunSQL strSQL
            DoCmd.SetWarnings True
        End If
        On Error GoTo 0
        
        '清空配货报告明细表
        strSQL = "delete * from [SO Allocation-BY LOT] "
        DoCmd.SetWarnings False
        DoCmd.RunSQL strSQL
        DoCmd.SetWarnings True
    
        '读取so type配置表
        Dim sortrs As ADODB.Recordset
        Set sortrs = New ADODB.Recordset
        Dim sortorder As String
        sortorder = ""
        strSQL = "select * from [orderstatus] order by id"
        sortrs.Open strSQL, CurrentProject.AccessConnection, adOpenKeyset
        If sortrs.EOF Then
            'MsgBox "请检查排序配置表!"
        Else
            'sortorder = sortorder + " [Ship to]"
            Dim count As Integer
            Dim laststr As String
            laststr = "999999)"
            count = 1
            Do While Not sortrs.EOF
                sortorder = sortorder + " IIf ([Order Status] ='" & sortrs("Order Status") & "'," & sortrs("id") & ","
                If count = sortrs.RecordCount Then
                  sortorder = sortorder + laststr
                Else
                laststr = laststr + ")"
                count = count + 1
                End If
            sortrs.MoveNext
            Loop
        End If
        sortrs.Close
        
        '读取ship to 配置
        Dim shiptors As ADODB.Recordset
        Set shiptors = New ADODB.Recordset
        Dim sortshipto As String
        sortshipto = ""
        strSQL = "select * from [shipto] order by id"
        shiptors.Open strSQL, CurrentProject.AccessConnection, adOpenKeyset
        If shiptors.EOF Then
            'MsgBox "请检查排序配置表!"
        Else
            Dim count2 As Integer
            Dim laststr2 As String
            laststr2 = "999999)"
            count2 = 1
            Do While Not shiptors.EOF
                sortshipto = sortshipto + " IIf ([Ship To] =" & shiptors("Ship To") & "," & shiptors("id") & ","
                If count2 = shiptors.RecordCount Then
                  sortshipto = sortshipto + laststr2
                Else
                laststr2 = laststr2 + ")"
                count2 = count2 + 1
                End If
            shiptors.MoveNext
            Loop
        End If
        shiptors.Close
        
        
    
        strSQL = "select * from [SO Backlog Report-raw]" + " order by " + sortorder + "," + sortshipto + ", [Order Number] ,[Line Number]"
        rs.Open strSQL, CurrentProject.AccessConnection, adOpenKeyset
        If rs.EOF Then
        MsgBox "请检查源数据!"
        Else
        
           '读取ship to 配置[Location Number]
            Dim Locationrs As ADODB.Recordset
            Set Locationrs = New ADODB.Recordset
            Dim sortLocation As String
            sortLocation = ""
            strSQL = "select * from [LocationNumber] order by id"
            Locationrs.Open strSQL, CurrentProject.AccessConnection, adOpenKeyset
            If Locationrs.EOF Then
                'MsgBox "请检查排序配置表!"
            Else
                Dim count3 As Integer
                Dim laststr3 As String
                laststr3 = "999999)"
                count3 = 1
                Do While Not Locationrs.EOF
                    sortLocation = sortLocation + " IIf ([Location Number] ='" & Locationrs("Location Number") & "'," & Locationrs("id") & ","
                    If count3 = Locationrs.RecordCount Then
                      sortLocation = sortLocation + laststr3
                    Else
                    laststr3 = laststr3 + ")"
                    count3 = count3 + 1
                    End If
                Locationrs.MoveNext
                Loop
            End If
            Locationrs.Close
           '循环订单插入配货报告明细
            Do While Not rs.EOF
                'MsgBox "'" & rs("ordernumber") & "'"
                Dim Inrs As ADODB.Recordset
                Set Inrs = New ADODB.Recordset
                
                strSQL = "select * from [Inventorytemp] where [Item Number]='" & rs("2nd Item Number") & "' and [Purchasing Qty]>0" + " order by " + sortLocation
                Inrs.Open strSQL, CurrentProject.AccessConnection, adOpenKeyset
                    If Inrs.EOF Then
                        '向配货报告明细插一条数据(对应的库存信息空着)
                         strSQL = "INSERT INTO [SO Allocation-BY LOT]([BU],[Order Status],[SUB BU],[Or Date Ty],[Order Number],[Or Ty],[Line Number],[2nd Item Number],[Quantity],[UOM],[Unit Price],"
                         strSQL = strSQL + "[Total Amount],[Extended Amount],[Quantity Shipped],[Quantity Backordered],[Branch/Plant],[Location],[Lot Serial Number],[Last Status],[Next Status],[Pick Number]"
                        strSQL = strSQL + ",[Document Number],[Doc Ty],[Invoice Date],[Ship To Description],[Ship To],[Sold To],[Customer PO],[Description 1],[Order Date],[Request Date],[Price Effective Date]"
                        strSQL = strSQL + ",[Branch/Plant2],[Location2],[Lot Serial Number2],[可配货数量],[可配货金额])"
                         strSQL = strSQL + " values('" & rs("bu") & "','" & rs("Order Status") & "','" & rs("SUB BU") & "','" & rs("Or Date Ty") & "','" & rs("Order Number") & "','" & rs("Or Ty") & "'"
                         strSQL = strSQL + ",'" & rs("Line Number") & "','" & rs("2nd Item Number") & "','" & rs("Quantity") & "','" & rs("UOM") & "','" & rs("Unit Price") & "','" & rs("Total Amount") & "'"
                        strSQL = strSQL + ",'" & rs("Extended Amount") & "','" & rs("Quantity Shipped") & "','" & rs("Quantity Backordered") & "','" & rs("Branch/Plant") & "','" & rs("Location") & "'"
                        strSQL = strSQL + ",'" & rs("Lot Serial Number") & "','" & rs("Last Status") & "','" & rs("Next Status") & "','" & rs("Pick Number") & "'"
                        strSQL = strSQL + ",'" & rs("Document Number") & "','" & rs("Doc Ty") & "','" & rs("Invoice Date") & "','" & Replace(rs("Ship To Description"), "'", " ") & "','" & rs("Ship To") & "'"
                        strSQL = strSQL + ",'" & rs("Sold To") & "','" & rs("Customer PO") & "','" & Replace(rs("Description 1"), "'", " ") & "','" & rs("Order Date") & "','" & rs("Request Date") & "','" & rs("Price Effective Date") & "'"
                        strSQL = strSQL + ",null,null,null,0,0)"
                        DoCmd.SetWarnings False
                        DoCmd.RunSQL strSQL
                        DoCmd.SetWarnings True
                    Else
                        Dim num As Integer
                        num = 0
                        Do While Not Inrs.EOF
                        If (num >= rs("Quantity")) Then
                            Exit Do
                        Else
                            If (Inrs("Purchasing Qty") + num >= rs("Quantity")) Then
                                strSQL = "INSERT INTO [SO Allocation-BY LOT]([BU],[Order Status],[SUB BU],[Or Date Ty],[Order Number],[Or Ty],[Line Number],[2nd Item Number],[Quantity],[UOM],[Unit Price],"
                                strSQL = strSQL + "[Total Amount],[Extended Amount],[Quantity Shipped],[Quantity Backordered],[Branch/Plant],[Location],[Lot Serial Number],[Last Status],[Next Status],[Pick Number]"
                                strSQL = strSQL + ",[Document Number],[Doc Ty],[Invoice Date],[Ship To Description],[Ship To],[Sold To],[Customer PO],[Description 1],[Order Date],[Request Date],[Price Effective Date]"
                                strSQL = strSQL + ",[Branch/Plant2],[Location2],[Lot Serial Number2],[可配货数量],[可配货金额])"
                                strSQL = strSQL + " values('" & rs("bu") & "','" & rs("Order Status") & "','" & rs("SUB BU") & "','" & rs("Or Date Ty") & "','" & rs("Order Number") & "','" & rs("Or Ty") & "'"
                                strSQL = strSQL + ",'" & rs("Line Number") & "','" & rs("2nd Item Number") & "','" & rs("Quantity") & "','" & rs("UOM") & "','" & rs("Unit Price") & "','" & rs("Total Amount") & "'"
                                strSQL = strSQL + ",'" & rs("Extended Amount") & "','" & rs("Quantity Shipped") & "','" & rs("Quantity Backordered") & "','" & rs("Branch/Plant") & "','" & rs("Location") & "'"
                                strSQL = strSQL + ",'" & rs("Lot Serial Number") & "','" & rs("Last Status") & "','" & rs("Next Status") & "','" & rs("Pick Number") & "'"
                                strSQL = strSQL + ",'" & rs("Document Number") & "','" & rs("Doc Ty") & "','" & rs("Invoice Date") & "','" & Replace(rs("Ship To Description"), "'", " ") & "','" & rs("Ship To") & "'"
                                strSQL = strSQL + ",'" & rs("Sold To") & "','" & rs("Customer PO") & "','" & Replace(rs("Description 1"), "'", " ") & "','" & rs("Order Date") & "','" & rs("Request Date") & "','" & rs("Price Effective Date") & "'"
                                strSQL = strSQL + ",'" & Inrs("B/P#") & "','" & Inrs("Location Number") & "','" & Inrs("Lot Number") & "','" & rs("Quantity") - num & "','" & (rs("Quantity") - num) * Inrs("SBJ DNP ") & "')"
                                DoCmd.SetWarnings False
                                DoCmd.RunSQL strSQL
                                    '更新库存
                                    Dim aaa As Single
                                    aaa = (rs("Quantity") - num) * Inrs("SBJ DNP ")
                                    strSQL = "update [Inventorytemp] set [Purchasing Qty]=" & Inrs("Purchasing Qty") - rs("Quantity") + num & ",[Purchasing Stock Value(DNP)]=" & Inrs("Purchasing Stock Value(DNP)") - aaa & "  where [B/P#]=" & Inrs("B/P#") & " and [Location Number]='" & Inrs("Location Number") & "'"
                                    strSQL = strSQL + " and [Item Number]='" & Inrs("Item Number") & "' and [Purchasing Qty]=" & Inrs("Purchasing Qty") & " and [Purchasing Stock Value(DNP)]=" & Inrs("Purchasing Stock Value(DNP)") & ""
                                    DoCmd.RunSQL strSQL
                                DoCmd.SetWarnings True
                                num = num + (rs("Quantity") - num)
                            Else
                                strSQL = "INSERT INTO [SO Allocation-BY LOT]([BU],[Order Status],[SUB BU],[Or Date Ty],[Order Number],[Or Ty],[Line Number],[2nd Item Number],[Quantity],[UOM],[Unit Price],"
                                strSQL = strSQL + "[Total Amount],[Extended Amount],[Quantity Shipped],[Quantity Backordered],[Branch/Plant],[Location],[Lot Serial Number],[Last Status],[Next Status],[Pick Number]"
                                strSQL = strSQL + ",[Document Number],[Doc Ty],[Invoice Date],[Ship To Description],[Ship To],[Sold To],[Customer PO],[Description 1],[Order Date],[Request Date],[Price Effective Date]"
                                strSQL = strSQL + ",[Branch/Plant2],[Location2],[Lot Serial Number2],[可配货数量],[可配货金额])"
                                strSQL = strSQL + " values('" & rs("bu") & "','" & rs("Order Status") & "','" & rs("SUB BU") & "','" & rs("Or Date Ty") & "','" & rs("Order Number") & "','" & rs("Or Ty") & "'"
                                strSQL = strSQL + ",'" & rs("Line Number") & "','" & rs("2nd Item Number") & "','" & rs("Quantity") & "','" & rs("UOM") & "','" & rs("Unit Price") & "','" & rs("Total Amount") & "'"
                                strSQL = strSQL + ",'" & rs("Extended Amount") & "','" & rs("Quantity Shipped") & "','" & rs("Quantity Backordered") & "','" & rs("Branch/Plant") & "','" & rs("Location") & "'"
                                strSQL = strSQL + ",'" & rs("Lot Serial Number") & "','" & rs("Last Status") & "','" & rs("Next Status") & "','" & rs("Pick Number") & "'"
                                strSQL = strSQL + ",'" & rs("Document Number") & "','" & rs("Doc Ty") & "','" & rs("Invoice Date") & "','" & Replace(rs("Ship To Description"), "'", " ") & "','" & rs("Ship To") & "'"
                                strSQL = strSQL + ",'" & rs("Sold To") & "','" & rs("Customer PO") & "','" & Replace(rs("Description 1"), "'", " ") & "','" & rs("Order Date") & "','" & rs("Request Date") & "','" & rs("Price Effective Date") & "'"
                                strSQL = strSQL + ",'" & Inrs("B/P#") & "','" & Inrs("Location Number") & "','" & Inrs("Lot Number") & "','" & Inrs("Purchasing Qty") & "','" & Inrs("Purchasing Stock Value(DNP)") & "')"
                                DoCmd.SetWarnings False
                                DoCmd.RunSQL strSQL
                                    '更新库存
                                     strSQL = "update [Inventorytemp] set [Purchasing Qty]=0,[Purchasing Stock Value(DNP)]=0 where [B/P#]=" & Inrs("B/P#") & " and [Location Number]='" & Inrs("Location Number") & "'"
                                     strSQL = strSQL + " and [Item Number]='" & Inrs("Item Number") & "' and [Purchasing Qty]=" & Inrs("Purchasing Qty") & " and [Purchasing Stock Value(DNP)]=" & Inrs("Purchasing Stock Value(DNP)") & ""
                                     DoCmd.RunSQL strSQL
                                DoCmd.SetWarnings True
                                num = num + Inrs("Purchasing Qty")
                            End If
                            
                        End If
                        Inrs.MoveNext
                        Loop
                    End If
                rs.MoveNext
            Loop
        End If
        Inrs.Close
        rs.Close
        '打开表
        DoCmd.OpenTable "SO Allocation-BY LOT"
    End Sub
    
    '不按批次分配
    Private Sub Command11_Click()
     'ADO连接数据库
        Dim rs As ADODB.Recordset
        Set rs = New ADODB.Recordset
        Dim strSQL As String
        Dim name As String, pass As String
        '复制库存表做临时表
        On Error Resume Next
        strSQL = "select top 1 from Inventorytempwithoutlot"
        rs.Open strSQL, CurrentProject.AccessConnection
        If (Err) Then
            '临时表不存在,复制库存表到临时表
            DoCmd.SetWarnings False
            strSQL = "select * into Inventorytempwithoutlot from [Inventory-raw]"
            DoCmd.RunSQL strSQL
            DoCmd.SetWarnings True
        Else
            '先删除临时表再复制表到临时表
            DoCmd.SetWarnings False
            strSQL = "drop table [Inventorytempwithoutlot]"
            DoCmd.RunSQL strSQL
            strSQL = "select * into Inventorytempwithoutlot from [Inventory-raw]"
            DoCmd.RunSQL strSQL
            DoCmd.SetWarnings True
        End If
        On Error GoTo 0
        
        '清空配货报告明细表
        strSQL = "delete * from [SO Allocation-without LOT] "
        DoCmd.SetWarnings False
        DoCmd.RunSQL strSQL
        DoCmd.SetWarnings True
        
        
        '读取so type配置表
        Dim sortrs As ADODB.Recordset
        Set sortrs = New ADODB.Recordset
        Dim sortorder As String
        sortorder = ""
        strSQL = "select * from [orderstatus] order by id"
        sortrs.Open strSQL, CurrentProject.AccessConnection, adOpenKeyset
        If sortrs.EOF Then
            'MsgBox "请检查排序配置表!"
        Else
            'sortorder = sortorder + " [Ship to]"
            Dim count As Integer
            Dim laststr As String
            laststr = "999999)"
            count = 1
            Do While Not sortrs.EOF
                sortorder = sortorder + " IIf ([Order Status] ='" & sortrs("Order Status") & "'," & sortrs("id") & ","
                If count = sortrs.RecordCount Then
                  sortorder = sortorder + laststr
                Else
                laststr = laststr + ")"
                count = count + 1
                End If
            sortrs.MoveNext
            Loop
        End If
        sortrs.Close
        
        '读取ship to 配置
        Dim shiptors As ADODB.Recordset
        Set shiptors = New ADODB.Recordset
        Dim sortshipto As String
        sortshipto = ""
        strSQL = "select * from [shipto] order by id"
        shiptors.Open strSQL, CurrentProject.AccessConnection, adOpenKeyset
        If shiptors.EOF Then
            'MsgBox "请检查排序配置表!"
        Else
            Dim count2 As Integer
            Dim laststr2 As String
            laststr2 = "999999)"
            count2 = 1
            Do While Not shiptors.EOF
                sortshipto = sortshipto + " IIf ([Ship To] =" & shiptors("Ship To") & "," & shiptors("id") & ","
                If count2 = shiptors.RecordCount Then
                  sortshipto = sortshipto + laststr2
                Else
                laststr2 = laststr2 + ")"
                count2 = count2 + 1
                End If
            shiptors.MoveNext
            Loop
        End If
        shiptors.Close
        
        strSQL = "select * from [SO Backlog Report-raw]"
        rs.Open strSQL, CurrentProject.AccessConnection, adOpenKeyset
        If rs.EOF Then
        MsgBox "请检查源数据!"
        Else
        
        '读取ship to 配置[Location Number]
            Dim Locationrs As ADODB.Recordset
            Set Locationrs = New ADODB.Recordset
            Dim sortLocation As String
            sortLocation = ""
            strSQL = "select * from [LocationNumber] order by id"
            Locationrs.Open strSQL, CurrentProject.AccessConnection, adOpenKeyset
            If Locationrs.EOF Then
                'MsgBox "请检查排序配置表!"
            Else
                Dim count3 As Integer
                Dim laststr3 As String
                laststr3 = "999999)"
                count3 = 1
                Do While Not Locationrs.EOF
                    sortLocation = sortLocation + " IIf ([Location Number] ='" & Locationrs("Location Number") & "'," & Locationrs("id") & ","
                    If count3 = Locationrs.RecordCount Then
                      sortLocation = sortLocation + laststr3
                    Else
                    laststr3 = laststr3 + ")"
                    count3 = count3 + 1
                    End If
                Locationrs.MoveNext
                Loop
            End If
            Locationrs.Close
        
           '循环订单插入配货报告表
            Do While Not rs.EOF
                'MsgBox "'" & rs("ordernumber") & "'"
                Dim Inrs As ADODB.Recordset
                Set Inrs = New ADODB.Recordset
                'Dim strInSQL As String
                strSQL = "select * from [Inventorytempwithoutlot] where [Item Number]='" & rs("2nd Item Number") & "' and [Purchasing Qty]>0" + " order by " + sortLocation
                Inrs.Open strSQL, CurrentProject.AccessConnection, adOpenKeyset
                    If Inrs.EOF Then
                        '向配货报插一条数据(对应的库存信息空着)
                         strSQL = "INSERT INTO [SO Allocation-without LOT]([BU],[Order Status],[SUB BU],[Or Date Ty],[Order Number],[Or Ty],[Line Number],[2nd Item Number],[Quantity],[UOM],[Unit Price],"
                         strSQL = strSQL + "[Total Amount],[Extended Amount],[Quantity Shipped],[Quantity Backordered],[Branch/Plant],[Location],[Lot Serial Number],[Last Status],[Next Status],[Pick Number]"
                        strSQL = strSQL + ",[Document Number],[Doc Ty],[Invoice Date],[Ship To Description],[Ship To],[Sold To],[Customer PO],[Description 1],[Order Date],[Request Date],[Price Effective Date]"
                        strSQL = strSQL + ",[可配货数量],[可配货金额])"
                         strSQL = strSQL + " values('" & rs("bu") & "','" & rs("Order Status") & "','" & rs("SUB BU") & "','" & rs("Or Date Ty") & "','" & rs("Order Number") & "','" & rs("Or Ty") & "'"
                         strSQL = strSQL + ",'" & rs("Line Number") & "','" & rs("2nd Item Number") & "','" & rs("Quantity") & "','" & rs("UOM") & "','" & rs("Unit Price") & "','" & rs("Total Amount") & "'"
                        strSQL = strSQL + ",'" & rs("Extended Amount") & "','" & rs("Quantity Shipped") & "','" & rs("Quantity Backordered") & "','" & rs("Branch/Plant") & "','" & rs("Location") & "'"
                        strSQL = strSQL + ",'" & rs("Lot Serial Number") & "','" & rs("Last Status") & "','" & rs("Next Status") & "','" & rs("Pick Number") & "'"
                        strSQL = strSQL + ",'" & rs("Document Number") & "','" & rs("Doc Ty") & "','" & rs("Invoice Date") & "','" & Replace(rs("Ship To Description"), "'", " ") & "','" & rs("Ship To") & "'"
                        strSQL = strSQL + ",'" & rs("Sold To") & "','" & rs("Customer PO") & "','" & Replace(rs("Description 1"), "'", " ") & "','" & rs("Order Date") & "','" & rs("Request Date") & "','" & rs("Price Effective Date") & "'"
                        strSQL = strSQL + ",0,0)"
                        DoCmd.SetWarnings False
                        DoCmd.RunSQL strSQL
                        DoCmd.SetWarnings True
                    Else
                        Dim num As Integer
                        num = 0
                        Dim Allocableamount As Double
                        Allocableamount = 0
                        Dim account As Integer
                        account = 1
                        Do While Not Inrs.EOF
                        If (num >= rs("Quantity")) Then
                                
                            Exit Do
                        Else
                            If (Inrs("Purchasing Qty") + num >= rs("Quantity")) Then
                                '更新库存
                                DoCmd.SetWarnings False
                                Dim aaa As Double
                                aaa = (rs("Quantity") - num) * Inrs("SBJ DNP ")
                                strSQL = "update [Inventorytempwithoutlot] set [Purchasing Qty]=" & Inrs("Purchasing Qty") - rs("Quantity") + num & ",[Purchasing Stock Value(DNP)]=" & Inrs("Purchasing Stock Value(DNP)") - aaa & "  where [B/P#]=" & Inrs("B/P#") & " and [Location Number]='" & Inrs("Location Number") & "'"
                                strSQL = strSQL + " and [Item Number]='" & Inrs("Item Number") & "' and [Purchasing Qty]=" & Inrs("Purchasing Qty") & " and [Purchasing Stock Value(DNP)]=" & Inrs("Purchasing Stock Value(DNP)") & ""
                                DoCmd.SetWarnings False
                                DoCmd.RunSQL strSQL
                                DoCmd.SetWarnings True
                                num = num + (rs("Quantity") - num)
                                Allocableamount = Allocableamount + aaa
                                
                                strSQL = "INSERT INTO [SO Allocation-without LOT]([BU],[Order Status],[SUB BU],[Or Date Ty],[Order Number],[Or Ty],[Line Number],[2nd Item Number],[Quantity],[UOM],[Unit Price],"
                                strSQL = strSQL + "[Total Amount],[Extended Amount],[Quantity Shipped],[Quantity Backordered],[Branch/Plant],[Location],[Lot Serial Number],[Last Status],[Next Status],[Pick Number]"
                                strSQL = strSQL + ",[Document Number],[Doc Ty],[Invoice Date],[Ship To Description],[Ship To],[Sold To],[Customer PO],[Description 1],[Order Date],[Request Date],[Price Effective Date]"
                                strSQL = strSQL + ",[可配货数量],[可配货金额])"
                                strSQL = strSQL + " values('" & rs("bu") & "','" & rs("Order Status") & "','" & rs("SUB BU") & "','" & rs("Or Date Ty") & "','" & rs("Order Number") & "','" & rs("Or Ty") & "'"
                                strSQL = strSQL + ",'" & rs("Line Number") & "','" & rs("2nd Item Number") & "','" & rs("Quantity") & "','" & rs("UOM") & "','" & rs("Unit Price") & "','" & rs("Total Amount") & "'"
                                strSQL = strSQL + ",'" & rs("Extended Amount") & "','" & rs("Quantity Shipped") & "','" & rs("Quantity Backordered") & "','" & rs("Branch/Plant") & "','" & rs("Location") & "'"
                                strSQL = strSQL + ",'" & rs("Lot Serial Number") & "','" & rs("Last Status") & "','" & rs("Next Status") & "','" & rs("Pick Number") & "'"
                                strSQL = strSQL + ",'" & rs("Document Number") & "','" & rs("Doc Ty") & "','" & rs("Invoice Date") & "','" & Replace(rs("Ship To Description"), "'", " ") & "','" & rs("Ship To") & "'"
                                strSQL = strSQL + ",'" & rs("Sold To") & "','" & rs("Customer PO") & "','" & Replace(rs("Description 1"), "'", " ") & "','" & rs("Order Date") & "','" & rs("Request Date") & "','" & rs("Price Effective Date") & "'"
                                strSQL = strSQL + ",'" & num & "','" & Allocableamount & "')"
                                DoCmd.SetWarnings False
                                DoCmd.RunSQL strSQL
                                DoCmd.SetWarnings True
                                
                            Else
                                '更新库存
                                strSQL = "update [Inventorytempwithoutlot] set [Purchasing Qty]=0,[Purchasing Stock Value(DNP)]=0 where [B/P#]=" & Inrs("B/P#") & " and [Location Number]='" & Inrs("Location Number") & "'"
                                strSQL = strSQL + " and [Item Number]='" & Inrs("Item Number") & "' and [Purchasing Qty]=" & Inrs("Purchasing Qty") & " and [Purchasing Stock Value(DNP)]=" & Inrs("Purchasing Stock Value(DNP)") & ""
                                DoCmd.SetWarnings False
                                DoCmd.RunSQL strSQL
                                DoCmd.SetWarnings True
                                num = num + Inrs("Purchasing Qty")
                                Allocableamount = Allocableamount + Inrs("Purchasing Stock Value(DNP)")
                                
                                
                                If account = Inrs.RecordCount Then
                                    strSQL = "INSERT INTO [SO Allocation-without LOT]([BU],[Order Status],[SUB BU],[Or Date Ty],[Order Number],[Or Ty],[Line Number],[2nd Item Number],[Quantity],[UOM],[Unit Price],"
                                    strSQL = strSQL + "[Total Amount],[Extended Amount],[Quantity Shipped],[Quantity Backordered],[Branch/Plant],[Location],[Lot Serial Number],[Last Status],[Next Status],[Pick Number]"
                                    strSQL = strSQL + ",[Document Number],[Doc Ty],[Invoice Date],[Ship To Description],[Ship To],[Sold To],[Customer PO],[Description 1],[Order Date],[Request Date],[Price Effective Date]"
                                    strSQL = strSQL + ",[可配货数量],[可配货金额])"
                                    strSQL = strSQL + " values('" & rs("bu") & "','" & rs("Order Status") & "','" & rs("SUB BU") & "','" & rs("Or Date Ty") & "','" & rs("Order Number") & "','" & rs("Or Ty") & "'"
                                    strSQL = strSQL + ",'" & rs("Line Number") & "','" & rs("2nd Item Number") & "','" & rs("Quantity") & "','" & rs("UOM") & "','" & rs("Unit Price") & "','" & rs("Total Amount") & "'"
                                    strSQL = strSQL + ",'" & rs("Extended Amount") & "','" & rs("Quantity Shipped") & "','" & rs("Quantity Backordered") & "','" & rs("Branch/Plant") & "','" & rs("Location") & "'"
                                    strSQL = strSQL + ",'" & rs("Lot Serial Number") & "','" & rs("Last Status") & "','" & rs("Next Status") & "','" & rs("Pick Number") & "'"
                                    strSQL = strSQL + ",'" & rs("Document Number") & "','" & rs("Doc Ty") & "','" & rs("Invoice Date") & "','" & Replace(rs("Ship To Description"), "'", " ") & "','" & rs("Ship To") & "'"
                                    strSQL = strSQL + ",'" & rs("Sold To") & "','" & rs("Customer PO") & "','" & Replace(rs("Description 1"), "'", " ") & "','" & rs("Order Date") & "','" & rs("Request Date") & "','" & rs("Price Effective Date") & "'"
                                    strSQL = strSQL + ",'" & num & "','" & Allocableamount & "')"
                                    DoCmd.SetWarnings False
                                    DoCmd.RunSQL strSQL
                                    DoCmd.SetWarnings True
                                Else
                                account = account + 1
                                End If
                                                            
                            End If
                        End If
                        Inrs.MoveNext
                        Loop
                    End If
                rs.MoveNext
            Loop
        End If
        Inrs.Close
        rs.Close
        '打开表按ship to ,order status 排序
        DoCmd.OpenTable "SO Allocation-without LOT"
    
    End Sub
    '余量库存报告
    Private Sub Command12_Click()
        'ADO连接数据库
        Dim rs As ADODB.Recordset
        Set rs = New ADODB.Recordset
        Dim strSQL As String
        
        '清空库存余量报告
        strSQL = "delete * from [Available Inventory]"
        DoCmd.SetWarnings False
        DoCmd.RunSQL strSQL
        DoCmd.SetWarnings True
        
        '查询所有库存
        strSQL = "select * from [Inventory-raw]"
        rs.Open strSQL, CurrentProject.AccessConnection, adOpenKeyset
          If rs.EOF Then
          MsgBox "请检查源数据!"
          Else
           Do While Not rs.EOF
            '查询库存临时表
                Dim rstemp As ADODB.Recordset
                Set rstemp = New ADODB.Recordset
                'strSQL = "select * from [Inventorytemp] where [B/P#]=" & rs("B/P#") & " and [Location Number]='" & Inrs("Location Number") & "' and [Item Number]='" & Inrs("Item Number") & "' and  [Lot Number]='" & Inrs("Lot Number") & "'"
                strSQL = "select * from [Inventorytemp] where [B/P#]=" & rs("B/P#") & " and [Location Number]='" & rs("Location Number") & "' and [Item Number]='" & rs("Item Number") & "' and  [Lot Number]='" & rs("Lot Number") & "'"
                rstemp.Open strSQL, CurrentProject.AccessConnection, adOpenKeyset
                    If rstemp.EOF Then
                    MsgBox "请检查源数据!"
                    ElseIf (rstemp.RecordCount = 1) Then
                        strSQL = "INSERT INTO [Available Inventory]([B/P#],[Location Number],[Item Number],[Item Description],[Purchasing UOM],[Packing Size],[Unit Price in local Currency]"
                        strSQL = strSQL + ",[Amount Price in local Currency],[Vendor Code],[Vendor Name],[Manufacturing Date],[Expiry Date],[Implant Instruments(Y/N)],[Product Line Name],[Report Date],[Local Product Group]"
                        strSQL = strSQL + ",[License Number],[License Effective Date],[License Expiry Date],[XRef SuppItem number],[BU],[Purchasing Qty],[SBJ DNP ],[Purchasing Stock Value(DNP)],[Bridge Buy (Y or N)],[PLCM Investment]"
                        strSQL = strSQL + ",[Committed Qty],[Commtitted INV Amout by DNP],[Available INV Qty],[Available INV Amount by DNP])"
                        strSQL = strSQL + " values('" & rs("B/P#") & "','" & rs("Location Number") & "','" & rs("Item Number") & "','" & Replace(rs("Item Description"), "'", " ") & "','" & rs("Purchasing UOM") & "','" & rs("Packing Size") & "'"
                        strSQL = strSQL + ",'" & rs("Unit Price in local Currency") & "','" & rs("Amount Price in local Currency") & "','" & rs("Vendor Code") & "','" & rs("Vendor Name") & "','" & rs("Manufacturing Date") & "'"
                        strSQL = strSQL + ",'" & rs("Expiry Date") & "','" & rs("Implant Instruments(Y/N)") & "','" & rs("Product Line Name") & "','" & rs("Report Date") & "','" & rs("Local Product Group") & "'"
                        strSQL = strSQL + ",'" & Replace(rs("License Number"), "'", "") & "','" & rs("License Effective Date") & "','" & rs("License Expiry Date") & "','" & Replace(rs("XRef SuppItem number"), "'", " ") & "'"
                        strSQL = strSQL + ",'" & rs("BU") & "','" & rs("Purchasing Qty") & "','" & rs("SBJ DNP ") & "','" & rs("Purchasing Stock Value(DNP)") & "','" & rs("Bridge Buy (Y or N)") & "','" & rs("PLCM Investment") & "'"
                        strSQL = strSQL + ",'" & rs("Purchasing Qty") & "','" & rs("Purchasing Qty") * rs("SBJ DNP ") & "','" & rstemp("Purchasing Qty") & "','" & rstemp("Purchasing Stock Value(DNP)") & "')"
                        DoCmd.SetWarnings False
                        DoCmd.RunSQL strSQL
                        DoCmd.SetWarnings True
                    Else
                    MsgBox "请检查源数据!"
                    End If
              rs.MoveNext
            Loop
          End If
    '打开表
        DoCmd.OpenTable "Available Inventory"
    End Sub
    
    Private Sub Command13_Click()
         'ADO连接数据库
        Dim rs As ADODB.Recordset
        Set rs = New ADODB.Recordset
        Dim strSQL As String
        '清空库存余量报告
        strSQL = "delete * from [report]"
        DoCmd.SetWarnings False
        DoCmd.RunSQL strSQL
        DoCmd.SetWarnings True
        '按bu,客户描述查订单和Allocation
        
        Dim onwhere As String
        
        strSQL = "SELECT a.[bu] AS BU, a.[Dealer] AS Dealer, a.[Overdue] AS [OverdueOrderStatus], a.[Current] AS [CurrentOrderStatus],"
        strSQL = strSQL + "a.[Future] AS [FutureOrderStatus], b.[Overdue] AS [OverdueAllocation], b.[Current] AS [CurrentAllocation], "
        strSQL = strSQL + "b.[Future] AS [FutureAllocation]"
        strSQL = strSQL + " FROM (SELECT Min([SO Backlog Report-raw].bu) AS BU, Max([SO Backlog Report-raw].[Ship To Description]) AS Dealer, Sum(iif([Order Status]='Overdue'"
        strSQL = strSQL + ",[Quantity],0)) AS Overdue, Sum(iif([Order Status]='Current',[Quantity],0)) AS [Current], Sum(iif([Order Status]='Future',"
        strSQL = strSQL + "[Quantity],0)) AS Future FROM [SO Backlog Report-raw] GROUP BY [SO Backlog Report-raw].[bu], [SO Backlog Report-raw].[Ship To Description])  AS a "
        
        'strSQL = strSQL + " Inner JOIN (SELECT Min([SO Allocation-BY LOT].bu) AS BU, Max([SO Allocation-BY LOT].[Ship To Description]) AS Dealer, Sum(iif([Order Status]='Overdue',[可配货数量],0)) AS Overdue, "
        strSQL = strSQL + " Left JOIN (SELECT Min([SO Allocation-BY LOT].bu) AS BU, Max([SO Allocation-BY LOT].[Ship To Description]) AS Dealer, Sum(iif([Order Status]='Overdue',[可配货数量],0)) AS Overdue, "
        strSQL = strSQL + "Sum(iif([Order Status]='Current',[可配货数量],0)) AS [Current], Sum(iif([Order Status]='Future',[可配货数量],0)) AS Future FROM [SO Allocation-BY LOT]"
        'strSQL = strSQL + "GROUP BY [SO Allocation-BY LOT].[bu], [SO Allocation-BY LOT].[Ship To Description])  AS b On (a.[Dealer]=b.[Dealer]) and (a.[bu]=b.[bu])"
        strSQL = strSQL + "GROUP BY [SO Allocation-BY LOT].[bu], [SO Allocation-BY LOT].[Ship To Description])  AS b On (Replace(a.[Dealer],""'"","" "")=b.[Dealer]) and (a.[bu]=b.[bu])"
        rs.Open strSQL, CurrentProject.AccessConnection, adOpenKeyset
          If rs.EOF Then
          MsgBox "请检查源数据!"
          Else
              Dim Overduerate As String
              Dim Currentrate As String
              Dim Futurerate As String
              Dim Total As String
              
              Dim Overdueaccount As Long
              Overdueaccount = 0
              Dim Currenteaccount As Long
              Currenteaccount = 0
              Dim Futureaccount As Long
              Futureaccount = 0
    
              Dim AllocationOverdueaccount As Long
              AllocationOverdueaccount = 0
              Dim AllocationCurrenteaccount As Long
              AllocationCurrenteaccount = 0
              Dim AllocationFutureaccount As Long
              AllocationFutureaccount = 0
    
              
              
              Do While Not rs.EOF
              
                 Overdueaccount = Overdueaccount + rs("OverdueOrderStatus")
                 Currenteaccount = Currenteaccount + rs("CurrentOrderStatus")
                 Futureaccount = Futureaccount + rs("FutureOrderStatus")
                 
                 If (IsNull(rs("OverdueAllocation"))) Then
                 Else
                 AllocationOverdueaccount = AllocationOverdueaccount + rs("OverdueAllocation")
                 End If
                 
                 If (IsNull(rs("CurrentAllocation"))) Then
                 Else
                 AllocationCurrenteaccount = AllocationCurrenteaccount + rs("CurrentAllocation")
                 End If
                 
                 If (IsNull(rs("FutureAllocation"))) Then
                 Else
                 AllocationFutureaccount = AllocationFutureaccount + rs("FutureAllocation")
                 End If
                 
                 
                 
                
                 If (rs("OverdueOrderStatus") = 0 Or IsNull(rs("OverdueAllocation"))) Then
                 Overduerate = "0%"
                 Else
                 Overduerate = CStr(Round(rs("OverdueAllocation") / rs("OverdueOrderStatus"), 3) * 100) + "%"
                 End If
                 
                 If (rs("CurrentOrderStatus") = 0 Or IsNull(rs("CurrentAllocation"))) Then
                 Currentrate = "0%"
                 Else
                 Currentrate = CStr(Round(rs("CurrentAllocation") / rs("CurrentOrderStatus"), 3) * 100) + "%"
                 End If
                 
                 If (rs("FutureOrderStatus") = 0 Or IsNull(rs("FutureAllocation"))) Then
                 Futurerate = "0%"
                 Else
                 Futurerate = CStr(Round(rs("FutureAllocation") / rs("FutureOrderStatus"), 3) * 100) + "%"
                 End If
                 If (rs("OverdueOrderStatus") + rs("FutureOrderStatus") + rs("CurrentOrderStatus")) = 0 Then
                 Total = "0%"
                 Else
                 Total = CStr(Round((rs("OverdueAllocation") + rs("FutureAllocation") + rs("CurrentAllocation")) / (rs("OverdueOrderStatus") + rs("FutureOrderStatus") + rs("CurrentOrderStatus")), 3) * 100) + "%"
                 End If
                 
                 strSQL = "insert into report([bu],[Dealer],[超需求日未提货(Order Status)],[需求日在当月(Order Status)],[需求日大于当月(Order Status)],[超需求日未提货(Allocation)],[需求日在当月(Allocation)],[需求日大于当月(Allocation]"
                 strSQL = strSQL + ",[超期配货率],[当月配货率],[未来需求配货率],[总配货率])"
                 ',[Comments]
                 strSQL = strSQL + "values('" & rs("BU") & "','" & Replace(rs("Dealer"), "'", " ") & "','" & rs("OverdueOrderStatus") & "','" & rs("CurrentOrderStatus") & "','" & rs("FutureOrderStatus") & "',"
                 strSQL = strSQL + "'" & rs("OverdueAllocation") & "','" & rs("CurrentAllocation") & "','" & rs("FutureAllocation") & "','" & Overduerate & "','" & Currentrate & "','" & Futurerate & "','" & Total & "')"
                 DoCmd.SetWarnings False
                 DoCmd.RunSQL strSQL
                 DoCmd.SetWarnings True
              rs.MoveNext
              Loop
              '追加合计行
                 Dim totalOverduerate As String
                 Dim totalCurrentrate As String
                 Dim totalFuturerate As String
                 Dim totalTotal As String
                 
                 If Overdueaccount = 0 Then
                 totalOverduerate = "0%"
                 Else
                 totalOverduerate = CStr(Round(AllocationOverdueaccount / Overdueaccount, 3) * 100) + "%"
                 End If
                 
                 If Currenteaccount = 0 Then
                 totalCurrentrate = "0%"
                 Else
                 totalCurrentrate = CStr(Round(AllocationCurrenteaccount / Currenteaccount, 3) * 100) + "%"
                 End If
                 
                 If Futureaccount = 0 Then
                 totalFuturerate = "0%"
                 Else
                 totalFuturerate = CStr(Round(AllocationFutureaccount / Futureaccount, 3) * 100) + "%"
                 End If
                 If (Overdueaccount + Currenteaccount + Futureaccount) = 0 Then
                 totalTotal = "0%"
                 Else
                 totalTotal = CStr(Round((AllocationOverdueaccount + AllocationCurrenteaccount + AllocationFutureaccount) / (Overdueaccount + Currenteaccount + Futureaccount), 3) * 100) + "%"
                 End If
                 
                 strSQL = "insert into report([bu],[Dealer],[超需求日未提货(Order Status)],[需求日在当月(Order Status)],[需求日大于当月(Order Status)],[超需求日未提货(Allocation)],[需求日在当月(Allocation)],[需求日大于当月(Allocation]"
                 strSQL = strSQL + ",[超期配货率],[当月配货率],[未来需求配货率],[总配货率])"
                 ',[Comments]
                 strSQL = strSQL + "values('合计',' ','" & Overdueaccount & "','" & Currenteaccount & "','" & Futureaccount & "',"
                 strSQL = strSQL + "'" & AllocationOverdueaccount & "','" & AllocationCurrenteaccount & "','" & AllocationFutureaccount & "','" & totalOverduerate & "','" & totalCurrentrate & "','" & totalFuturerate & "','" & totalTotal & "')"
                 DoCmd.SetWarnings False
                 DoCmd.RunSQL strSQL
                 DoCmd.SetWarnings True
              
          End If
          
          rs.Close
          DoCmd.OpenTable "report"
        
    End Sub
    

     ADO需添加引用

    展开全文
  • office vba全套参考手册 包含access、excel、fpw、frontpage、outlook、word、powerpoint等全系office的vba参考手册
  • Office_vba编程手册合集,包含:access、word、outlook、excel、powerpoint等多种软件的vb开发手册合集
  • access VBA 编程参考 CHM access编程必备
  • access vba 编程教材

    2011-06-11 14:40:27
    书名:实战Access2003.VBA程序设计,比较详细的vba编程教程,通俗易懂
  • [计算机软件及应用]Access编程语言VBAAccess的编程语言VBA ycxcm@ctgu.edu.cn Access编程语言VBA VBA是Visual Basic for Applications的英文缩写,它和Visual Basic极为相似,是用Basic语言来作为语法基础的可视...

    [计算机软件及应用]Access的编程语言VBA

    Access的编程语言VBA ycxcm@ctgu.edu.cn Access的编程语言VBA VBA是Visual Basic for Applications的英文缩写,它和Visual Basic极为相似,是用Basic语言来作为语法基础的可视化的高级语言。 6.1 VBA的语法 6.2 VBA中的面向对象编程 6.1 VBA的语法 6.1.1 常量 6.1.2 变量 6.1.3 表达式 6.1.4 选择结构 6.1.5 循环结构 6.1.6 数组 6.1.7 子程序和子函数 6.1.8 文件 VBA编程基础 注释语句 代码的换行 字符串的定界符与拼接 注释语句 语法: Rem comment ' comment 注意:comment 参数是可选的,指要包括的注释文本。在 Rem 关键字与 comment 之间要加一个空格 说明: 如果使用行号或行标签,则可以从 GoTo 或 GoSub 语句转到一个 Rem 语句行。程序会从该 Rem 语句下面的第一条可执行语句继续执行。如果在其它语句行后使用 Rem 关键字,则必须使用冒号 (:) 与语句隔开。 可以用一个撇号 (‘) 来代替 Rem 关键字。若使用撇号,则在其它语句行使用时不必加冒号。 代码的换行 在要换行的结尾,输入空格加_ 例: Dim I For I = 1 To 20 _ Step 10 MsgBox "您看我的代码这样折行是否有问题呢", _ vbOKCancel, _ "提醒" Next I 字符串的定界符与拼接 定界符为英文的双引号("),拼接符为& 例如 Dim strMSG As String strMSG = "CREATE TABLE NewTable " _ & "(FirstName TEXT, LastName TEXT, " _ & "SSN INTEGER " _ & "PRIMARY KEY);" 6.1.1 常量 在程序运行过程中,其值不可以发生变化的量叫做常量。 1.常量的命名规则 2.常量的类型 3.常量的声明和使用 1.常量的命名规则 常量名必须以字母为首字符,从第二个字符开始可以是数字或字母以及下划线。 2.常量(变量)的类型 3.常量的声明和使用 符号常量的定义语句如下: Const 符号常量名 [As type] = 常量值 例: Const A = 56.5 Const B = 90 在程序中符号常量不能进行二次赋值,这是它与变量不同的地方。 如果在声明常数时没有显式地使用 As type 子句,则该常数的数据类型是最适合其表达式的数据类型。 6.1.2 变量 在程序运行的过程中,其值可以发生变化的量叫做变量。 1.变量的类型 变量的类型和常量的类型是一致的。 2.变量的定义 (1)使用Dim语句定义(推荐) (2)使用类型符定义 (3)使用DefType语句定义 ( 1 ) 使用Dim语句定义 格式: Dim 变量名 AS 变量类型 例: '显式声明一个 Integer 类型的变量。 Dim Number As Integer '在一行中声明多个变量。AnotherVar 为 Variant 类型,因为它的类型被省略了。 Dim AnotherVar, Choice As Boolean, BirthDate As Date ( 2 )使用类型符定义 格式: 变量名类型符 = 默认值 例: name$ = "xiaofeng" age% = 31 grade! = 100 (3)使用DefType语句定义 格式如下: DefType 字母[,字母范围] 例: DefInt a,b,c,e-h 6.1.3 表达式 表达式是由运算符、函数和数据等内容组合而成的。 1.运算符和表达式 2.标准函数 1.运算符和表达式 (1)算术运算符 (2)关系运算符 (3)逻辑运算符 (1)算术运算符 (2)关系运算符 (3)逻辑运算符 常用的逻辑运算符有“非”运算符(Not)、“与”运算符(And)和“或”运算符(Or)。 逻辑运算符之间的运算关系 2.标准函数 由系统提供的函数称为标准函数。常用的标准函数有: 6.1.4 选择结构 1.行 If 语句 2.块 If 语句 3.Select Case语句 1.行If语句 格式: If Then [Else ] 注意 在单行形式中,按照 If...Then 判断的结果也可以执行多条语句。所有语句必须在同一行上并且以冒号分开,如下面语句所示: If A > 10 Then A = A + 1 : B = B + A

    展开全文
  • VBA编程基础教程

    2014-11-13 06:04:27
    vba但相关资料不是很多,其实就是利用了vb的语法,结合office……
  • Access基础与应用教程VBA的数据库编程PPT课件.pptx
  • Access基础与应用教程VBA的数据库编程学习教案.pptx
  • Access基础与应用教程VBA的数据库编程PPT学习教案.pptx

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 2,362
精华内容 944
关键字:

access vba编程教程