如何修改ADO.RecordSet的字符集

liandzhu 2009-01-06 05:10:57
如何修改ADO.RecordSet的字符集??? 我的操作系统为简体中文,,我想把ADO.RecordSet的字符集该为BIG5的,有没有什么好的办法呢?
...全文
173 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
liandzhu 2009-02-12
  • 打赏
  • 举报
回复
再顶!~~~~~~~~~~~~~`
cebdou 2009-01-07
  • 打赏
  • 举报
回复
也帮你顶一下
liandzhu 2009-01-06
  • 打赏
  • 举报
回复
顶起来 高手帮忙哦
      课程设计题目    学生成绩管理系统 课程设计的目的   理解面向对象的软件设计基本理论,学习VB软件设计的基本方法,熟悉一般软件项目开发的基本步骤,培养运用VB解决实际问题的能力和技巧。 课程设计的主要内容和要求(包括原始数据、技术参数、设计要求、工作量要求等) 四、工作进度安排 2011-2012学年第19周。 五、主要参考文献 Visual Basic程序设计教程 审核批准意见                                           系主任(签字)    年  月  日     指导教师评语及成绩 指 导 教 师 评 语                           成 绩                                    导师签字: 年 月 日                    设计思路及其创建过程    一、任务概述     简易学生成绩管理系统主要完成学生成绩的管理,包括:    1)、添加信息模块:主要完成学生记录、课程记录、学生成绩和用户记录的添加工作。    2)、删除信息模块:主要完成学生记录、课程记录、学生成绩和用户记录的删除工作。    3)、修改成绩模块:主要完成学生成绩的修改工作。    4)、查询模块:主要完成学生成绩的查询工作。    1.进行数据库设计     要编写一个实用的数据库程序,必须系统地学习过数据库原理的知识,并首先设计出符合用户业务需求的数据库体系,然后才能利用某种语言,开发出针对这个数据库的交互程序:数据库应用程序。    2. 程序的主要功能    利用SQL语句完成对学生成绩表的插入、修改、删除和查询操作。比如:    (1)插入记录:    Insert Into 学生成绩表(学号,课程号,成绩)    Values(‘001’,’001’,85)    (2)删除记录    Delete From 学生成绩表    Where 学号=‘001’ And 课程号=‘001’    (3)修改记录    Update 学生成绩表 set 成绩 =90    Where 学号=‘001’ And 课程号=‘001’    (4)按学号查询    Select * From 学生成绩表 Where 学号=‘001’    二、界面设计    1.创建工程    新建一“标准EXE”工程.工程名为“成绩查询”.    2.创建主窗体(frmMain)-MDI主窗体    设计菜单:    增加 删除 修改 查询 退出    增加学生记录 删除学生记录 修改成绩    增加课程记录 删除课程记录    增加成绩 删除成绩记录    增加用户 删除用户 3.创建新增学生记录窗体(frmAddStudent)-MDI子窗体 4、建新增课程记录窗体(frmAddCourse)-MDI子窗体 5.创建新增成绩记录窗体(frmAddGrade)-MDI子窗体 6.创建新增用户记录窗体(frmAddUser)-MDI子窗体 7. 创建修改记录窗体( frmUpdate )-MDI子窗体 8.创建删除学生记录窗体(frmDeleteStudent)-MDI子窗体 9.创建删除课程记录窗体(frmDeleteCourse)-MDI子窗体 10.创建删除成绩记录窗体(frmDeleteGrade)-MDI子窗体 11.创建删除用户窗体(frmDelete)-MDI子窗体 12.创建查询记录窗体(frmQuery)-MDI子窗体 13.创建身份验证窗体-MDI子窗体 1.3 代码设计 1. 连接数据库代码 步骤: (1)通过“工程—引用”菜单添加对象库: Microsoft Activex Data Objects 2.7 Library (Ado数据对象)。 (2)通过工程菜单添加一个标准模块(Module),并设计代码。 (3) 通过“工程—工程1属性”菜单,将主窗体(frmMain)MDIform1设置为启动对象。 添加标准模块代码: '声明全局对象变量ABOcn,用于创建于数据库的连接 Public ADOcn As New ADODB.Connection 添加主窗体初始化过程代码: Private Sub MDIForm_Initialize() ADOcn.ConnectionString = "Provider=SQLOLEDB.1;Password=;User ID=sa;Initial Catalog=成绩;Data Source= localhost;" If ADOcn.State = adStateClosed Then ADOcn.Open '打开到数据库的连接 End Sub 完成本项工作后,就创建了一个全局变量ADOcn,但它是一个特殊的变量,其数据类型是数据连接对象(Connection对象)。可以把ADDcn理解成是一个虚拟的数据库。或者称为VB程序中的逻辑数据库,通过它可以非常方便地访问其中的数据。换句话说,ADOcn是VB程序的后台数据库交互的通道。 2.设置窗体间的调用关系 2.设置窗体间的调用关系 ’调用增加课程窗体 Private Sub AddCourse_Click(Index As Integer) frmAddCourse.Show End Sub ’调用增加成绩窗体 Private Sub AddGrade_Click(Index As Integer) FrmAdd.Show End Sub ’调用增加学生窗体 Private Sub AddStudent_Click(Index As Integer) FrmAddStudent.Show End Sub ’调用增加用户窗体 Private Sub AddUser_Click() FrmAddUser.Show End Sub ’调用删除课程窗体 Private Sub DeleteCourse_Click() frmDeleteCourse.Show End Sub ’调用删除成绩窗体 Private Sub DeleteGrade_Click() frmDelete.Show End Sub ’调用删除学生窗体 Private Sub DeleteStudent_Click() frmDeleteStudent.Show End Sub ’调用删除用户窗体 Private Sub DeleteUser_Click() frmDeleteUser.Show End Sub ’调用学生基本信息查询窗体 Private Sub Querystudent_Click() frmQuerystudent.Show End Sub ’调用学生成绩查询窗体 Private Sub QueryGrade_Click() frmQueryGrade.Show End Sub’调用修改成绩窗体 Private Sub Update_Click() FrmUpdate.Show End Sub 调用退出程序 Private Sub Exit_Click() End End Sub 3.frmAddStudent (增加学生)窗体的代码设计: Private Sub Command1_Click() Dim ADOrs As New Recordset '声明一个记录集对象 Dim strSQL As String ADOrs.ActiveConnection = ADOcn '与ADOcn连接对象关联 If Text1.Text = "" Then MsgBox "未输入学号,请重新输入数据!", vbCritical + vbOKOnly Text1.SetFocus '定位光标 Exit Sub End If If Text2.Text = "" Then MsgBox "未输入姓名,请重新输入数据!", vbCritical + vbOKOnly Text2.SetFocus '定位光标 Exit Sub End If '首先查询表中是否存在关键字相同的记录 strSQL = "select * from 学生情况表" strSQL = strSQL & " Where 学号='" + Text1.Text + " '" strSQL = strSQL & " and 姓名='" + Text2.Text + "'" ADOrs.Open strSQL '如果关键字重复,则退出 If Not ADOrs.EOF Then MsgBox "该记录已经存在,不能继续增加", vbCritical + vbOKOnly Exit Sub End If '拼写Insert插入语句 strSQL = "Insert Into 学生情况表(学号,姓名)" strSQL = strSQL + " Values('" + Text1.Text + "'," strSQL = strSQL + "'" + Text2.Text + "'" + ")" ADOcn.Execute strSQL '执行Insert语句 Text1.Text = "“ '初始化文本框控件 Text2.Text = "" Text1.SetFocus '定位光标 MsgBox "已成功添加新记录", vbQuestion + vbOKOnly ADOrs.Close '关闭记录集 Set ADOrs = Nothing End Sub Private Sub Command2_Click() Unload Me End Sub 4.frmAddCourse (增加课程)窗体的代码设计: (1)在Load事件中,进行初始化工作,代码如下: Private Sub Form_Load() '初始化文本框控件 Text1.Text = "" Text2.Text = "" End Sub (2)’Command1_Click()(”确定”按钮)事件代码 Private Sub Command1_Click() Dim ADOrs As New Recordset '声明一个记录集对象 Dim strSQL As String '与ADOcn连接对象关联 ADOrs.ActiveConnection = ADOcn If Text1.Text = "" Then MsgBox "未输入课程号,请重新输入数据!", vbCritical + vbOKOnly Text1.SetFocus '定位光标 Exit Sub End If If Text2.Text = "" Then MsgBox "未输入课程名,请重新输入数据!", vbCritical + vbOKOnly Text2.SetFocus '定位光标 Exit Sub End If ’Command1_Click()(”确定”按钮)事件代码 '首先查询表中是否存在关键字相同的记录 strSQL = "select * from 课程情况表" strSQL = strSQL & " Where 课程号='" + Text1.Text + " '" strSQL = strSQL & " and 课程名='" + Text2.Text + "'" ADOrs.Open strSQL '如果关键字重复,则退出 If Not ADOrs.EOF Then MsgBox "该记录已经存在,不能继续增加", vbCritical + vbOKOnly Exit Sub End If ’Command1_Click()(”确定”按钮)事件代码 '拼写Insert插入语句 strSQL = "Insert Into 学生情况表(学号,姓名)" strSQL = strSQL + " Values('" + Text1.Text + "'," strSQL = strSQL + "'" + Text2.Text + "'" + ")" ADOcn.Execute strSQL '执行Insert语句 Text1.Text = "“ '初始化文本框控件 Text2.Text = "" Text1.SetFocus '定位光标 MsgBox "已成功添加新记录", vbQuestion + vbOKOnly ADOrs.Close '关闭记录集 Set ADOrs = Nothing End Sub (3)’Command2_Click()(”返回”按钮)事件代码 Private Sub Command2_Click() Unload Me End Sub 5.frmAddGrade(增加成绩)窗体的代码设计: (1)在Load事件中,进行初始化工作,代码如下: Private Sub Form_Load() Dim ADOrs As New Recordset '声明记录集对象 ADOrs.ActiveConnection = ADOcn '与ADOcn连接对象关联 '对Combo1组合框进行初始化 ADOrs.Open "Select 学号 From 学生情况表 Order By 学号" Combo1.Clear Do While Not ADOrs.EOF Combo1.AddItem Trim(ADOrs.Fields("学号")) '添加"学号"字段值 ADOrs.MoveNext '取下一条记录 Loop ADOrs.Close '关闭记录集 (1)Load事件代码 '对Combo2组合框进行初始化 ADOrs.Open "select 课程号 from 课程情况表 Order By 课程号" Combo2.Clear Do While Not ADOrs.EOF Combo2.AddItem Trim(ADOrs.Fields("课程号")) '添加"课程号"字段值 ADOrs.MoveNext '取下一条记录 Loop ADOrs.Close '关闭记录集 '初始化文本框控件 Text1.Text = "" Text2.Text = "" Text3.Text = "0" End Sub (2) Combo1_Click 事件代码 Private Sub Combo1_Click() Dim ADOrs As New Recordset '声明一个记录集对象 ADOrs.ActiveConnection = ADOcn '与ADOcn连接对象关联 '如果输入了学号,则把姓名显示在Text1.Text strSQL = "select * from 学生情况表" strSQL = strSQL + " Where 学号='" + Combo1.Text + " '" ADOrs.Open strSQL Text1.Text = ADOrs.Fields("姓名") ADOrs.Close '关闭记录集 Set ADOrs = Nothing End Sub (3) Combo2_Click 事件代码 Private Sub Combo2_Click() Dim ADOrs As New Recordset '声明一个记录集对象 ADOrs.ActiveConnection = ADOcn '与ADOcn连接对象关联 '如果输入了课程号,则把课程名显示在Text2.text strSQL = "select * from 课程情况表" strSQL = strSQL + " Where 课程号='" + Combo2.Text + " '" ADOrs.Open strSQL Text2.Text = ADOrs.Fields("课程名") ADOrs.Close '关闭记录集 Set ADOrs = Nothing End Sub (4) Command1_Click(确认) 事件代码 Private Sub Command1_Click() Dim strSQL As String Dim ADOrs As New Recordset '声明一个记录集对象 ADOrs.ActiveConnection = ADOcn '与ADOcn连接对象关联 '检查学号与课程号是否输入 If Combo1.Text = "" Or Combo2.Text = "" Then MsgBox "输入数据不全,请重新输入数据!", vbCritical + vbOKOnly Exit Sub End If '首先查询表中是否存在关键字相同的记录 strSQL = "select * from 学生成绩表" strSQL = strSQL & " Where 学号='" + Combo1.Text + " '" strSQL = strSQL & " and 课程号='" + Combo2.Text + "'" ADOrs.Open strSQL '如果关键字重复,则退出 If Not ADOrs.EOF Then MsgBox "该记录已经存在,不能继续增加", vbCritical + vbOKOnly Exit Sub End If (4) Command1_Click(确认) 事件代码 '拼写Insert插入语句 strSQL = "Insert Into 学生成绩表(学号,课程号,成绩)" strSQL = strSQL + "Values('" + Combo1.Text + "','" strSQL = strSQL + Combo2.Text + "'," + Str(Val(Text3.Text)) + ")" ADOcn.Execute strSQL '执行Insert语句 MsgBox "已成功添加新记录", vbQuestion + vbOKOnly '初始化文本框控件 Text1.Text = "" Text2.Text = "" Text3.Text = "0" ADOrs.Close '关闭记录集 Set ADOrs = Nothing End Sub (5) Command2_Click(返回) 事件代码 Private Sub Command2_Click() Unload Me End Sub 6.frmAddUser(增加用户)代码设计 (1)在Load事件中,进行初始化工作,代码如下: Private Sub Form_Load() '初始化文本框控件 Text1.Text = "" Text2.Text = "" Text3.Text = "" End Sub (2) Command1_Click(确认) 事件代码 Private Sub Command1_Click() Dim strSQL As String Dim ADOrs As New Recordset '声明一个记录集对象 ADOrs.ActiveConnection = ADOcn '与ADOcn连接对象关联 '记录已输入的用户信息 UserName = Text1.Text PaasWord = Text2.Text PaasWord1 = Text3.Text '若 Text1.Text 或Text2.Text或Text3.Text为空则提示用户重新输入 If Text1.Text = "" Or Text2.Text = "" Or Text3.Text = "" Then MsgBox "未输入用户名、密码或密码确认,请重新输入!", vbCritical + vbOKOnly Exit Sub End If '若 两此输入密码不一致则提示用户重新输入 If PaasWord PaasWord1 Then MsgBox "两次输入的密码不一致,请重新输入!", vbCritical + vbOKOnly Text2.Text = "" Text3.Text = "" Text2.SetFocus Exit Sub End If '首先查询用户中是否存在相同的记录 strSQL = "Select * From 用户" strSQL = strSQL + " Where 用户名='" + UserName + "'" ADOrs.Open strSQL If Not ADOrs.EOF Then '如果关键字重复,则退出 MsgBox "该用户已经存在,请重新注册", vbCritical + vbOKOnly Exit Sub End If '拼写Insert插入语句 strSQL = "Insert Into 用户(用户名,密码)" strSQL = strSQL + " Values('" + UserName + "','" + PaasWord + "')" ADOcn.Execute strSQL '执行Insert语句 MsgBox "已成功添加新记录", vbQuestion + vbOKOnly ADOrs.Close '关闭记录集 Set ADOrs = Nothing End Sub (3) Command2_Click(返回) 事件代码 Private Sub Command2_Click() Unload Me End Sub 7.frmUpdata (修改成绩)窗体代码设计 (1)、在Load事件中,进行初始化工作,代码如下: Private Sub Form_Load() Dim ADOrs As New Recordset '声明记录集对象 ADOrs.ActiveConnection = ADOcn '与ADOcn连接对象关联 '对Combo1组合框进行初始化 ADOrs.Open "Select 学号 From 学生情况表 Order By 学号" Combo1.Clear Do While Not ADOrs.EOF Combo1.AddItem Trim(ADOrs.Fields("学号")) '添加"学号"字段值 ADOrs.MoveNext '取下一条记录 Loop ADOrs.Close '关闭记录集 (1)、Form_Load()事件代码 '对Combo2组合框进行初始化 ADOrs.Open "select 课程号 from 课程情况表 Order By 课程号" Combo2.Clear Do While Not ADOrs.EOF Combo2.AddItem Trim(ADOrs.Fields("课程号")) '添加"课程号"字段值 ADOrs.MoveNext '取下一条记录 Loop ADOrs.Close '关闭记录集 '初始化文本框控件 Text1.Text = "" Text2.Text = "" Text3.Text = "0" End Sub (2) Combo1_Click 事件代码 Private Sub Combo1_Click() Dim ADOrs As New Recordset '声明一个记录集对象 ADOrs.ActiveConnection = ADOcn '与ADOcn连接对象关联 '如果输入了学号,则把姓名显示在Text1.Text strSQL = "select * from 学生情况表" strSQL = strSQL + " Where 学号='" + Combo1.Text + " '" ADOrs.Open strSQL Text1.Text = ADOrs.Fields("姓名") ADOrs.Close '关闭记录集 (2) Combo1_Click 事件代码 If Combo2 "" Then '输入完毕则显示成绩信息 '查询学生成绩表中是否有指定指定学号与课程号的记录 strSQL = "select * from 学生成绩表" strSQL = strSQL & " Where 学号='" + Combo1.Text + " '" strSQL = strSQL & " and 课程号='" + Combo2.Text + "'" ADOrs.Open strSQL If ADOrs.EOF Then MsgBox "学生成绩表在不存在学号为" + Combo1.Text + "课程号为" + Combo2.Text + "的记录,请重新输入!", vbCritical + vbOKOnly Text1.Text = "" Text3.Text = "" Exit Sub Else Text3.Text = ADOrs.Fields("成绩") End If End If If ADOrs.State = adStateOpen Then ADOrs.Close '关闭记录集 Set ADOrs = Nothing End Sub (3) Combo2_Click 事件代码 Private Sub Combo2_Click() Dim ADOrs As New Recordset '声明一个记录集对象 ADOrs.ActiveConnection = ADOcn '与ADOcn连接对象关联 '如果输入了课程号,则把课程名显示在Text2.text strSQL = "select * from 课程情况表" strSQL = strSQL + " Where 课程号='" + Combo2.Text + " '" ADOrs.Open strSQL Text2.Text = ADOrs.Fields("课程名") ADOrs.Close '关闭记录集 (3) Combo2_Click 事件代码 If Combo1 "" Then '输入完毕则显示成绩信息 '查询学生成绩表中是否有指定指定学号与课程号的记录 strSQL = "select * from 学生成绩表" strSQL = strSQL & " Where 学号='" + Combo1.Text + " '" strSQL = strSQL & " and 课程号='" + Combo2.Text + "'" ADOrs.Open strSQL If ADOrs.EOF Then MsgBox "学生成绩表在不存在学号为" + Combo1.Text + "课程号为" + Combo2.Text + "的记录,请重新输入!", vbCritical + vbOKOnly Text2.Text = "" Text3.Text = "" Exit Sub Else Text3.Text = ADOrs.Fields("成绩") End If End If If ADOrs.State = adStateOpen Then ADOrs.Close '关闭记录集 Set ADOrs = Nothing End Sub (4)、 Command1_Click()(修改/确认按钮)事件代码 Private Sub Command1_Click() Dim strSQL As String Dim ADOrs As New Recordset '声明一个记录集对象 ADOrs.ActiveConnection = ADOcn '与ADOcn连接对象关联 '检查学号与课程号是否输入 If Combo1.Text = "" Or Combo2.Text = "" Then MsgBox "输入数据不全,请重新输入数据!", vbCritical + vbOKOnly Exit Sub End If (4)、 Command1_Click()(修改/确认按钮)事件代码 '根据当前按钮文字的不同进行相关处理 If Command1.Caption = "修改" Then Command1.Caption = "确认" Command2.Caption = "放弃" Else Command1.Caption = "修改" Command2.Caption = "返回" '拼写Update语句,以便进行修改 strSQL = "Update 学生成绩表" strSQL = strSQL + " Set 成绩=" + Text3.Text strSQL = strSQL + " Where 学号='" + Combo1.Text + "'" strSQL = strSQL + " And 课程号='" + Combo2.Text + " '" ADOcn.Execute strSQL '执行Updata语句 MsgBox "修改成功!", vbQuestion + vbOKOnly End If If ADOrs.State = adStateOpen Then ADOrs.Close '关闭记录集 Set ADOrs = Nothing End Sub (5) Command2_Click(返回/放弃) 事件代码 Private Sub Command2_Click() If Command2.Caption = "返回" Then Unload Me Else Command2.Caption = "返回" Command1.Caption = "修改" End If End Sub 8.frmDeleteStudent (删除学生)窗体的代码设计 (1)、Form_Load()事件代码 Private Sub Form_Load() Dim ADOrs As New Recordset '声明记录集对象 ADOrs.ActiveConnection = ADOcn '与ADOcn连接对象关联 '对Combo1组合框进行初始化 ADOrs.Open "select 学号 from 学生情况表 Order By 学号" Combo1.Clear Do While Not ADOrs.EOF Combo1.AddItem Trim(ADOrs.Fields("学号")) '添加"学号"字段值 ADOrs.MoveNext '取下一条记录 Loop ADOrs.Close '关闭记录集 '对Combo2组合框进行初始化 ADOrs.Open "select 姓名 from 学生情况表 Order By 学号" Combo2.Clear Do While Not ADOrs.EOF Combo2.AddItem Trim(ADOrs.Fields("姓名")) '添加"姓名"字段值 ADOrs.MoveNext '取下一条记录 Loop ADOrs.Close '关闭记录集 End Sub (2) Combo1_Click 事件代码 Private Sub Combo1_Click() Dim ADOrs As New Recordset '声明一个记录集对象 ADOrs.ActiveConnection = ADOcn '与ADOcn连接对象关联 '若选择了学号则将姓名自动填写到Combo2.Text ADOrs.Open "Select 姓名 From 学生情况表 Where 学号 ='" + Combo1.Text + "'" If ADOrs.EOF Then MsgBox "学生情况表中没有学号为" + Combo1.Text + "的记录,请重新输入!", vbQuestion + vbOKOnly Combo1.Text = "" Exit Sub Else Combo2.Text = ADOrs.Fields("姓名") End If ADOrs.Close '关闭记录集 End Sub (3) Combo2_Click 事件代码 Private Sub Combo2_Click() Dim ADOrs As New Recordset '声明一个记录集对象 ADOrs.ActiveConnection = ADOcn '与ADOcn连接对象关联 '若选择了姓名则将学号自动填写到Combo1.Text ADOrs.Open "Select 学号 From 学生情况表 Where 姓名 ='" + Combo2.Text + "'" If ADOrs.EOF Then MsgBox "学生情况表中没有姓名为" + Combo2.Text + "的记录,请重新输入!", vbQuestion + vbOKOnly Combo1.Text = "" Exit Sub Else Combo1.Text = ADOrs.Fields("学号") End If ADOrs.Close '关闭记录集 End Sub (4)、 Command1_Click()(确定按钮)事件代码 Private Sub Command1_Click() Dim ADOrs As New Recordset '声明记录集对象 Dim ADOrs1 As New Recordset '声明记录集对象 ADOrs.ActiveConnection = ADOcn '与ADOcn连接对象关联 ADOrs1.ActiveConnection = ADOcn '与ADOcn连接对象关联 '若学号和姓名同时为空则提示用户重新输入 If Combo1.Text = "" And Combo2.Text = "" Then MsgBox "学号和姓名不能同时为空,请重新输入!", vbQuestion + vbOKOnly Exit Sub End If (4)、 Command1_Click()(确定按钮)事件代码 '若输入了学号则将姓名自动填写到Combo2.Text If Combo1.Text "" And Combo2.Text = "" Then ADOrs.Open "Select 姓名 From 学生情况表 Where 学号 ='" + Combo1.Text + "'" If ADOrs.EOF Then MsgBox "学生情况表中没有学号为" + Combo1.Text + "的记录,请重新输入!", vbQuestion + vbOKOnly Combo1.Text = "" Exit Sub Else Combo2.Text = ADOrs.Fields("姓名") End If If ADOrs.State = adStateOpen Then ADOrs.Close '关闭记录集 End If (4)、 Command1_Click()(确定按钮)事件代码 '若输入了号姓名则将学号自动填写到Combo1.Text If Combo2.Text "" And Combo1.Text = "" Then ADOrs1.Open "Select 学号 From 学生情况表 Where 姓名='" + Combo2.Text + "'" If ADOrs1.EOF Then MsgBox "学生情况表中没有姓名为" + Combo2.Text + "的记录,请重新输入!", vbQuestion + vbOKOnly Combo2.Text = "" Exit Sub Else Combo1.Text = ADOrs1.Fields("学号") End If If ADOrs1.State = adStateOpen Then ADOrs1.Close '关闭记录集 End If '查询学生情况表中是否有指定学号和指定姓名的记录 If Combo1.Text "" And Combo2.Text "" Then ADOrs.Open "Select * From 学生情况表 Where 学号='" + Combo1.Text + "'" + " And 姓名='" + Combo2.Text + "'" If ADOrs.EOF Then MsgBox "学生情况表中没有学号为" + Combo1.Text + "且姓名为" + Combo2.Text + "的记录,请重新输入!", vbQuestion + vbOKOnly Combo1.Text = "" Combo2.Text = "" Exit Sub Else Combo1.Text = ADOrs.Fields("学号") Combo2.Text = ADOrs.Fields("姓名") End If If ADOrs.State = adStateOpen Then ADOrs.Close '关闭记录集 End If End Sub (5)、 Command2_Click()(确认按钮)事件代码 Private Sub Command2_Click() Dim xm As String Dim xh As String Dim strSQL As String Dim ADOrs As New Recordset '声明记录集对象 ADOrs.ActiveConnection = ADOcn '与ADOcn连接对象关联 '如果学号与姓名同时为空则提示重新输入/选择 If Combo1.Text = "" Or Combo2.Text = "" Then MsgBox "学号和姓名不能为空,请重新输入!", vbQuestion + vbOKOnly Else xh = Combo1.Text xm = Combo2.Text If MsgBox("删除学号为" + xh + "姓名为" + xm + "的学生记录,该学生在学生成绩表中的全部记录也将一起删除,是否继续?", vbQuestion + vbYesNo) = vbYes Then '拼写Delete学生成绩表指定记录语句 strSQL = "Delete From 学生成绩表" strSQL = strSQL + " Where 学号='" + Combo1.Text + "'" ADOcn.Execute strSQL '执行Delete语句 '拼写Delete学生情况表指定记录语句 strSQL = "Delete From 学生情况表" strSQL = strSQL + " Where 学号='" + Combo1.Text + "'" ADOcn.Execute strSQL '执行Delete语句 MsgBox "删除成功!", vbQuestion + vbOKOnly Combo1.Text = "" Combo2.Text = "" End If End If If ADOrs.State = adStateOpen Then ADOrs.Close '关闭记录集 End Sub (6)、 Command3_Click()(返回按钮)事件代码 Private Sub Command3_Click() Unload Me End Sub 9. frmDeleteCourse(删除课程)窗体代码设计 (1)、Form_Load()事件代码 Private Sub Form_Load() Dim ADOrs As New Recordset '声明记录集对象 ADOrs.ActiveConnection = ADOcn '与ADOcn连接对象关联 '对Combo1组合框进行初始化 ADOrs.Open "select 课程号 from 课程情况表 Order By 课程号" Combo1.Clear Do While Not ADOrs.EOF Combo1.AddItem Trim(ADOrs.Fields("课程号")) '添加"课程号"字段值 ADOrs.MoveNext '取下一条记录 Loop ADOrs.Close '关闭记录集 '对Combo2组合框进行初始化 ADOrs.Open "select 课程名 from 课程情况表 Order By 课程号" Combo2.Clear Do While Not ADOrs.EOF Combo2.AddItem Trim(ADOrs.Fields("课程名")) '添加"课程名"字段值 ADOrs.MoveNext '取下一条记录 Loop ADOrs.Close '关闭记录集 End Sub (2) Combo1_Click 事件代码 Private Sub Combo1_Click() Dim ADOrs As New Recordset '声明一个记录集对象 ADOrs.ActiveConnection = ADOcn '与ADOcn连接对象关联 '若选择了课程号则将课程名自动填写到Combo2.Text ADOrs.Open "Select 课程名 From 课程情况表 Where 课程号 ='" + Combo1.Text + "'" If ADOrs.EOF Then MsgBox "课程情况表中没有课程号为" + Combo1.Text + "的记录,请重新输入!", vbQuestion + vbOKOnly Combo1.Text = "" Exit Sub Else Combo2.Text = ADOrs.Fields("课程名") End If ADOrs.Close '关闭记录集 End Sub (3) Combo2_Click 事件代码 Private Sub Combo2_Click() Dim ADOrs As New Recordset '声明一个记录集对象 ADOrs.ActiveConnection = ADOcn '与ADOcn连接对象关联 '若选择了课程名则将课程号自动填写到Combo1.Text ADOrs.Open "Select 课程号 From 课程情况表 Where 课程名 ='" + Combo2.Text + "'" If ADOrs.EOF Then MsgBox "课程情况表中没有课程名为" + Combo2.Text + "的记录,请重新输入!", vbQuestion + vbOKOnly Combo1.Text = "" Exit Sub Else Combo1.Text = ADOrs.Fields("课程号") End If ADOrs.Close '关闭记录集 End Sub (4)、 Command1_Click()(确定按钮)事件代码 Private Sub Command1_Click() Dim ADOrs As New Recordset '声明记录集对象 Dim ADOrs1 As New Recordset '声明记录集对象 ADOrs.ActiveConnection = ADOcn '与ADOcn连接对象关联 ADOrs1.ActiveConnection = ADOcn '与ADOcn连接对象关联 '若课程号和课程名同时为空则提示用户重新输入 If Combo1.Text = "" And Combo2.Text = "" Then MsgBox "课程号和课程名不能同时为空,请重新输入!", vbQuestion + vbOKOnly Exit Sub End If (4)、 Command1_Click()(确定按钮)事件代码 '若输入了课程号则将课程名自动填写到Combo2.Text If Combo1.Text "" And Combo2.Text = "" Then ADOrs.Open "Select 课程名 From 课程情况表 Where 课程号 ='" + Combo1.Text + "'" If ADOrs.EOF Then MsgBox "课程情况表中没有课程号为" + Combo1.Text + "的记录,请重新输入!", vbQuestion + vbOKOnly Combo1.Text = "" Exit Sub Else Combo2.Text = ADOrs.Fields("课程名") End If If ADOrs.State = adStateOpen Then ADOrs.Close '关闭记录集 End If (4)、 Command1_Click()(确定按钮)事件代码 '若输入了课程名则将课程号自动填写到Combo1.Text If Combo2.Text "" And Combo1.Text = "" Then ADOrs1.Open "Select 课程号 From 课程情况表 Where 课程名='" + Combo2.Text + "'" If ADOrs1.EOF Then MsgBox "课程情况表中没有课程名为" + Combo2.Text + "的记录,请重新输入!", vbQuestion + vbOKOnly Combo2.Text = "" Exit Sub Else Combo1.Text = ADOrs1.Fields("课程号") End If If ADOrs1.State = adStateOpen Then ADOrs1.Close '关闭记录集 End If (4)、 Command1_Click()(确定按钮)事件代码 '查询课程情况表中是否有指定课程号和指定课程名的记录 If Combo1.Text "" And Combo2.Text "" Then ADOrs.Open "Select * From 课程情况表 Where 课程号='" + Combo1.Text + "'" + " And 课程名='" + Combo2.Text + "'" If ADOrs.EOF Then MsgBox "课程情况表中没有课程号为" + Combo1.Text + "且课程名为" + Combo2.Text + "的记录,请重新输入!", vbQuestion + vbOKOnly Combo1.Text = "" Combo2.Text = "" Exit Sub Else Combo1.Text = ADOrs.Fields("课程号") Combo2.Text = ADOrs.Fields("课程名") End If If ADOrs.State = adStateOpen Then ADOrs.Close '关闭记录集 End If End Sub (5)、 Command2_Click()(确认按钮)事件代码 Private Sub Command2_Click() Dim xm As String Dim xh As String Dim strSQL As String Dim ADOrs As New Recordset '声明记录集对象 ADOrs.ActiveConnection = ADOcn '与ADOcn连接对象关联 '如果课程号与课程名同时为空则提示重新输入/选择 If Combo1.Text = "" Or Combo2.Text = "" Then MsgBox "课程号和课程名不能为空,请重新输入!", vbQuestion + vbOKOnly Else xh = Combo1.Text xm = Combo2.Text If MsgBox("删除课程号为" + xh + "课程名为" + xm + "的课程记录,该课程在学生成绩表中的全部记录也将一起删除,是否继续?", vbQuestion + vbYesNo) = vbYes Then (5)、 Command2_Click()(确认按钮)事件代码 '拼写Delete学生成绩表指定记录语句 strSQL = "Delete From 学生成绩表" strSQL = strSQL + " Where 课程号='" + Combo1.Text + "'" ADOcn.Execute strSQL '执行Delete语句 '拼写Delete课程情况表指定记录语句 strSQL = "Delete From 课程情况表" strSQL = strSQL + " Where 课程号='" + Combo1.Text + "'" ADOcn.Execute strSQL '执行Delete语句 MsgBox "删除成功!", vbQuestion + vbOKOnly Combo1.Text = "" Combo2.Text = "" End If End If If ADOrs.State = adStateOpen Then ADOrs.Close '关闭记录集 End Sub (6)、 Command3_Click()(返回按钮)事件代码 Private Sub Command3_Click() Unload Me End Sub 10. frmDeleteGrade (删除成绩)窗体代码设计 (1)、Form_Load()事件代码 Private Sub Form_Load() Dim ADOrs As New Recordset '声明记录集对象 ADOrs.ActiveConnection = ADOcn '与ADOcn连接对象关联 '对Combo1组合框进行初始化 ADOrs.Open "Select 学号 From 学生情况表 Order By 学号" Combo1.Clear Do While Not ADOrs.EOF Combo1.AddItem Trim(ADOrs.Fields("学号")) '添加"学号"字段值 ADOrs.MoveNext '取下一条记录 Loop ADOrs.Close '关闭记录集 '对Combo2组合框进行初始化 ADOrs.Open "select 课程号 from 课程情况表 Order By 课程号" Combo2.Clear Do While Not ADOrs.EOF Combo2.AddItem Trim(ADOrs.Fields("课程号")) '添加"课程号"字段值 ADOrs.MoveNext '取下一条记录 Loop ADOrs.Close '关闭记录集 'End Sub (2) Combo1_Click 事件代码 Private Sub Combo1_Click() Dim ADOrs As New Recordset '声明一个记录集对象 ADOrs.ActiveConnection = ADOcn '与ADOcn连接对象关联 '如果输入了学号,则把姓名显示在Text1.Text strSQL = "select * from 学生情况表" strSQL = strSQL + " Where 学号='" + Combo1.Text + " '" ADOrs.Open strSQL Text1.Text = ADOrs.Fields("姓名") ADOrs.Close '关闭记录集 (2) Combo1_Click 事件代码(续) If Combo2 "" Then '输入完毕则显示成绩信息 '查询学生成绩表中是否有指定指定学号与课程号的记录 strSQL = "select * from 学生成绩表" strSQL = strSQL & " Where 学号='" + Combo1.Text + " '" strSQL = strSQL & " and 课程号='" + Combo2.Text + "'" ADOrs.Open strSQL If ADOrs.EOF Then MsgBox "学生成绩表在不存在学号为" + Combo1.Text + "课程号为" + Combo2.Text + "的记录,请重新输入!", vbCritical + vbOKOnly Text1.Text = "" Text3.Text = "" Exit Sub Else Text3.Text = ADOrs.Fields("成绩") End If End If If ADOrs.State = adStateOpen Then ADOrs.Close '关闭记录集 Set ADOrs = Nothing End Sub (3) Combo2_Click 事件代码 Private Sub Combo2_Click() Dim ADOrs As New Recordset '声明一个记录集对象 ADOrs.ActiveConnection = ADOcn '与ADOcn连接对象关联 '如果输入了课程号,则把课程名显示在Text2.text strSQL = "select * from 课程情况表" strSQL = strSQL + " Where 课程号='" + Combo2.Text + " '" ADOrs.Open strSQL Text2.Text = ADOrs.Fields("课程名") ADOrs.Close '关闭记录集 (3) Combo2_Click 事件代码(续) If Combo1 "" Then '输入完毕则显示成绩信息 '查询学生成绩表中是否有指定指定学号与课程号的记录 strSQL = "select * from 学生成绩表" strSQL = strSQL & " Where 学号='" + Combo1.Text + " '" strSQL = strSQL & " and 课程号='" + Combo2.Text + "'" ADOrs.Open strSQL If ADOrs.EOF Then MsgBox "学生成绩表在不存在学号为" + Combo1.Text + "课程号为" + Combo2.Text + "的记录,请重新输入!", vbCritical + vbOKOnly Text2.Text = "" Text3.Text = "" Exit Sub Else Text3.Text = ADOrs.Fields("成绩") End If End If If ADOrs.State = adStateOpen Then ADOrs.Close '关闭记录集 Set ADOrs = Nothing End Sub (4)、 Command1_Click()(确定按钮)事件代码 Private Sub Command1_Click() Dim strSQL As String Dim ADOrs As New Recordset '声明一个记录集对象 ADOrs.ActiveConnection = ADOcn '与ADOcn连接对象关联 Dim ADOrs1 As New Recordset '声明一个记录集对象 ADOrs1.ActiveConnection = ADOcn '与ADOcn连接对象关联 Dim ADOrs2 As New Recordset '声明一个记录集对象 ADOrs2.ActiveConnection = ADOcn '与ADOcn连接对象关联 ‘如果学号为空则提示用户重新输入 If Combo1.Text = "" Then MsgBox "学号不能为空,请重新输入!", vbQuestion + vbOKOnly Combo1.Text = "" Text1.Text = "" Exit Sub End If (4)、 Command1_Click()(确定按钮)事件代码---续 '如果课程号为空则提示拥护重新输入 If Combo2.Text = "" Then MsgBox "课程号不能为空,请重新输入!", vbQuestion + vbOKOnly Combo2.Text = "" Text2.Text = "" Exit Sub End If '查询学生情况表中是否有指定学号的记录 If Combo1.Text "" Then ADOrs1.Open "Select 姓名 From 学生情况表 Where 学号='" + Combo1.Text + "'" If ADOrs1.EOF Then MsgBox “学生情况表中没有学号为” + Combo1.Text + “的记录,请重新输入!”, vbQuestion + vbOKOnly Combo1.Text = "" Text1.Text = "" Exit Sub Else '若有指定学号的学生记录,则将姓名字段值填写到text1 Text1.Text = ADOrs1.Fields("姓名") End If End If '查询课程情况表中是否有指定课程号的记录 If Combo2.Text "" Then ADOrs2.Open "Select 课程名 From 课程情况表 Where 课程号='" + Combo2.Text + "'" If ADOrs2.EOF Then MsgBox "课程情况表中没有课程号为" + Combo2.Text + "的记录,请重新输入!", vbQuestion + vbOKOnly Combo2.Text = "" Text2.Text = "" Exit Sub Else '若有指定课程号的课程记录,则将课程名字段值填写到text2 Text2.Text = ADOrs2.Fields("课程名") End If End If '查询学生表中是否有指定学号与课程号的记录 If Combo1 "" And Combo1 "" Then strSQL = "select * from 学生成绩表" strSQL = strSQL & " Where 学号='" + Combo1.Text + " '" strSQL = strSQL & " and 课程号='" + Combo2.Text + "'" ADOrs.Open strSQL If ADOrs.EOF Then MsgBox "学生成绩表在不存在学号为" + Combo1.Text + "课程号为" + Combo2.Text + "的记录,请重新输入!", vbCritical + vbOKOnly Combo1.Text = "" Combo2.Text = "" Text1.Text = "" Text2.Text = "" Text3.Text = "" Exit Sub Else Text3.Text = Val(ADOrs.Fields("成绩")) End If End If End Sub 5)、 Command2_Click()(确认按钮)事件代码 Private Sub Command2_Click() If MsgBox("是否要删除学号为" + Combo1.Text + "课程号为" + Combo2.Text + "的成绩记录?", vbQuestion + vbYesNo) = vbYes Then '拼写Delete语句 strSQL = "Delete From 学生成绩表" strSQL = strSQL + " Where 学号='" + Combo1.Text + "'" strSQL = strSQL + " And 课程号='" + Combo2.Text + "'" ADOcn.Execute strSQL '执行Delete语句 Combo1.Text = "" Combo2.Text = "" Text1.Text = "" Text2.Text = "" Text3.Text = "" MsgBox "删除成功!", vbQuestion + vbOKOnly End If End Sub (6)、 Command3_Click()(返回按钮)事件代码 Private Sub Command3_Click() Unload Me End Sub 11. frmDeleteUser(删除用户)窗体代码设计 (1)、 Command1_Click()(确定按钮)事件代码 Private Sub Command1_Click() '定义变量,建立与数据库的连接 Dim strSQL As String Dim ADOrs2 As New Recordset ADOrs2.ActiveConnection = ADOcn If Trim(Text1.Text) = "" Then MsgBox "请输入用户名!", , "删除用户" Text1.SetFocus Exit Sub End If If Trim(Text2.Text) = "" Then MsgBox "请输入用户密码!", , "删除用户" Text2.SetFocus Exit Sub End If '查询是否有指定用户名和密码的记录 ADOrs2.Open "Select * From 用户 Where 用户名='" + Text1.Text + "'" + " And 密码='" + Text2.Text + "'" If ADOrs2.EOF Then MsgBox "用户中没有名为:" + Text1.Text + " 密码为:" + Text2.Text + "的记录,请重新输入!", vbQuestion + vbOKOnly Text1.Text = "" Text2.Text = "" Text1.SetFocus Else If MsgBox("是否删除用户名为“" + Text1.Text + "”密码为“" + Text2.Text + "”的用户记录?", vbQuestion + vbYesNo) = vbYes Then '拼写Delete用户指定记录语句 strSQL = "Delete From 用户 Where 用户名='" + Text1.Text + "'" + " And 密码='" + Text2.Text + "'" ADOcn.Execute strSQL '执行Delete语句 MsgBox "删除成功!", vbQuestion + vbOKOnly Text1.Text = "" Text2.Text = "" Text1.SetFocus End If End If End Sub (2)、 Command2_Click()(返回按钮)事件代码 Private Sub Command2_Click() Unload Me End Sub 12. frmQuerystudent(学生基本信息查询)窗体代码设计 使用ado数据控件与DataGrid数据绑定控件实现 (1)、Form_Load()事件代码 Private Sub Form_Load() Combo1.Text = "全部学生" '默认查询全部学生 Label2.Caption = "全部学生数据浏览表格:" Label1.Visible = False Text1.Visible = False End Sub 说明:这里使用ado数据控件adodc1与DataGrid数据绑定控件DataGrid1,并已设置好adodc属性---查询数据库中的表格(学生情况表)。 (2) Combo1_Click 事件代码 Private Sub Combo1_Click() Select Case Combo1.ListIndex '根据选择的组合框项进行处理 Case 0 '选择“全部学生”时隐藏提示信息 strSQL = "select * from 学生情况表" Adodc1.CommandType = adCmdText Adodc1.RecordSource = strSQL Adodc1.Refresh Label2.Caption = "全部学生数据浏览表格:“ DataGrid1.Visible = True Label1.Visible = False Text1.Visible = False Case 1 '选择“按学号查询”时给出提示并定位光标 Label1.Visible = True Text1.Visible = True Text1.SetFocus Label1.Caption = "请输入学号并按回车键确认:" Case 2 '选择“按姓名查询”时给出提示并定位光标 Label1.Visible = True Text1.Visible = True Text1.SetFocus Label1.Caption = "请输入姓名并按回车键确认:" End Select End Sub (3) Text1_KeyPress 事件代码 Private Sub Text1_KeyPress(KeyAscii As Integer) Dim atrsql As String If KeyAscii = 13 Then Select Case Combo1.ListIndex '根据选择的组合框项进行处理 Case 1 '选择“按学号查询”时 strSQL = "select * from 学生情况表 where 学号='" & Trim(Text1.Text) & "'" Adodc1.CommandType = adCmdText Adodc1.RecordSource = strSQL Adodc1.Refresh If Adodc1.Recordset.EOF Then '没有找到时 Label2.Caption = "" DataGrid1.Visible = False MsgBox "没有该生记录信息,请检查你输入的学号是否正确!" Else '找到时 Label2.Caption = "学号为" & Text1.Text & "的学生数据浏览表格:" DataGrid1.Visible = True End If Text1.Text = "" Case 2 '选择“按姓名查询”时 strSQL = "select * from 学生情况表 where 姓名='" & Trim(Text1.Text) & "'" Adodc1.CommandType = adCmdText Adodc1.RecordSource = strSQL Adodc1.Refresh If Adodc1.Recordset.EOF Then '没有找到时 Label2.Caption = "" DataGrid1.Visible = False MsgBox "没有该生记录信息,请检查你输入的姓名是否正确!" Else '找到时 Label2.Caption = "姓名为" & Text1.Text & "的学生数据浏览表格:" DataGrid1.Visible = True End If Text1.Text = "" End Select End If End Sub (4) Command1_Click(返回按钮)事件代码 Private Sub Command1_Click() Unload Me End Sub 13. frmQueryGrade(学生成绩查询)窗体代码设计 使用MSFlexGrid1控件(编程模型)实现 (1)、Form_Load()事件代码 Private Sub Form_Load() Dim ADOrs As New Recordset '声明一个记录集对象 ADOrs.ActiveConnection = ADOcn '与ADOcn连接对象关联 MSFlexGrid1.Visible = False '隐藏MSFlexGrid1控件 '对Combo1组合框进行初始化 ADOrs.Open "select 学号 from 学生情况表 Order By 学号" Combo1.Clear Do While Not ADOrs.EOF Combo1.AddItem Trim(ADOrs.Fields("学号")) '添加"学号"字段值 ADOrs.MoveNext '取下一条记录 Loop ADOrs.Close '关闭记录集对象 Text1.Text = "" End Sub (2) Combo1_Click 事件代码 Private Sub Combo1_Click() Dim ADOrs As New Recordset '声明一个记录集对象 ADOrs.ActiveConnection = ADOcn '与ADOcn连接对象关联 '若选择了学号则将姓名自动填写到text1 ADOrs.Open "Select 姓名 From 学生情况表 Where 学号 ='" & Combo1.Text & "'" If ADOrs.EOF Then MsgBox "学生情况表中没有学号为" & Combo1.Text & "的记录,请重新输入!", vbQuestion & vbOKOnly Text1.Text = "" Else Text1.Text = ADOrs.Fields("姓名") End If ADOrs.Close '关闭记录集 End Sub (3) Command1_Click(确定按钮)事件代码 Private Sub Command1_Click() Dim strSQL As String, strSQL2 As String Dim strRecord As String Dim ADOrs As New Recordset '声明记录集对象 Dim ADOrs2 As New Recordset ADOrs.ActiveConnection = ADOcn '与ADOcn连接对象关联 ADOrs2.ActiveConnection = ADOcn strSQL = "select * from 学生情况表 Where 学号='" & Combo1.Text & " '" ADOrs.Open strSQL If ADOrs.EOF Then MsgBox ("数据库中找不到学号为" & Combo1.Text & "的记录,请重新输入!") Combo1.Text = "" Text1.Text = "" Else Text1.Text = ADOrs.Fields("姓名") End If '拼写Select语句 strSQL2 = "Select 学生成绩表.学号,学生成绩表.课程号,学生成绩表.成绩," strSQL2 = strSQL2 & "学生情况表.姓名,课程情况表.课程名" strSQL2 = strSQL2 & " From 学生成绩表,学生情况表,课程情况表" strSQL2 = strSQL2 & " Where 学生成绩表.学号=学生情况表.学号" strSQL2 = strSQL2 & " And 学生成绩表.课程号=课程情况表.课程号" strSQL2 = strSQL2 & " And 学生成绩表.学号= '" & Combo1.Text & "'" ADOrs2.Open strSQL2 '执行Select语句 If ADOrs2.EOF = True Then MSFlexGrid1.Visible = False '隐藏MSFlexGrid1控件 MsgBox "没有该生成绩!" Else '初始化MSFlexGrid表格 MSFlexGrid1.Rows = 0 '行数 MSFlexGrid1.Cols = 5 '列数 MSFlexGrid1.ColWidth(3) = 1500 '调节第4列宽度 MSFlexGrid1.Visible = True '显示MSFlexGrid1控件 '设置表格标题栏 strRecord = "学号" & vbTab & "姓名" & vbTab & "课程号" strRecord = strRecord & vbTab & "课程名" & vbTab & "成绩" MSFlexGrid1.AddItem strRecord '从第一条记录开始循环,直至表尾,填写表格内容 Do While Not ADOrs2.EOF '拼写表格内容 strRecord = Trim(ADOrs2.Fields("学号")) & vbTab & Trim(ADOrs2.Fields("姓名")) & vbTab strRecord = strRecord & Trim(ADOrs2.Fields("课程号")) & vbTab & Trim(ADOrs2.Fields("课程名")) strRecord = strRecord & vbTab & Trim(Str(ADOrs2.Fields("成绩"))) MSFlexGrid1.AddItem strRecord '向表格内添加行 ADOrs2.MoveNext '取下一条记录 Loop End If ADOrs.Close '关闭记录集对象 ADOrs2.Close '释放记录集对象 Set ADOrs = Nothing Set ADOrs2 = Nothing End Sub (4) Command2_Click(返回按钮)事件代码 Private Sub Command2_Click() Unload Me End Sub 14.身份验证窗体(frmlogin)代码设计 1)、Form_Initialize()事件代码 Private Sub Form_Initialize() ADOcn.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=成绩.MDB" If ADOcn.State = adStateClosed Then ADOcn.Open '打开到数据库的连接 End Sub 2)、Command1_Click()事件代码—登录按钮 Private Sub Command1_Click() Dim ADOrs As New Recordset '声明记录集对象 Dim strSQL As String ADOrs.ActiveConnection = ADOcn '与连接对象adocn关联 If Trim(Text1.Text) = "" Or Trim(Text2.Text) = "" Then '检验用户名与密码为空否 MsgBox "帐号和密码不能为空,请重新填写", vbOKOnly + vbInformation Exit Sub End If strSQL = "select * from 用户 where 用户名='" + Trim(Text1.Text) + "'" ADOrs.Open strSQL '按用户名查询 If ADOrs.EOF Then '找不到该用户 MsgBox "用户不存在", vbCritical + vbOKOnly Text1.Text = "" Text1.SetFocus Exit Sub ElseIf Trim(Text2.Text) ADOrs.Fields(“密码”) Then ‘找到用户后检验密码 MsgBox "密码不正确", vbOKOnly + vbInformation Text2.Text = "" Text2.SetFocus Exit Sub End If '用户登录成功,记录用户类型参数 usertype = ADOrs.Fields("用户类型") Unload Me MDIForm1.Show '登录成功,打开MDI主窗体 ADOrs.Close Set ADOrs = Nothing End Sub 3)、Command2_Click()事件代码—退出按钮 Private Sub Command2_Click() ADOcn.Close Set ADOcn = Nothing Unload Me End Sub 4)、登录成功并打开MDI主窗体后,应根据人员类型设置菜单权限 Private Sub MDIForm_Load() '根据人员类型设置菜单权限 Select Case usertype 'Case "管理员" Case "查询人员" addmenu.Enabled = False deletemenu.Enabled = False Updata.Enabled = False End Select End Sub 1.4 其他 一、用户自定义函数的使用 1、初始化窗体大小及显示座标函数 Public Sub init(frmname As Object, X As Integer, Y As Integer) frmname.Width = X frmname.Height = Y frmname.Left = (MDIForm1.Width - frmname.Width) / 2 frmname.Top = (MDIForm1.Height - frmname.Height) / 2 End Sub 2、校验输入的文本框字符是否为数字或backspace回格键函数 ,’如果是则返回true,否则返回false Public Function in_int(KeyAscii As Integer) As Boolean Dim Accept_int(10) As String '可接受的字符数组 Accept_int(0) = "0" Accept_int(1) = "1" Accept_int(2) = "2" Accept_int(3) = "3" Accept_int(4) = "4" Accept_int(5) = "5" Accept_int(6) = "6" Accept_int(7) = "7" Accept_int(8) = "8" Accept_int(9) = "9" Accept_int(10) = Chr(8) 'Chr(8)是backspace键对应的字符 in_int = False For i = 1 To 10 '检查输入的字符是否在数组中 If Chr(KeyAscii) = Accept_int(i) Then in_int = True End If Next i End Function
EasyASP是一个方便快速开发ASP的类,其中包含了数据库控制类Easp.db,具有同时对一个或多个数据库进行各类操作、调用MSSQL存储过程及记录集分页等功能。EasyASP同时提供了大量实用的ASP通用过程及方法,可以简化大部分的ASP操作。EasyASP目前提供下载的是VBScript版。 EasyASP 2.1 UTF-8 更新日志: 新增Easp.Include方法,完美实现了ASP的动态包含,且支持ASP源码中无限级层次的。 新增Easp.GetInclude方法,用于获取ASP文件运行的结果或获取html文件等文本文件的源码。 新增Easp.Charset属性,用于设置Easp.Include方法和Easp.getInclude方法载入文件的编码。 新增Easp.ConfirmUrl方法,用于输出确认信息框并根据选择进行Url跳转。 新增Easp.HtmlFormat方法,用于对html文本进行简单的格式化(仅转换空格和换行为可见)。 新增Easp.RegReplaceM方法,用于正则替换的多行模式。 新增Easp.RegMatch方法,用于正则匹配的编组捕获。 新增Easp.IsInstall方法,用于检测系统是否安装了某个组件。 [db]新增Easp.db.QueryType属性,可设置用ADORecordSet还是Command方式获取记录集。 [db]新增Easp.db.GetRandRecord方法,用于取得指定数量的随机记录集。 [db]新增Easp.db.Exec方法,用于执行SQL语句或者返回Command方式查询的记录集。 优化Easp.DateTime方法,格式化为时间差时的显示更人性化。 优化Easp.RandStr和Easp.db.RandStr方法,提供更强大更人性化的随机字符串和随机数生成功能。 修正Easp.GetUrlWith方法第一个参数为空时生成的新URL出错的Bug。 修正Easp.GetApp方法无法获取缓存数据的Bug。 修正Easp.AlertUrl跳转前会继续执行服务器端代码的Bug。 修正v2.1beta版中Easp.JsEncode和Easp.db.Json方法会报“类型不匹配”错误的Bug。 修正v2.1beta版中Easp.RandStr和Easp.db.RandStr的一个Bug。 [db]优化Easp.db.AddRecord方法,现在仅当指定了ID字段的名称时才返回新增的记录ID号。(影响以前版本) [db]修正分页下拉框中页面数量小于jumplong配置时出现负数的Bug。 EasyASP的特点: [数据库] 能方便的实现一个或多个数据库的增、删、改等控制操作。 [数据库] 对数据库字段进行操作时可以不用考虑字段值数据类型的差别(如文本字段不用加单引号)。 [数据库] 自带记录集分页和调用存储过程分页功能,拥有功能丰富的可完全自定义配置及调用。 [数据库] 能方便的执行带各种参数的MSSQL存储过程并返回多个值或多个记录集。 [数据库] 完善的数据库操作容错功能,能即时输出出错SQL语句方便调试。 [数据库] 在使用已经存在的数据库连接对象时能自动判断数据库类型。 [数据库] 专为Ajax设计的数据获取方式及输出Json格式数据。 [数据库] 能有效防止SQL注入。 [ASP] 自带大量的ASP通用过程及方法,简化大部分ASP操作。 [ASP] 完美实现ASP文件的动态载入,并支持无限级的ASP原生include。 [ASP] 自带数据类型验证及服务器端表单验证功能。 [ASP] 能轻松实现页面地址获取并对URL参数进行过滤以及替换。 [工具] 具有专为EasyASP开发的适用于Dreamweaver CS3 和 CS4 的代码高亮及代码提示扩展插件。 [工具] 具有完善的帮助手册及大量应用实例。
书名: ASP 3高级编程 英文原书名: Professional Active Server Pages 3.0 作者: Richard Anderson Chris Blexrud 译者: 刘福太 张立民 金慧琴 梁发麦 书号: 7-111-07678-8 页码: 925 定价: ¥89.00 会员价: ¥80.10 币值: 801 出版社: 机械工业出版社 出版日期: 2000-10-30 包含在Windows 2000中的Active Server Pages 3.0 (ASP 3.0)是Microsoft公司推出的又一个支持Internet的功能强大的网页制作软件包,除了继续保持其适应于各种浏览器的基本特征外,与ASP 2.0相比,功能更加强大,目前已成为开发Internet应用程序的理想选择。本书第1~7章介绍了ASP的基础知识、ASP 3.0的变化、ASP的对象模型、使用ASP脚本和外部组件的所要求的基本概念。第8~12章介绍了通用数据的访问和连接问题,包括ADO、UDA和XML。第13~18章介绍了使用ASP建立组件的问题,以及COM和COM+如何改变组件的环境。第19~23章是关于ASP与BackOffice类应用软件的结合问题,如Microsoft Message Queue Server、Collaborative Data Objects、Microsoft Exchange和Active Directory等等。第24~27章是在企业环境中使用ASP的安全性、性能和可扩展性等问题。第28章和附录提供了一个XML驱动的在线报纸示例和大量以表格形式给出的相关资料。本书不仅为Internet开发人员提供了详实的开发编程指导,也是致力于Internet网络应用与开发的广大科技人员和大专院校相关专业师生的一本重要的自学、教学参考书。 译者序 前言 第1章 ASP基础 1 1.1 ASP的起源 1 1.1.1 HTML的起源 2 1.1.2 动态页面的起源 2 1.2 ASP如何与IIS连接 5 1.2.1 关于应用程序的映射 5 1.2.2 处理一个ASP文件 7 1.3 相关设置问题和管理 12 1.3.1 IIS的安装 12 1.3.2 IIS管理工具 15 1.3.3 常见的管理任务 18 1.4 ASP 3.0对象模型概要 22 1.4.1 对象环境概念 22 1.4.2 ASP内置的对象 23 1.5 ASP 3.0中的新特性 24 1.5.1 ASP 3.0新特性概要 24 1.5.2 对ASP 2.0的改进 26 1.5.3 VBScript 5.0中的新特性 28 1.5.4 JScript 5.0中的新特性 30 1.5.5 其他的新特性 31 1.6 小结 32 第2章 请求和响应的处理 33 2.1 客户端和服务器的交流 33 2.2 Request和Response对象 35 2.2.1 Request对象成员的概述 35 2.2.2 Response对象成员概述 36 2.3 使用Form和QueryString集合 38 2.3.1 访问ASP集合的一般技术 38 2.3.2 访问和更新Cookies集合 44 2.3.3 Form和QueryString的差异 46 2.3.4 查看Request和Response对象内容 47 2.3.5 ASP中cookie的使用 52 2.4 使用ServerVariables集合 53 2.4.1 “自引用”页面 54 2.4.2 检测浏览器的版本 55 2.4.3 检测浏览器的语言 56 2.4.4 其他有用的ServerVariables集合的值 57 2.5 其他Request和Response技巧 57 2.5.1 连接、缓冲和页面重定向的管理 58 2.5.2 操作HTTP报头 60 2.5.3 使用客户证书 65 2.5.4 读写二进制数据 67 2.5.5 创建定制的日志消息 67 2.6 小结 69 第3章 ASP应用程序与会话 70 3.1 Web上的状态管理 70 3.1.1 状态的准确定义 70 3.1.2 状态的重要性 71 3.1.3 在Web上创建状态 71 3.2 Web应用程序的定义 73 3.2.1 ASP应用程序的定义 73 3.2.2 ASP会话的定义 81 3.3 ASP的Application对象和Session对象 83 3.3.1 ASP的Application对象成员概述 84 3.3.2 ASP的Session对象成员概述 85 3.3.3 使用Application和Session的事件 86 3.3.4 活动中的ASP Application对象 89 3.3.5 活动中的ASP Session对象 93 3.4 小结 96 第4章 服务器进程和ASP Server对象 98 4.1 动态页中服务器端的处理 98 4.2 服务器端的包含指令 100 4.2.1 不可思议的ASP #include指令 100 4.2.2 服务器端包含指令概要 102 4.2.3 服务器端包含指令的例子 104 4.3 ASP Server对象 109 4.3.1 ASP Server对象成员概述 109 4.3.2 创建其他对象的实例 110 4.3.3 执行其他的网页 114 4.3.4 Server对象的错误处理 118 4.3.5 获取Server对象的路径信息 125 4.3.6 使用Server对象格式化数据 127 4.4 小结 132 第5章 脚本运行期库对象 134 5.1 脚本对象的定义 134 5.1.1 不同类型的对象和组件 134 5.1.2 VBScript和JScript脚本对象 135 5.2 创建对象和组件实例 136 5.2.1 使用Server.CreateObject方法 136 5.2.2 使用元素 136 5.2.3 Server.CreateObject与的 区别 138 5.2.4 组件线程模型 138 5.2.5 引用对象类型库 139 5.2.6 在客户端上创建对象实例 140 5.3 Scripting.Dictionary对象 141 5.3.1 创建和使用Dictionary对象 141 5.3.2 Dictionary对象示例 143 5.4 Scripting.FileSystemObject对象 148 5.4.1 FileSystemObject对象成员概要 149 5.4.2 使用驱动器 151 5.5 Scripting.TextStream对象 161 5.5.1 创建TextStream对象的方法 161 5.5.2 TextStream对象成员概要 163 5.5.3 TextStream对象举例 165 5.6 小结 168 第6章 活动服务器组件 169 6.1 脚本对象与服务器组件的比较 169 6.2 ASP/IIS可安装组件 171 6.2.1 使用示例页面 172 6.2.2 Content Linking组件 173 6.2.3 Ad Rotator组件 177 6.2.4 Counters组件 182 6.2.5 Browser Capabilities组件 184 6.2.6 Content Rotator组件 188 6.2.7 Page Counter组件 190 6.2.8 Permission Checker组件 191 6.2.9 MyInfo 组件 194 6.2.10 Tools组件 195 6.2.11 Logging Utility组件 200 6.3 第三方服务器组件 204 6.3.1 BrowserHawk组件 204 6.3.2 SA-FileUp组件 206 6.3.3 RegEx注册表访问组件 207 6.4 小结 209 第7章 调试和错误处理 210 7.1 错误的种类 211 7.1.1 语法或“编译”错误 211 7.1.2 语义或“运行期”错误 215 7.2 各种运行期错误 218 7.2.1 逻辑错误 219 7.2.2 脚本运行期错误 220 7.2.3 ASP和SSI的运行期错误 221 7.2.4 客户端脚本错误 222 7.3 防止错误 224 7.4 处理错误 229 7.4.1 ASP缺省错误处理器 229 7.4.2 VBScript错误处理 230 7.4.3 JScript错误处理 232 7.4.4 使用IIS错误页面 232 7.5 程序调试—发现及处理错误 238 7.5.1 常规调试技术 238 7.5.2 Microsoft Script Debugger 239 7.5.3 获得ASP的帮助和支持 242 7.6 小结 243 第8章 ADO基础 244 8.1 ADO的定义 244 8.1.1 OLE DB和ADO的体系结构 245 8.1.2 消费者与提供者 246 8.1.3 提供者和驱动程序 247 8.2 ADO 2.5对象模型 248 8.2.1 Connection对象 248 8.2.2 Command对象 249 8.2.3 Recordset对象 249 8.2.4 Record对象 249 8.2.5 Stream对象 250 8.2.6 集合 250 8.2.7 ADO常数 252 8.3 连接到数据存储 252 8.3.1 连接字符串 253 8.3.2 使用包含文件 256 8.3.3 使用连接状态 256 8.3.4 连接语法 257 8.3.5 连接的例子 257 8.3.6 连接缓冲池 257 8.4 记录集 258 8.4.1 光标 258 8.4.2 锁定 260 8.4.3 创建记录集 261 8.4.4 过滤记录集 265 8.4.5 查找记录 266 8.4.6 修改记录 267 8.5 管理错误 269 8.5.1 Errors集合 269 8.5.2 ASP页面中的ADO错误 270 8.6 小结 272 第9章 连接、命令和过程 273 9.1 Connection对象 273 9.1.1 返回一个记录集 273 9.1.2 操作命令 274 9.2 Command对象 274 9.2.1 返回记录集 274 9.2.2 操作命令 275 9.2.3 存储过程 276 9.3 优化 289 9.3.1 常用的ADO技巧 289 9.3.2 对象变量 289 9.3.3 高速缓存大小 290 9.3.4 数据库设计 290 9.3.5 数据高速缓存 291 9.4 数据整形 293 9.4.1 使用数据整形 294 9.4.2 性能 297 9.5 小结 298 第10章 ASP与客户端数据 299 10.1 断开连接的记录集 299 10.2 远程数据服务 300 10.2.1 RDS服务器组件 300 10.2.2 RDS客户组件 301 10.2.3 支持RDS的浏览器 301 10.2.4 数据源对象 301 10.2.5 数据绑定 308 10.2.6 更新数据 316 10.3 在服务器和客户之间传输数据 319 10.3.1 基于服务器的组件 319 10.3.2 DataSpace对象 320 10.3.3 使用服务器端组件的优点 322 10.3.4 注册服务器端组件 322 10.3.5 自定义处理器 323 10.4 记录集分页 326 10.4.1 利用ASP页面分页记录集 327 10.4.2 利用ADO分页 330 10.4.3 利用SQL Server完成记录集分页 333 10.4.4 数据分页小结 336 10.5 使用数据库中的图像 337 10.6 小结 338 第11章 使用XML数据 339 11.1 XML的定义 339 11.1.1 XML和HTML的差别 340 11.1.2 标记和元素 343 11.1.3 模式和文档类型定义 346 11.1.4 名称空间 347 11.1.5 文档对象模型 348 11.2 ADO和IE5中的XML 354 11.2.1 存储为XML形式的ADO记录集 354 11.2.2 ADO记录集名称空间 355 11.2.3 ADO记录集模式 355 11.2.4 IE数据岛和绑定 358 11.2.5 以XML数据格式保存记录集 361 11.2.6 打开记录集 365 11.3 用XSL来设计XML 367 11.4 相关的领域 371 11.5 用于SQL Server的XML技术预览 372 11.6 小结 373 第12章 通用数据访问 375 12.1 UDA的构想 375 12.2 OLE DB提供者 376 12.2.1 Indexing Service 376 12.2.2 活动目录 383 12.2.3 Exchange Server 386 12.2.4 定制的提供者 386 12.3 半结构化的数据 389 12.3.1 Record对象 390 12.3.2 Internet 发布 390 12.3.3 WebDAV 401 12.4 企业数据 401 12.4.1 Access和SQL Server二者取一 402 12.4.2 SNA Server和传统数据访问 404 12.5 企业中的ASP 405 12.6 小结 407 第13章 组件和网络应用程序结构 408 13.1 分布式应用程序的结构 408 13.1.1 分层应用程序 408 13.1.2 Windows DNA 410 13.1.3 Windows DNA服务 411 13.1.4 网络结构 413 13.2 组件 415 13.2.1 组件定义 415 13.2.2 COM和COM+ 415 13.2.3 组件服务 416 13.2.4 以数据为中心的组件 417 13.2.5 业务组件 417 13.2.6 用户界面组件 418 13.3 组件应用程序设计 418 13.3.1 转换到组件 419 13.3.2 应用程序设计 419 13.3.3 设计网络组件 420 13.3.4 组件设计 422 13.3.5 组件集成 423 13.3.6 建立组件 424 13.4 应用程序设计范例的研究 425 13.4.1 明确问题 425 13.4.2 应用程序的设计 426 13.4.3 设计权衡 430 13.4.4 设计小结 431 13.5 小结 432 第14章 COM、COM+和ASP 433 14.1 COM的内容 433 14.1.1 COM无处不在 434 14.1.2 COM+的三个方面 434 14.1.3 COM开发工具 436 14.2 接口 437 14.2.1 组件 438 14.2.2 缺省接口 438 14.2.3 GUID—实体的确定名称 439 14.2.4 接口的详细内容 439 14.2.5 IUnknown接口 442 14.2.6 使用IDispatch—后期绑定 442 14.2.7 组件信息的中央存储库 444 14.3 COM+运行期的变化 446 14.3.1 配置的和非配置的组件 447 14.3.2 COM+类别 447 14.4 创建一个ASP COM组件 447 14.4.1 组件的接口 449 14.4.2 创建组件 449 14.5 小结 457 第15章 COM+应用程序 458 15.1 微软组件服务(COM+) 458 15.1.1 拦截原理 459 15.1.2 COM+结构 461 15.1.3 组件/对象的生存期和状态 464 15.2 单元和线程模型 467 15.2.1 线程 467 15.2.2 单元 468 15.2.3 线程模型的属性 470 15.2.4 线程模型和范围 472 15.3 COM+应用程序 476 15.3.1 ObjectContext接口 476 15.3.2 Visual Basic COM+组件 479 15.4 组件服务 487 15.5 组件的调试 494 15.6 小结 496 第16章 ASP脚本组件 497 16.1 使用WSC的环境 497 16.2 一个Windows脚本组件 498 16.2.1 发展历史 498 16.2.2 HelloWorld WSC 499 16.3 WSC的结构 499 16.3.1 描述层 500 16.3.2 脚本层 503 16.3.3 运行期层 504 16.4 可用的接口 504 16.5 编写一个ASP脚本组件 505 16.5.1 AspTable组件 506 16.5.2 使用AspTable对象 511 16.6 ASP脚本组件的特点 513 16.6.1 选择正确的工具 513 16.6.2 脚本组件与VBScript类的比较 513 16.7 小结 514 第17章 用C++建立ASP组件 515 17.1 C++语言 515 17.1.1 C++简史 515 17.1.2 使用C++的原因 516 17.1.3 不使用C++的原因 517 17.1.4 把ASP技巧转到C++上 517 17.2 VC++库 518 17.2.1 微软基础类库 518 17.2.2 活动模板库 519 17.2.3 标准模板库 519 17.3 建立一个C++服务器组件 521 17.3.1 问题 522 17.3.2 设计 522 17.3.3 实现 522 17.3.4 测试 531 17.3.5 错误处理 533 17.3.6 调试 535 17.4 小结 537 第18章 对C++组件的进一步讨论 538 18.1 与ASP进行接口 538 18.2 与COM+进行接口 543 18.2.1 IObjectContext的事务处理 546 18.2.2 IObjectControl的对象缓冲 547 18.3 数据访问 547 18.3.1 通过C++使用ADO 548 18.3.2 OLE DB消费者模板 553 18.3.3 使用ADO,还是使用OLE DB消费者 模板 557 18.4 小结 557 第19章 ASP和事务性Web应用程序 558 19.1 事务处理的定义 558 19.1.1 保持应用程序的完整性 558 19.1.2 ACID属性 559 19.2 分布式事务 560 19.3 事务性COM+应用程序 562 19.3.1 Transaction Support属性 562 19.3.2 活动与同步 564 19.3.3 事务的生存期 567 19.3.4 事务访问自定义资源 573 19.4 COM+事务和IIS 574 19.4.1 事务性ASP 574 19.4.2 事务性ASP中的ObjectContext 对象 575 19.4.3 事务事件 576 19.5 用ASP和COM+进行联机订购 577 19.5.1 业务需要 577 19.5.2 设计 577 19.5.3 实现 578 19.5.4 程序验证 585 19.6 小结 586 第20章 ASP和消息队列服务器 587 20.1 消息排队的定义 587 20.1.1 MSMQ的定义 588 20.1.2 使用MSMQ和ASP的原因 589 20.2 MSMQ结构 591 20.2.1 服务器类型 591 20.2.2 客户类型 592 20.2.3 站点布局图 593 20.2.4 投递选项 593 20.3 管理MSMQ 594 20.3.1 增加队列 594 20.3.2 消息队列的属性 596 20.3.3 消息属性 597 20.4 MSMQ对象模型 599 20.4.1 MSMQApplication对象 600 20.4.2 MSMQQuery对象 600 20.4.3 MSMQQueueInfos集合 601 20.4.4 MSMQQueueInfo对象 601 20.4.5 MSMQQueue对象 602 20.4.6 MSMQMessage对象 603 20.4.7 MSMQEvent对象 605 20.4.8 MSMQTransaction对象 605 20.4.9 MSMQTransactionDispenser对象 605 20.4.10 MSMQCoordinatedTransaction Dispenser对象 606 20.4.11 访问MSMQ的其他方式 606 20.5 用于MSMQ的MS DTC事务 606 20.6 高级MSMQ消息 606 20.7 COM+队列化组件 609 20.8 扩展联机订货的示例 610 20.8.1 在组件中添加MSMQ 610 20.8.2 处理队列化订单 612 20.9 小结 614 第21章 ADSI和AD介绍 615 21.1 ADSI的用途 615 21.2 必需的软件 616 21.3 AD的内部结构 617 21.3.1 目录里的对象和属性 617 21.3.2 对象的类 618 21.3.3 容器和叶 619 21.3.4 模式 619 21.3.5 继承 620 21.4 目录的特征 622 21.4.1 优化查找 622 21.4.2 查找功能 622 21.4.3 开放性 622 21.4.4 事务处理 622 21.4.5 复制 623 21.5 常见目录 623 21.5.1 Netscape目录服务器 623 21.5.2 IIS元数据库 623 21.5.3 Exchange Server目录和站点服务器 成员目录 623 21.5.4 Netware目录服务 623 21.5.5 WinNT 623 21.6 ADSI的适用范围 624 21.7 LDAP的适用范围 625 21.8 绑定到一个ADSI对象 626 21.8.1 ADSI对象和Directory对象 626 21.8.2 查看ADSI对象的属性 627 21.9 浏览目录:枚举容器的所有子对象 628 21.10 使用模式定义的属性 631 21.11 Get和GetEx 634 21.12 PropertyBrowseEx示例 634 21.13 AD与WinNT提供者比较 636 21.14 属性缓存 638 21.15 设置属性的值 639 21.16 目录的验证 639 21.17 查找 641 21.17.1 用以查找ADSI目录的命令字符串 644 21.17.2 查找过滤器 645 21.18 小结 646 第22章 ASP和用于NT服务器的CDO 647 22.1 CDO是什么 647 22.2 使用CDO的原因 647 22.2.1 NT服务器下的CDO 648 22.2.2 CDO与CDONTS的比较 648 22.2.3 CDO for Windows 2000 649 22.3 CDONTS库 649 22.3.1 引用类型库 650 22.3.2 NewMail对象 651 22.3.3 其他的CDONTS对象 658 22.3.4 设置SMTP Service 666 22.3.5 SMTP Service配置 667 22.4 在ASP应用程序中使用CDONTS 670 22.4.1 简单邮箱应用程序 671 22.4.2 Inbox应用程序 676 22.5 小结 683 第23章 ASP、CDO与Exchange Server 684 23.1 CDO库 684 23.1.1 通用/共享对象 684 23.1.2 Session对象 695 23.1.3 文件夹 697 23.1.4 地址列表 698 23.1.5 信息存储 699 23.1.6 消息 699 23.1.7 通用属性 704 23.2 邮件客户端应用程序 705 23.2.1 概述 705 23.2.2 服务器配置 705 23.2.3 类型库 707 23.2.4 Login.asp 707 23.2.5 FrameSet.asp 708 23.2.6 FolderList.asp 709 23.2.7 MessageList.asp 712 23.2.8 ViewMessage.asp 715 23.2.9 SendMessage.asp 719 23.2.10 SendMail.asp 722 23.2.11 Logout.asp 725 23.3 小结 725 第24章 服务器防护 726 24.1 安全的定义 726 24.1.1 Internet上的安全问题 726 24.1.2 安全策略 728 24.2 Windows 2000的防护 730 24.2.1 磁盘格式 730 24.2.2 Window 2000安全检查列表 730 24.2.3 防火墙和代理服务器 737 24.3 IIS 5.0的防护 739 24.3.1 IIS的安全配置 739 24.3.2 验证方法 742 24.4 SQL Server 7.0和ODBC的安全 744 24.4.1 保护sa帐号 744 24.4.2 为数据库访问建立替代帐号 744 24.5 建立自己的ASP安全系统 746 24.6 小结 755 第25章 证书的使用 756 25.1 安全性、一致性和可靠性 756 25.2 证书与证书机构 759 25.3 从证书机构获取证书 762 25.4 使用证书 768 25.4.1 使用服务器证书 768 25.4.2 使用个人证书 768 25.4.3 使用软件发行者证书 769 25.4.4 客户证书映射 769 25.4.5 证书的生存期 772 25.5 管理证书 772 25.5.1 证书存储 772 25.5.2 IIS证书管理 774 25.5.3 IE证书管理 775 25.5.4 Outlook Express证书管理 776 25.6 证书与ASP 776 25.7 成为自己的证书机构 777 25.7.1 Certificate Services 778 25.7.2 建立证书机构 779 25.7.3 管理证书机构 779 25.7.4 与证书机构的交互 780 25.8 小结 781 第26章 优化ASP的性能 782 26.1 衡量工作性能的标准 782 26.1.1 吞吐量 782 26.1.2 响应时间 783 26.1.3 衡量性能的其他指标 784 26.2 改善服务器的硬件性能 786 26.2.1 内存 786 26.2.2 硬盘 787 26.2.3 网络带宽 787 26.2.4 CPU 787 26.2.5 更多的服务器 787 26.3 性能的调整 787 26.3.1 解决性能问题 787 26.3.2 强度工具 788 26.3.3 脚本优化 789 26.3.4 会话和应用程序状态 789 26.3.5 安全套接字层 793 26.3.6 进程隔离 793 26.3.7 缓存技术和字典 794 26.3.8 数据库性能 795 26.3.9 真正充足的时间:MSMQ 796 26.3.10 脚本与组件的比较 796 26.3.11 多处理器的可扩展性 798 26.3.12 线程闸门 800 26.3.13 设置元数据库 801 26.3.14 性能计数器 802 26.4 各种小技巧 805 26.4.1 Stm的重命名技巧 805 26.4.2 避免嵌套的包含 806 26.4.3 不使用非脚本映射的文件扩展名 806 26.4.4 关闭脚本调试器 806 26.4.5 最小化脚本块转换 806 26.4.6 不要混用脚本引擎 807 26.4.7 在“费时”操作前使用Response.Is Client Connected 807 26.4.8 使用标记 808 26.4.9 不使用OnStartPage和OnEndPage 808 26.4.10 发挥客户端的作用 808 26.5 小结 808 第27章 建立多服务器网站 810 27.1 多服务器网站 810 27.1.1 Web阵的不足 811 27.1.2 Web阵基础 812 27.2 负载平衡模式 813 27.2.1 DNS循环复用法 813 27.2.2 硬件负载平衡 814 27.2.3 TCP/IP Network Load Balancing 817 27.2.4 复合方式 819 27.2.5 High Availability Clustering Service 820 27.2.6 COM+Dynamic Load Balancing 822 27.3 状态管理 824 27.3.1 不管理状态 824 27.3.2 客户端存储 824 27.3.3 亲和性 824 27.3.4 在一个中心服务器上存储状态 826 27.4 安全 826 27.5 小结 827 第28章 XML驱动的报纸实例 829 28.1 报纸的剖析 829 28.1.1 作者写稿 831 28.1.2 编辑修改 832 28.1.3 读者阅读 834 28.1.4 结构要求 835 28.2 网站的大脑:settings.xml 835 28.2.1 元素 836 28.2.2 元素 836 28.2.3 元素 836 28.2.4 准备global.asa 837 28.2.5 插入导航 838 28.2.6 元素 840 28.3 网站的躯干:headlines.asp 841 28.3.1 ShowHeadlines过程 842 28.3.2 ShowBlurbs过程 843 28.3.3 ShowBriefs过程 844 28.3.4 ShowStory过程 846 28.3.5 使用ShowStory过程 849 28.3.6 主页 852 28.4 管理工具 854 28.4.1 setting_stories.asp 854 28.4.2 setting_glossary.asp 858 28.4.3 关于admin文件夹的其他内容 861 28.5 系统集成 861 28.6 小结 864 附录A ASP 3.0的对象模型 865 附录B 脚本运行期库对象 871 附录C 微软服务器组件 877 附录D 错误代码 881 附录E ADO 2.5对象模型 893 附录F ADO 2.5常量 902 附录G 有用的资料 920 附录H p2p.wrox.com 926
EasyASP是一个方便快速开发ASP的类,其中包含了数据库控制类Easp.db,具有同时对一个或多个数据库进行各类操作、调用MSSQL存储过程及记录集分页等功能。EasyASP同时提供了大量实用的ASP通用过程及方法,可以简化大部分的ASP操作。EasyASP目前提供下载的是VBScript版。 EasyASP 2.1 GB2312 更新日志: 新增Easp.Include方法,完美实现了ASP的动态包含,且支持ASP源码中无限级层次的<!--#include...-->。 新增Easp.GetInclude方法,用于获取ASP文件运行的结果或获取html文件等文本文件的源码。 新增Easp.Charset属性,用于设置Easp.Include方法和Easp.getInclude方法载入文件的编码。 新增Easp.ConfirmUrl方法,用于输出确认信息框并根据选择进行Url跳转。 新增Easp.HtmlFormat方法,用于对html文本进行简单的格式化(仅转换空格和换行为可见)。 新增Easp.RegReplaceM方法,用于正则替换的多行模式。 新增Easp.RegMatch方法,用于正则匹配的编组捕获。 新增Easp.IsInstall方法,用于检测系统是否安装了某个组件。 [db]新增Easp.db.QueryType属性,可设置用ADORecordSet还是Command方式获取记录集。 [db]新增Easp.db.GetRandRecord方法,用于取得指定数量的随机记录集。 [db]新增Easp.db.Exec方法,用于执行SQL语句或者返回Command方式查询的记录集。 优化Easp.DateTime方法,格式化为时间差时的显示更人性化。 优化Easp.RandStr和Easp.db.RandStr方法,提供更强大更人性化的随机字符串和随机数生成功能。 修正Easp.GetUrlWith方法第一个参数为空时生成的新URL出错的Bug。 修正Easp.GetApp方法无法获取缓存数据的Bug。 修正Easp.AlertUrl跳转前会继续执行服务器端代码的Bug。 修正v2.1beta版中Easp.JsEncode和Easp.db.Json方法会报“类型不匹配”错误的Bug。 修正v2.1beta版中Easp.RandStr和Easp.db.RandStr的一个Bug。 [db]优化Easp.db.AddRecord方法,现在仅当指定了ID字段的名称时才返回新增的记录ID号。(影响以前版本) [db]修正分页下拉框中页面数量小于jumplong配置时出现负数的Bug。 EasyASP的特点: [数据库] 能方便的实现一个或多个数据库的增、删、改等控制操作。 [数据库] 对数据库字段进行操作时可以不用考虑字段值数据类型的差别(如文本字段不用加单引号)。 [数据库] 自带记录集分页和调用存储过程分页功能,拥有功能丰富的可完全自定义配置及调用。 [数据库] 能方便的执行带各种参数的MSSQL存储过程并返回多个值或多个记录集。 [数据库] 完善的数据库操作容错功能,能即时输出出错SQL语句方便调试。 [数据库] 在使用已经存在的数据库连接对象时能自动判断数据库类型。 [数据库] 专为Ajax设计的数据获取方式及输出Json格式数据。 [数据库] 能有效防止SQL注入。 [ASP] 自带大量的ASP通用过程及方法,简化大部分ASP操作。 [ASP] 完美实现ASP文件的动态载入,并支持无限级的ASP原生include。 [ASP] 自带数据类型验证及服务器端表单验证功能。 [ASP] 能轻松实现页面地址获取并对URL参数进行过滤以及替换。 [工具] 具有专为EasyASP开发的适用于Dreamweaver CS3 和 CS4 的代码高亮及代码提示扩展插件。 [工具] 具有完善的帮助手册及大量应用实例。

1,216

社区成员

发帖
与我相关
我的任务
社区描述
VB 数据库(包含打印,安装,报表)
社区管理员
  • 数据库(包含打印,安装,报表)社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧