1. 将文本框更改为组合框,并在选择中显示输入值“男”,“女”
2. 参数查询中引用窗体控件。例:对查询qt1进行修改,要求查询条件为窗体femp上列表框flist
的值。(其中flist显示教师的职称信息) 职称 forms![femp]![flist]
3. 设置计算控件,要求显示的内容根据党员否字段值进行判断,如果值为真,显示“党员”,否则显
示“非党员”
=iif([党员否],”党员”,”非党员”)
4. 对报表按编号前四位值进行分组,在组页脚添加文本框,显示每个分组的总人数 【视图】-【排序与分组】 =left([编号],4)
控件来源: =count(*)
显示平均年龄: =avg([年龄])
5. 在报表页面页脚区显示当前的年月信息,格式为“****年**月” 控件来源: =year(date())&”年”&month(date())&”月” 设置入学日期默认值为本年度的八月三十日 ****-8-30 Year(date())&” 年8月30日” Year(date())&”8-30”
6. 在报表页面面脚区显示页码信息,显示格式为“第N页,总共M页” =”第”&[page]&”页,总共”&[pages]&”页”
7. 设置复选框的值,如果当前记录性别为“女”且年龄大于20岁,则勾上复选框,否则不勾上。 控件来源:=iif([性别]=”女” and [年龄]>20,true,false)
8. 对报表属性进行相关设置,要求只显示出党员教授的教师信息。 筛选:[政治面目]=”党员” and [职称]=”教授”
查询难点讲解
1. 查询视图
表视图:只需要添加必需的数据库表,否则产生错误的结果 字段:显示的内容或者查询需要的字段 条件:查询结果设置的条件表达式
例:查询学号前两位是“01”的学生信息
查询学生的姓氏,名字,班级信息,其中姓氏为姓名字段的第一个字符,其它的为名字信息,班级为学号前6位。 2. 查询条件 字段名 条件描述 条件表达式 Left([学号],4)=”0910” 学号 前4位为“0910”的记录 Like “0910*” Not Like “*伟*” 姓名 不含有“伟”字的记录 Instr([姓名],”伟”)=0 查找1986年9月出生的学生记Year([出生日期])=1986 and 出生日期 录 month([出生日期])=9 团员否(是查找是/否团员的记录 /否) 入校时间 简历 查找1997年入学的记录 有爱好书法的学生记录 Yes/No Year([入校时间])=1997 Like “*书法*” 工作时间 联系电话 不爱好摄像的学生记录 30天之前参加工作的记录 30天之内参加工作的记录 没有联系电话的记录 Instr([简历],”摄影”)=0 3. 计算查询 预定义查询:sum()、avg()、min()、max()、count() 表达式:字段行中包括统计函数 自定义查询:将表达式输入到设计网络的空字段行中 例:查询学生表中年龄最大值与最小值之差 4. 交叉表查询 行标题: 左边若干列,最多出现三个行标题 列标题的值:第一行,只能有一个列标题 值:查询内容,可以进行统计,只能有一个值 总计:行标题,对“值”进行求和 例:统计各门课程男女生的平均成绩,并对平均成绩取整 5. 参数查询 在“条件”用[]将提示信息括起来 例:根据学生姓名删除其记录信息,其中提示信息为“请输入学生姓名”。 6. 操作查询 更新查询 更新到:更新后的值 条件:判断哪些记录需要更新 例:清除学生表中的“简历”信息 将男生的学号第4,5位值更改为“02” 最后一位学号更改为“08” Left([学号], len([学号])-2 )&“08” 追加查询 将表A的值追加到表B中,表B中一定要存在相关的字段 7. 嵌套查询 查询中使用另外一个查询结果的值 例:查询没有进行选课的学生信息。 数据库编程复习 1. 属性和方法描述对象的性质和行为 引用方式: 对象.属性 对象.行为 属性:如窗体fEmp中已有标签Label1、文本框txt1和命令按钮cmd1,组合框com1,还包括子窗体flistp. Me.caption /Form.Caption 代表窗体fEmp的标题 Me.Label1.fontsize 代表标签上显示的字体大小 或me!label1.fontSize / label1.fontsize 当前窗体的控件可以不用me label1.caption 代表标签上显示的文本 Txt1.value 代表文本框的值内容,可以是数字或文本 Txt1.text 代表文本框的值内容,只能为文本 Cmd1.Visible 代表命令按钮的可见性 com1.value 代表组合框中的数据 设置子窗体的属性:[子窗体名].Form.[属性] 如设置子窗体fListp的记录源为表“student”:FlistP.form.recordsource 行为: 刷新窗体:me.Refresh 将光标放置文本框中:txt1.setFocus 2. 引用窗体或报表的控件值 引用窗体控件值:Forms![窗体名]![控件名] [Forms]![窗体名]![控件名] 引用报表控件值:Reports![窗体名]![控件名] [Reports]![窗体名]![控件名] 3. 常用属性 标题:caption 记录源:RecordSource SQL,tableName, queryName 名称: Name 可见性:Visible 值为True或false 字号:FontSize 背景色:BackColor 前景色:ForeColor 可用: Enabled 值为True或false 输入掩码:InputMask 默认值:DefaultValue 4. 常用事件: 更新后:AfterUpdate 在控件或记录用更改过的数据更新之后发生 更新前:BeforeUpdate 在控件或记录用更改了的数据更新之前 成为当前:Current 当焦点移动到一条记录,使它成为当前记录时,或当重新查询窗体的数据来源时 更改:Change 当文本框或组合框文本部分的内容发生更改时,事件发生 单击:Click 单击鼠标左键时发生 计时器触发:Timer 当窗体的TimerInterval属性所指定的时间间隔已到时发生 进入:Enter 发生在控件实际接收焦点之前。此事件在GotFocus事件之前发生 获得焦点:GotFocus 当一个控件、一个没有激活的控件或有效控件的窗体接收焦点时发生 失去焦点:LostFocus 当窗体或记录失去焦点时发生 5. 常用宏操作 FindRecord:查找符合指定条件的第一条或下一条记录 FindNext:查找下一条记录 GoToControl:将焦点移到被激活的数据表或窗体的指定字段或控件上 GoToRecord:在表、窗体或查询集中将指定的记录设置为当前记录 RunMacro:运行宏 docmd.runMacro “m1” RunSQL:执行指定的SQL语句 SetValue:设置项目的值。 第一个参数:要设置的字段、控件或属性名。第二个参数:设置的具体值 如:窗体fEmp中已有标签Label1、文本框txt1和命令按钮cmd1。宏1包含宏操作setValue,第一个参数项目为[Label]![caption],第二个参数为表达式[txt1],此宏完成的操作是: Quit:退出Access 6. VBA常见操作 打开stud表:docmd.openTable “stud” 打开窗体fEMP: docmd.openForm “fEMP” 以预览方式打开报表rEmp: docmd.openReport “rEMP”,acPreview 关闭当前窗体:docmd.close 关闭stud表: docmd.close acTable,”stud” 关闭窗体fEmp: docmd.close acForm,”fEmp” 关闭报表rEmp: docmd.close acReport,”rEmp” 7. 输入框:InputBox InputBox([提示信息],[标题]) 如: N=val( inputBox(“请输入姓名:”,”Msg”) ) 返回值为string(字符串)类型的数据 8. 消息框:Msgbox Msgbox(prompt[,buttons][,title]…) 使用格式: 不需要返回值:msgbox “数据处理结束!”,64 需要返回值:n= msgbox(“是否要退出?”,3+32) 注意:参数信息可以根据输入提示进行选择 9. VBA常用验证函数(返回值都为boolean类型) IsNumeric 是否为数值 IsDate 是否可以转换为日期 IsNull 是否为无效数据(Null)。返回true,无效数据 IsEmpty 是否已经初始化 IsArray 是否为数组 IsError 是否为错误值 IsObject 是否表示对象变量 10. 计时事件(窗体) 属性:计时器间隔(TimerInterval),单位为毫秒 事件:计时器触发(Timer) 11. 数据库访问接口: 开放数据库应用编程接口(ODBC API) 数据访问对象:DAO ActiveX数据对象:ADO Rs.EOF 表示记录指针指向最后一条记录之后 Rs.update 刷新当前记录的修改 Rs.MoveNext 记录向下移一条 Rs.recordCount 记录集的个数 表格式表单窗体当前记录变化时触发Form_current事件 12. 聚合函数 DCount、DAvg、DSum DMin、DMax ? 在文本框显示选课成绩表中课程号为“001”的平均成绩 设置文本框的控件来源属性为: =DAvg(“成绩”,”选课成绩”,”课程号=’001’ ”) ? 在文本框学生表中在1987年之前出生的学生人数 =dcount(“学号”,”学生”,”出生日期<#1987-1-1#” ? 在文本框中显示“学生”表中的女生人数 =dcount(“学号”,”学生”,”性别=’女’ ” ? 在文本框中显示“001”课程的最高分 =dmax(“成绩”,”选课成绩”,”课程编号=’001’ ” ? 在文本框中显示“学生”表中名字为三个字的学生人数 =dcount(“学号”,”学生”,” len([姓名])=3” 注意:条件值中的字符串用单引号表示。日期型的条件值中#不能丢。 13. 检索函数 DLookUP(表达式,记录集[,条件式]) 如果使用字符串连接符&,书写时一定要在&前后加上空格。 14. Docmd对象的RunSQL方法 格式: Docmd.RunSQL SQLStatement 参数SQLStatement为字符串表达式,可以为查询或数据定义的SQL语句 例:编程实现选课成绩表课程号为“001”的成绩加20%。 Dim strSQL as String strSQL= “update 选课成绩 set 成绩=成绩*1.2 where 课程号=’001’ ” Docmd.RunSQL strSQL