ActiveX form的简单问题!!!!!!!!!!!!!!!!!!!!!!!

autocar 2003-09-11 12:48:50

我在一个ActiveX form 工程中

在菜单中 -> edit -> add to interface

然后在 interface 下拉框中选 Events-leventEvents

在 Declaration 中 输入 procedure g(var i :integer); 声明了带一个参数事件过程


但不知道如何引发该事件????


例如:

当变量 i 大于 50 时 就引发 上面定义的事件 并将 i 作为 事件的参数


部分代码如下:

//按下activex控件的按钮

procedure TActiveFormX.Button1Click(Sender: TObject);


begin
//如果I大于50就激发G()事件

if i > 50 then
g(i)
else
i:=i+1;


end;


但在编译时报错,说g(i)没有定义 ,

但type library里在IActiveFormXEvents项中可以看见g事件过程,参数也正确


请各位高手帮忙解决,谢谢!!!!!!!
...全文
59 回复 打赏 收藏 转发到动态 举报
写回复
用AI写文章
回复
切换为时间正序
请发表友善的回复…
发表回复
由本人第一次尝试制作的录像视频教程,由于电脑速度较慢,播放时间较慢,请谅解。 本录像讲解最基础的VB封装ASP代码生成DLL的制作教程,适合初级学习者参考。也是本人学习VB制作ASP组件的第一个尝试,录像基本成功。 用vb编写asp组件(dll)示例 下面,将演示如何使用vb制作asp的dll组件... 1. 启动你的vb,选择activex dll图标,然后在点击菜单的工程>>引用,接 着在弹出的"引用"窗口从中选择 microsoft active server pages object library. 2. 给工程和类重命名,在asp中调用时,就全靠它了^_^!我们的工程名改 为aspdll,类名为demo.在asp中调用的方法是: set objreference = server.createobject("工程名.类名") 本例调用的相应代码如下: set objreference = server.createobject("aspdll.demo") 调用的方法和一般常见的,比如fso等组件的方法一模一样. 心动了吧,呵呵,下面我们继续.... 3. 接着,我们开始编写代码,打开我们刚才新建工程类窗口,第一步,先声 明我们要用到的变量.主要是在vb声明替代asp几大对象的变量名,定义这 asp的几大对象后,我们就可以像在asp环境中调用类似request,server等 这样的几大对象了.(声明的变量名完全可以和asp对象名一样)代码如下: '********************************************** private mys criptingcontext as s criptingcontext private myapplication as application private myrequest as request private myresponse as response private myserver as server private mysession as session '********************************************** 4. 声明完变量后,我们必须在类中写onstartpage子函数.本函数的作用是 当用户访问一个带有本组件的asp文件时,iis就会把s criptingcontext传 送给我们vb组件对象.这个s criptingcontext包括了全部的asp方法和属性 .这样,就使得我们有能力访问所有asp的对象.代码如下: '***************************************************************** public sub onstartpage(passeds criptingcontext as s criptingcontext) set mys criptingcontext = passeds criptingcontext set myapplication = mys criptingcontext.application set myrequest = mys criptingcontext.request set myresponse = mys criptingcontext.response set myserver = mys criptingcontext.server set mysession = mys criptingcontext.session end sub '***************************************************************** 通过上面的函数,我们在asp中调用本组件后,上面的几大对象就完全可以 像平时我们在asp使用一样了,举个例子: 在asp中实现接收提交的表单值并输出屏幕: <% formvalue=request.form("username") response.write ("你提交的用户名是"&myformvalue&",欢迎您!") %> 在vb中实现方法是: formvalue=myrequest.form("username") myresponse.write ("你提交的用户名是"&myformvalue&",欢迎您!") 5. 相对应于onstartpage函数,我们还要编写一个关闭onstartpage中对象 的onendpage函数,代码如下: '********************************* public sub onendpage() set mys criptingcontext = nothing set myapplication = nothing set myrequest = nothing set myresponse = nothing set myserver = nothing set mysession = nothing end sub '******************************** 6.通过编写上面的代码,我们在vb中编写asp组件实例的环境已经具备了, 下面,我就尝试写两个与asp中基本相类似的函数,也就是说,关键部位就在 这里了,你完全可以把你所有的asp源码封装在这里... 先写个最简单的输出屏幕信息函数: '******************************************** public sub welcomeinfo() myresponse.write ("阿里西西_web开发,欢迎访www.alixixi.com!") end sub '******************************************** 再写个带参数传递及显示now()现在时间的函数: '********************************** public sub setinfo(content as string) myresponse.write content & "
" myresponse.write "现在的时间是:" & now() end sub '********************************** 通过上面的asp代码实例,你会发现其实这和asp源码基本没有区别^_^ 7. 好了,整个类就编写完了,我们开始打包封装成dll.我们先保存工程, 这里我们保存到e:\vbdll,接着选择菜单上的文件>>生成aspdll.dll,很 快的dll组件就封装并生成完毕了. 8. 生成dll文件后,我们开始调试和使用.在系统运行栏输入cmd,进入dos 命令行状态,我们要注册刚才生成的dll组件,注册方法是可以直接输入 regsvr32 e:\vbdll\aspdll.dll ,为了安装方便,你同时可以写个批处理 文件,这里不一一举例了...好,注册成功! 9.注册完dll组件后,我们针对刚才的组件,按照上面介绍过的方法编写一 个asp文件来调试.代码如下: <% set redll = server.createobject("aspdll.demo") redll.welcomeinfo response.write "
" redll.setinfo("传递参数到服务器组件,并返回值及当前日期now()!") response.write "
" set redll = nothing %> 在iis中打开此文件,屏幕显示:
Dreamweaver 外部插件 名称 简介 Alwaysontop 可以使弹出的窗口始终位于顶端 Browse4redirct 页面自动重定向到某个地址 Moustrail 鼠标移动带有"轨迹" windowresizer 指定窗口的分辨率 Pageborder 设定页边距 ColourDethRedirect 根据访问者的的屏幕颜色数选定相应页面 Framewizard 制作各种样式的帧结构 FrameBuster 监测是否现在在一个帧中,如果在跳出帧结构 Makemaillink 建立邮件连接 Makenewslink 建立新闻组连接 Fullscreen Opener 在新窗口中以全屏幕方式打开页面 close onblur 光标移出窗口时自动关闭该窗口 CSS on resolution 根据不同的分辨率调入相应的外部css文件 Css on platform 根据不同的操作系统调入相应的外部css文件 Css on Browser 根据不同的浏览器调入相应的外部css文件 FontTagKiller 将页面中所有的标记清除 jsonbrowser 根据不同的浏览器选择不同的js代码 Remove lines from maps IE4会在可点图激活时候显示虚线框,该命令移走这个框 Tag killer 将指定的标签从页面中清除 InsertCustom Tag 插入自定义标签 set global Var 在head标签中设置javascript的全局变量 windwo mover 将窗口移到屏幕的指定地方 dreamshow 使图片像播放幻灯一样顺序播放 Show-HideallLayers 隐藏或者显示所有的层 OpenerLocation 在新窗口中打开指定的url Flash3_detector 监测是否支持flash3 redirect 可以根据浏览器操作系统等多种条件调入相应页面 Centrewindow 自动将窗口置中 One by one(behavior+command) 在显示当前层的时候,自动隐藏前一个层 maxmizewindow 最大化窗口 Open full screen window 打开一个新的全屏幕的窗口 printcrossbrowser 弹出打印对话框 Audioembed 可以嵌入midi文件并设置为循环播放 Background_that_fit 不论怎样缩放窗口背景图片总是和窗口一样大 Basetarget 设定页面的的base URL Timestamp 为页面加上时间戳,这下最新更动时间不用每次再自己写了 guestbook-o-matic 不用cgi制作自己的留言本 quicktimeobj 插入quicktime文件 Flash3embedder 插入Flash3文件 realvideo 插入real文件 js depending on browser 根据不同的浏览器选择不同的javascript代码 Externel CSS file 插入外部的CSS文件 Externel Javascript file 插入外部的js文件 Video embed 插入activemovie windowsMaxmizer 最大化窗口   名称 简介 Reverse Timeline Reverse Timeline可以从TIMELINE的帧15倒放到帧1,但必须将其放到TIMELINE的文件夹下,否则它不会工作 Layer f(x) Behavior 这个Behavior 可以让一个层(layer)按照一个圆形、螺旋形或一些 特殊的轨迹运动。 Align Layers 这个Action的功能是让用户可以将一个layer象table一样的在屏幕上 进行竖直或水平排列对齐,同时这个插件还可以设置整个html页面的边距。 Layer Transitions 包含了12种网页中常见的层变化效果的插件,在IE和NN内都能够正常 显示。 Back to my frame 在网页中加入这个action后浏览器将会判断当前的页面是否包含在一 个帧中,如果结果为否则会自动跳转到指定的url地址。 History Go 2.0 这个Behavior的作用是在网页中增加一个“History Go”的javascri pt,从而可以实现类似于浏览器中的“前进”和“后退”按钮的功能。 Print 3.0
      课程设计题目    学生成绩管理系统 课程设计的目的   理解面向对象的软件设计基本理论,学习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

CuteEditor功能特点
是什么使CuteEditor成为Html在线编辑器的领航者?除了其强大的功能和方便的使用, 这里还有一些顶尖的技术因素是CuteEditor编辑器成为你编辑和发布Web内容的最佳选择:
界面简洁加载速度快

由于才有了很多优化方法,所以CuteEditor非常简单、小巧、装载速度快,但仍然保持功能强大、执行效率高的特点。

跨浏览器,跨平台的所见即所得在线html编辑器

兼容市面上最流行的ie5.5+,firefox1.0+,mozilla1.3+, netscape7+和Safari(1.3+)浏览器,并且包括Mac和Linux操作平台。

CuteEditor遵循Web标准,没有类似 这种标签

你的Html编辑器还在使用类似 这种标签么? CuteEditor会帮助你构建用户最新Web标准的html代码标签,自动生成简洁的HTML/XHTML代码。 为什么要遵循Web标准?

学习应用Web标准有很多益处,下面给几个简单例子:

获得好的搜索引擎排名: The separation of content and presentation makes the content represent a larger part of the total file size. Combined with semantic markup this will improve search engine rankings.
更快的下载和加载网页: Less HTML results in smaller file sizes and quicker downloads. Modern web browsers render pages faster when they are in their standards mode than when they are in their backwards compatible mode.
适应未来网页浏览器: When you use defined standards and valid code you future-proof your documents by reducing the risk of future web browsers not being able to understand the code you have used.
代码编写简单,维护方便: Using more semantic and structured HTML makes it easier and quicker to understand code created by somebody else.
适应其他设备: Semantic HTML, where structure is separated from presentation, makes it easier for screen readers and alternative browsing devices to interpret the content.
非常好的适应性: A semantically marked up document can be easily adapted to print and alternative browsing devices, like handheld computers and cellular phones, just by linking to a different CSS file. You can also make site-wide changes to presentation by editing a single file.
Read more:
我的网页符合Web标准,你的呢?
能自动清理HTML代码中Word标记

When text is pasted from Microsoft Word allot of unnecessary word specific markup is carried across. This can result in web pages that take an unnecessarily long time to download. The Paste from Word button solves this by removing word markup before pasting the text into your page.

支持W3C WAI和section 508的无障碍引导

Cute Editor optional accessibility settings ensure your site complies with Section 508, so people with disabilities can have full access to your content.

输出的HTML或不错的XHTML供你选择 (Demo)

Cute Editor supports output well-formed XHTML. Your choice of XHTML 1.0 or HTML 4.01 output.


无限次的撤销/恢复

Many of the other editors on the market cannot undo or redo certain actions, and certain table operations - such as cell merge or column deletion. Cute Editor 4.0 has a new custom undo/redo implementation to make you can now safely undo those actions.


多语言支持,通过简单设置XML即可完成 (Demo)

All labels, buttons, tooltips and messages are located in external XML files, so that the language of the editor can be switched with a single property. You can also create a new language in a matter of minutes.

完全支持页面编辑(从 到 ) (Demo)

Cute Editor 4.0 allows you to edit a full HTML page, including , <!DOCTYPE...> and some other options. You can also insert <em>Form</em> elements (checkbox, button, textarea, etc.) and modify certain properties of the element.<br/> <br/> 默认换行为软回车 (Demo)<br/><br/>Most other editors insert double line returns which can be annoying for clients who are used to editing in Microsoft Word. CuteEditor can be configured to use <div>, <br> or <p> tags when you press enter. In either mode <br> tags can be created by using shift+enter.<br/> <br/> 支持代码缩进和小写字母<br/><br/>Cute Editor displays nicely indented code in the HTML mode and the generating HTML tags and Attributes are in lower case. This is very convenient and important for the advanced users. <br/> <br/> 支持全屏编辑 (Demo)<br/><br/>It does not open a new window, instead it will resize to fit the browser screen. Edit in full screen mode, maximizing your available space. <br/><br/> <br/> 没有打开较慢的Java或<em>ActiveX</em>组件<br/><br/>100% DHTML, JavaScript ASP.Net code. There are no slow Java or <em>ActiveX</em> components to worry about and everything is handled in the browser! <br/><br/> <br/> 支持相对地址和URL自动关联(Demo)<br/><br/>With Cute Editor, you have the choice of using either a relative or absolute URL. <br/> <br/> 部署<em>简单</em><br/><br/>The perfect addition to your content management system! Only a couple lines of code , you don't need to be an expert. Allows you to add an online HTML editing functionality that works with standard HTML <em>form</em>.<br/> <br/> 可以<em>简单</em>的通过API隐藏按钮和标签 <br/><br/>Cute Editor allows developers to set the image directory, set the controls width, disable image uploading and deleting, restrict access to the source/preview tabs, hide buttons and lists that you don't want your clients to see or access. <br/> <br/> 支持图片的文字环绕 <br/><br/>Locate the image you want to wrap text around, and click any justify button in the toolbar. The image will float to the desired direction. Text will be positioned around the image. <br/> <br/> 支持文件下载 <br/><br/>You can upload document files, create a link from your HTML content to the document files (zip files, ppt files...). <br/> <br/> CSS型皮肤 (Demo)<br/><br/>Cute Editor provides several built in themes that are ready to use. Developers can completely change the appearance of the toolbar and the dialogs by simply modifying the supplied classes and images. <br/> <br/> 高级的表格管理<br/><br/>Create and modify tables and table cells. Set their border color, alignment, cellspacing and more! Once you've created a table, simply right click inside of it and use the handy popup menu to change its attributes. <caption>,<summary>,<thead>,<tfoot>,<th> tags are supported. <br/><br/> <br/> 图片插入和自动上传<br/><br/>Built-in thumbnail generator. Thumbnail images are dynamically created; Supports upload new images. Paging - specify how many images. Support auto resize images.<br/> <br/> 具有特殊的对话框<br/><br/>With Style builder dialog box you can apply CSS style attributes directly to any HTML elements on your Web page.<br/> <br/> 支持内容模板 (Demo)<br/><br/>The basic idea behind a Content Management System (CMS) is to separate the management of content from design. Cute Editor allows the site designer to easily create and establish templates to give the site a uni<em>form</em> look. Templates may be modified when desired. <br/> <br/> 通过限制html和文字的长度来保护你的数据库 (Demo)<br/><br/>If you tried to insert a record whose text length is greater than allowed by your table, an error will be reported. To prevent this type of error from occurring, developers can use MaxHTMLLength or MaxTextLength in the Cute Editor to limit the length of the user抯 input. <br/> <br/> Apply security to control user access to resources <br/><br/>Cute Editor allows developers to assign a pre-defined set of permissions by group or individual. This prevents a normal user to access the administration functionality. <br/><br/>The details of permissions are specified by an XML security policy file. Each level maps to a specific file. The default mappings: <br/><br/>admin设置 admin.config <br/>default设置 default.config <br/>guest设置 guest.config <br/>You can customize and extend each policy file by editing the XML security policy file. You can also create your own policy files that define arbitrary permission sets.<br/><br/>Comparison of the sample security policy file <br/><br/> <br/>Permissions/Resource Setting Admin Default Guest <br/>AllowUpload <br/>AllowDelete <br/>AllowCopy <br/>AllowMove <br/>AllowCreateFolder <br/>AllowDeleteFolder <br/>RestrictUploadedImageDimension <br/>AutoResizeUploadedImages <br/>MaxImageWidth 6400 640 640 <br/>MaxImageHeight 4800 480 480 <br/>MaxImageSize 10000 100 100 <br/>MaxMediaSize 10000 100 100 <br/>MaxFlashSize 10000 100 100 <br/>MaxDocumentSize 10000 100 100 <br/>ImageGalleryPath ~/uploads ~/uploads/member ~/uploads/guest <br/>MediaGalleryPath ~/uploads ~/uploads/member ~/uploads/guest <br/>FlashGalleryPath ~/uploads ~/uploads/member ~/uploads/guest <br/>FilesGallaryPath ~/uploads ~/uploads/member ~/uploads/guest <br/>ImageFilters .jpg <br/>.jpeg <br/>.gif <br/>.png .jpg <br/>.jpeg <br/>.gif <br/> .jpg <br/>.jpeg <br/>.gif <br/> <br/>MediaFilters .avi <br/>.mpg <br/>.mpeg <br/>.mp3 .avi <br/>.mpg <br/>.mpeg <br/> .avi <br/>.mpg <br/>.mpeg <br/> <br/>DocumentFilters .txt, .doc<br/>.pdf, .zip<br/>.rar, .avi<br/>.mpg, .mpeg<br/>.mp3, .jpg<br/>.jpeg,.gif<br/>.png .pdf, .doc<br/> .txt, .doc<br/>.pdf, .zip<br/> <br/> <br/> 在线图片编辑<br/><br/>People that input content on a website are generally not web designers, so most don't have that design & technical fibre in them. With online image editor, you can now edit image file with no image editing software to download or install! Easy drag and drop familiar interface. Resize, change dimensions, scale, crop, add text, optimize, rotate, flip, mirror and add watermark. <br/> <br/> 控制上传文件夹大小<br/><br/>Max Upload Folder size(Including all subfolders and files. A must have feature for people who have limited hosting space.) Dynamic display of available free space in the Upload Folder.Limits the size of your upload folder. If the max is reached uploads will be disabled. <br/> <br/> 支持图片热点<br/><br/>Image maps are pictures with clickable regions also known as "hotspots." When users click on one of the hotspots, they're directed to the page you designate. CuteEditor 5.0 lets you easily create image maps to add fun and excitement to a page<br/> <br/> <div> 的盒模式<br/><br/><div> boxes offer a much greater ability to control the layout of a page. With CuteEditor, you can put any content between <div> tags and then use CSS to style all sorts of borders, backgrounds, etc. <br/> <br/> 通用虚拟键盘<br/><br/>Virtual Keyboard does not require changes to language settings of your system and even speeds up the entire text input process for your customers. It lets your native speaking clients to access your web resources from any location in the world without changing national keyboard layouts and fonts on their machines. <br/> <br/> 把图片存到数据库<br/><br/>With CuteEditor you can easily use a Sql Server database or access database as the file storage. <br/> <br/> RTF和HTML之间互相转换<br/><br/>With CuteEditor you can easily convert an HTML document into an RTF file and RTF file into HTML or XHTML document. <br/> <br/> 生成PDF文件<br/><br/>CuteEditor also allows you dynamically create Adobe PDF documents from ASP.NET.<br/> cuteEditor6.0多语言版(集成lic文件) <br/><br/>目前功能强大,最好的Asp.net编辑器之一 <br/>除了一般html编辑器具有的功能外,还有word过滤、图片在线处理、加水印等实用功能 <br/>使用关键步骤: <br/><br/>1、引用bin下的cuteEditor文件 <br/>2、在aspx页面顶部中添加引用 <br/>3、在aspx页面中加入代码 <br/>4、最后可以在.cs文件中通过来读取Editor1.Text的值来进行任意的扩展和控制了 <br/>具体配置可参照default.aspx和default.aspx.cs <br/><br/>关于cuteEditor6.0的特征及体验请浏览cuteEditor.cn,系统集成了lic授权文件,仅供体验测试使用,请不要用于任何商业用途! <br/><br/> <br/></a></div><div data-report-view="{"mod":"popu_645","index":"5","dest":"https://blog.csdn.net/lailai186/article/details/8190835","strategy":"2~default~OPENSEARCH~Rate","extra":"{\"utm_medium\":\"distribute.pc_relevant_bbs_down_v2.none-task-blog-2~default~OPENSEARCH~Rate-5-8190835-bbs-40130372.264^v3^pc_relevant_bbs_down_v2_default\",\"dist_request_id\":\"1713450344599_25364\"}","spm":"1035.2023.3001.6557"}" class="list-item" data-v-ca2d15ac><div class="recommend-title" data-v-ca2d15ac><img src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAAAXNSR0IArs4c6QAAAeZJREFUWEdjZGBgYPhQkSn49/v/EAbG/2oM/xn4QWI0A4wMHxn+M95i5mRcI9Ax/T0jyPI/P/7VM/5n4KKZpVgM/s/I8I2Fg6mR8W1+RioDw39TelqOsIvxNOPbgvRumgc7Lt8xMnxkfJufPmtgfA+xddQBeEOAv7opgImHh5PoKPr169fnOdN3/Xn88DOxevA6QLC9L5KRk4uHWMNA6v59+fz50+TeTf9evvhGjD6qOwDsiI8fPnya2LX537t3Pwg5giYOADvi3Zs3nyZ0bfn36dNvfI6gmQNAlv599fLlxwmd2xi+ffuDsyjAVw6QkwbQLfr76MHDj30duwbMAf+/f/vyvrJoOcUO+Pf82dOv2zadIZSoQPLcXn4mTJJS0iA21Rzw+/6de58n9uwlxgG8+SXOrIoqSlR1ADEWY1NDtRBg+PXrx7+PHz4S4xAmfgF+BjY2DqqGwIBHwb/3797+unzhFjEhwKZroMYkKCRM1RAgxmKapoF/r1+9/HHs8GVslrCISfCzWVpjbdZRLRHiSwOsugZivMkZ/jQNAYa/f//8//UTe+3GyMTMyMGBtd1AtRAY8DQwIA7gTcuxZuDkABcoZIPvP358njXlKFmVEdmWkqBxMHRMBrhrNuCdU1B0DWT3HACwkGScZb+cwwAAAABJRU5ErkJggg==" alt data-v-ca2d15ac> <a target="_blank" href="https://blog.csdn.net/lailai186/article/details/8190835" data-report-click="{"mod":"popu_645","index":"5","dest":"https://blog.csdn.net/lailai186/article/details/8190835","strategy":"2~default~OPENSEARCH~Rate","extra":"{\"utm_medium\":\"distribute.pc_relevant_bbs_down_v2.none-task-blog-2~default~OPENSEARCH~Rate-5-8190835-bbs-40130372.264^v3^pc_relevant_bbs_down_v2_default\",\"dist_request_id\":\"1713450344599_25364\"}","spm":"1035.2023.3001.6557"}" data-report-query="spm=1035.2023.3001.6557&utm_medium=distribute.pc_relevant_bbs_down_v2.none-task-blog-2~default~OPENSEARCH~Rate-5-8190835-bbs-40130372.264^v3^pc_relevant_bbs_down_v2_default&depth_1-utm_source=distribute.pc_relevant_bbs_down_v2.none-task-blog-2~default~OPENSEARCH~Rate-5-8190835-bbs-40130372.264^v3^pc_relevant_bbs_down_v2_default" class="title" data-v-ca2d15ac>Delphi <em>ActiveX</em> <em>Form</em>的使用实例</a></div> <a target="_blank" href="https://blog.csdn.net/lailai186/article/details/8190835" data-report-click="{"mod":"popu_645","index":"5","dest":"https://blog.csdn.net/lailai186/article/details/8190835","strategy":"2~default~OPENSEARCH~Rate","extra":"{\"utm_medium\":\"distribute.pc_relevant_bbs_down_v2.none-task-blog-2~default~OPENSEARCH~Rate-5-8190835-bbs-40130372.264^v3^pc_relevant_bbs_down_v2_default\",\"dist_request_id\":\"1713450344599_25364\"}","spm":"1035.2023.3001.6557"}" data-report-query="spm=1035.2023.3001.6557&utm_medium=distribute.pc_relevant_bbs_down_v2.none-task-blog-2~default~OPENSEARCH~Rate-5-8190835-bbs-40130372.264^v3^pc_relevant_bbs_down_v2_default&depth_1-utm_source=distribute.pc_relevant_bbs_down_v2.none-task-blog-2~default~OPENSEARCH~Rate-5-8190835-bbs-40130372.264^v3^pc_relevant_bbs_down_v2_default" class="desc" data-v-ca2d15ac><em>ActiveX</em>控件也就是一般所说的OCX控件,它是<em>ActiveX</em>技术的一部分。 <em>ActiveX</em>控件可以被集成到很多支持<em>ActiveX</em>的应用当中去,或者直接用来扩展应用的功能,这些支持<em>ActiveX</em>的应用包括C++ Builder、Delphi、Visual dBASE、 Visual Basic、Visual C++、Internet Explorer、Netscape Navigator等。</a></div></div></div></div> <div class="public_pc_right_footer2020" style="display:none;" data-v-4a5a7f56></div></div> <div id="right-floor-user-content_562" data-editor="{"type":"floor","pageId":143,"floorId":562}" class="user-right-floor right-box main-box detail-user-right" data-v-229a00b0><div class="__vuescroll" style="height:100%;width:100%;padding:0;position:relative;overflow:hidden;"><div class="__panel __hidebar" style="position:relative;box-sizing:border-box;height:100%;overflow-y:hidden;overflow-x:hidden;transform-origin:;transform:;"><div class="__view" style="position:relative;box-sizing:border-box;min-width:100%;min-height:100%;"><!----><div comp-data="[object Object]" baseInfo="[object Object]" community="[object Object]" class="introduce" data-v-4722a3ae><div class="introduce-title" data-v-4722a3ae><div class="img-info" data-v-4722a3ae><a href="https://bbs.csdn.net/forums/DelphiDB" class="community-img" data-v-4722a3ae><img src="https://g.csdnimg.cn/static/user-img/default-user.png" alt data-v-4722a3ae> <div title="数据库相关" class="community-name" data-v-4722a3ae> 数据库相关 </div></a></div></div> <div class="content" data-v-4722a3ae><div class="detail" data-v-4722a3ae><div title="2496" class="item" data-v-4722a3ae><p class="num" data-v-4722a3ae> 2,496 </p> <p class="desc" data-v-4722a3ae> 社区成员 </p></div> <div title="88445" class="item" data-v-4722a3ae><a href="https://bbs.csdn.net/forums/DelphiDB" target="_blank" data-v-4722a3ae><p class="num" data-v-4722a3ae> 88,445 </p> <p class="desc" data-v-4722a3ae> 社区内容 </p></a></div></div> <div class="detail-btns" data-v-4722a3ae><div class="community-ctrl-btns_wrapper" data-v-0ebf603c data-v-4722a3ae><div class="community-ctrl-btns" data-v-0ebf603c><div class="community-ctrl-btns_item" data-v-0ebf603c><div data-v-160be461 data-v-0ebf603c><div data-report-click="{"spm":"3001.5975"}" data-v-160be461><img src="https://csdnimg.cn/release/cmsfe/public/img/topic.427195d5.png" alt="" class="img sendTopic" data-v-160be461 data-v-0ebf603c> <span data-v-160be461 data-v-0ebf603c>发帖</span></div> <!----> <!----></div></div><div class="community-ctrl-btns_item" data-v-0ebf603c><div data-v-0ebf603c><img src="https://csdnimg.cn/release/cmsfe/public/img/me.40a70ab0.png" alt="" class="img me" data-v-0ebf603c> <span data-v-0ebf603c>与我相关</span></div></div><div class="community-ctrl-btns_item" data-v-0ebf603c><div data-v-0ebf603c><img src="https://csdnimg.cn/release/cmsfe/public/img/task.87b52881.png" alt="" class="img task" data-v-0ebf603c> <span data-v-0ebf603c>我的任务</span></div></div><div class="community-ctrl-btns_item" data-v-0ebf603c><div class="community-share" data-v-4ca34db9 data-v-0ebf603c><div class="handle-item share" data-v-ca030a68 data-v-4ca34db9><span height="384" data-v-ca030a68><div role="tooltip" id="el-popover-7848" aria-hidden="true" class="el-popover el-popper popo share-popover" style="width:265px;display:none;"><!----><div id="tool-QRcode" class="QRcode" data-v-ca030a68><img src="https://csdnimg.cn/release/cmsfe/public/img/shareBg5.9eaaa691.png" alt="" class="share-bg" data-v-ca030a68> <div class="share-bg-box" data-v-ca030a68><div class="share-content" data-v-ca030a68><img src="https://g.csdnimg.cn/static/user-img/default-user.png" alt="" class="share-avatar" data-v-ca030a68> <div class="share-tit" data-v-ca030a68>数据库相关</div> <div class="share-dec" data-v-ca030a68>Delphi 数据库相关</div> <span class="copy-share-url" data-v-ca030a68>复制链接</span> <div class="shareText" data-v-ca030a68> </div></div> <div class="share-code" data-v-ca030a68><div class="qrcode" data-v-ca030a68></div> <div class="share-code-text" data-v-ca030a68>扫一扫</div></div></div></div> </div><span class="el-popover__reference-wrapper"><div data-v-0ebf603c><img src="https://csdnimg.cn/release/cmsfe/public/img/share-circle.3e0b7822.png" alt="" class="img share" data-v-0ebf603c> <span data-v-0ebf603c>分享</span></div></span></span></div> <!----></div></div></div> <!----> <div data-v-4fb59baf data-v-0ebf603c><div class="el-dialog__wrapper ccloud-pop-outer2" style="display:none;" data-v-4fb59baf><div role="dialog" aria-modal="true" aria-label="dialog" class="el-dialog el-dialog--center" style="margin-top:15vh;width:70%;"><div class="el-dialog__header"><span class="el-dialog__title"></span><!----></div><!----><div class="el-dialog__footer"><span class="dialog-footer clearfix" data-v-4fb59baf><div class="confirm-btm fr" data-v-4fb59baf>确定</div></span></div></div></div></div></div></div></div> <div style="display:none;" data-v-4722a3ae data-v-4722a3ae><!----> <div class="introduce-desc" data-v-4722a3ae><div class="introduce-desc-title" data-v-4722a3ae>社区描述</div> <span data-v-4722a3ae> Delphi 数据库相关 </span></div></div> <div class="introduce-text" data-v-4722a3ae><div class="label-box" data-v-4722a3ae><!----> <!----> <!----></div></div> <!----> <div class="manage" data-v-4722a3ae><div class="manage-inner" data-v-4722a3ae><span data-v-4722a3ae>社区管理员</span> <ul data-v-4722a3ae><li data-v-4722a3ae><a href="https://blog.csdn.net/community_30" target="_blank" class="start-img" data-v-4722a3ae><img src="https://profile-avatar.csdnimg.cn/default.jpg!1" alt="数据库相关社区" class="el-tooltip item" data-v-4722a3ae data-v-4722a3ae></a></li></ul></div></div> <div class="actions" data-v-4722a3ae><!----> <div style="flex:1;" data-v-4722a3ae><div class="join-btn" data-v-4722a3ae> 加入社区 </div></div> <!----> <!----></div> <div class="el-dialog__wrapper" style="display:none;" data-v-38c57799 data-v-4722a3ae><div role="dialog" aria-modal="true" aria-label="获取链接或二维码" class="el-dialog join-qrcode-dialog" style="margin-top:15vh;width:600px;"><div class="el-dialog__header"><span class="el-dialog__title">获取链接或二维码</span><button type="button" aria-label="Close" class="el-dialog__headerbtn"><i class="el-dialog__close el-icon el-icon-close"></i></button></div><!----><div class="el-dialog__footer"><span class="dialog-footer" data-v-38c57799></span></div></div></div> <div class="collapse-btn" data-v-4722a3ae><img src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAFAAAAAgCAYAAACFM/9sAAAAAXNSR0IArs4c6QAAAi1JREFUaEPtl01u01AUhc+N8wMSO4AxzJAqwQpKQsdtbMOICmKnwCKQ2ACDIgotrYKiduIiVZ10B0CBAjtAbICfooomJr3IcUoTiVLb15GNuG/67nm65/M5AxP0iAiQSK1iKEBhCBSgAhQSEMo1gQpQSEAo1wQqQCEBoVwT+K8CnLnWvER8cOHMaf95q9Xaj+vDtp3LPeD83u6p9a2t+U5cfVrzmSTQNOfOgg4+ATDAeNHp/Jza3Fz5HtWUZbl3GXjYn2e+53lL96Nq057LBOD0dOOcUSx8BFAcGHpZLlWmVlfnd08yaJrubRAe/Z77HwEG5kdS1E8StgFc9bzFb8dBrNtukxgLwOAXNEF6T/pAce8zSeDhknXbuUNMQRUHe/BrMNX+BNGyHIdBT45m6VVn36/FqX5cOFHmMwUYJrE5x+CgkuEujLe+361ubLS+HhowzeYtEC8NzWyXy5ValMpHgSCZyRxgsLxpui4Ij4/ShZ1S0aiurS18sSznJoOeDt29AaP6t6pLgMTV5gJgsHTddhvEWBwC9Y6AZww8AFA4Lp1xDac9nxuAYZ37aQuqGgIbPTt+t3tluNppw0jyXq4AhnV2ZkG0PAKR8b5UMiaDSicxOU5N7gCGSXRvMLAygPgB3Jv0vOXP4wSR9O1cAgzMzFxvXDR6hYlK5cd6u93eS2pw3LrcAhy38bTeV4BCkgpQAQoJCOWaQAUoJCCUawIVoJCAUK4JVIBCAkL5L1yapyGdIBwvAAAAAElFTkSuQmCC" alt data-v-4722a3ae></div></div><!----><!----><div comp-data="[object Object]" baseInfo="[object Object]" typePage="detail" community="[object Object]" class="floor-user-right-rank" data-v-3d3affee><div class="el-tabs el-tabs--top" data-v-3d3affee><div class="el-tabs__header is-top"><div class="el-tabs__nav-wrap is-top"><div class="el-tabs__nav-scroll"><div role="tablist" class="el-tabs__nav is-top" style="transform:translateX(-0px);"><div class="el-tabs__active-bar is-top" style="width:0px;transform:translateX(0px);ms-transform:translateX(0px);webkit-transform:translateX(0px);"></div></div></div></div></div><div class="el-tabs__content"><div role="tabpanel" id="pane-integral" aria-labelledby="tab-integral" class="el-tab-pane" data-v-3d3affee></div><div role="tabpanel" aria-hidden="true" id="pane-3" aria-labelledby="tab-3" class="el-tab-pane" style="display:none;" data-v-3d3affee></div><div role="tabpanel" aria-hidden="true" id="pane-5" aria-labelledby="tab-5" class="el-tab-pane" style="display:none;" data-v-3d3affee></div><div role="tabpanel" aria-hidden="true" id="pane-6" aria-labelledby="tab-6" class="el-tab-pane" style="display:none;" data-v-3d3affee></div></div></div> <div class="floor-user-right-rank-score" data-v-608528ce data-v-3d3affee><div class="floor-user-right-rank-score-tabs" data-v-608528ce><ul data-v-608528ce><li data-v-608528ce> 近7日 </li><li data-v-608528ce> 近30日 </li><li class="active" data-v-608528ce> 至今 </li></ul></div> <div class="floor-user-right-rank-common" data-v-46cf600d data-v-608528ce><div class="rank-list" data-v-46cf600d><!----> <div class="no-data loading" data-v-46cf600d><i class="el-icon-loading" data-v-46cf600d></i> <p data-v-46cf600d>加载中</p></div> <!----> <a href="https:///DelphiDB/rank/list/total" target="_blank" class="show-more" data-v-46cf600d> 查看更多榜单 </a></div></div></div></div><div comp-data="[object Object]" baseInfo="[object Object]" typePage="detail" community="[object Object]" class="floor comunity-rule" data-v-3cfa4dbd><div class="title" data-v-3cfa4dbd> 社区公告 </div> <div class="contain" data-v-3cfa4dbd><div class="inner-content" data-v-3cfa4dbd>暂无公告</div></div></div><div comp-data="[object Object]" baseInfo="[object Object]" typePage="detail" community="[object Object]" class="user-right-adimg empty-arr" data-v-15c6aa4f><div class="adImgs" data-v-2a6389b9 data-v-15c6aa4f><!----> <div data-v-2a6389b9><div data-v-2a6389b9></div></div></div></div><div comp-data="[object Object]" baseInfo="[object Object]" community="[object Object]" class="content-right-recommend" data-v-0f781e88><div data-v-3798762e data-v-0f781e88><!----> <!----></div></div><div comp-data="[object Object]" baseInfo="[object Object]" typePage="detail" community="[object Object]" class="ai-entrance" data-v-eb1c454c><p data-v-eb1c454c>试试用AI创作助手写篇文章吧</p> <div class="entrance-btn-line" data-v-eb1c454c><a href="https://mp.csdn.net/edit?guide=1" target="_blank" data-report-click="{"spm":"3001.9712"}" data-report-query="spm=3001.9712" class="entrance-btn" data-v-eb1c454c>+ 用AI写文章</a></div></div></div></div></div></div></div></div></div></div></div></div></div> <div> <script type="text/javascript" src="https://g.csdnimg.cn/common/csdn-footer/csdn-footer.js" data-isfootertrack="false" defer></script> </div></div></div><script> window.__INITIAL_STATE__= {"csrf":"9u3aSVLn-Oizitq50K2fSmyzhF_LJSGHzIZo","origin":"http:\u002F\u002Fbbs.csdn.net","isMobile":false,"cookie":"uuid_tt_dd=10_3096084280-1713450344565-845960;","ip":"18.116.63.236","pageData":{"page":{"pageId":143,"title":"社区详情","keywords":"社区详情","description":"社区详情","ext":{"isMd":"true","armsfe1":"{pid:\"dyiaei5ihw@1a348e4d05c2c78\",appType:\"web\",imgUrl:\"https:\u002F\u002Farms-retcode.aliyuncs.com\u002Fr.png?\",sendResource:true,enableLinkTrace:true,behavior:true}","redPacketCfg":"{\"presetTitle\":[\"成就一亿技术人!\",\"大吉大利\",\"节日快乐\",\"Bug Free\",\"Hello World\",\"Be Greater Than Average!!\"],\"defaultTitle\":\"成就一亿技术人!\",\"preOpenSty\":{},\"redCardSty\":{}}","blogStar":"[{\"year\":\"2021\",\"enable\":true,\"communityIds\":[3859],\"url\":\"https:\u002F\u002Fbbs.csdn.net\u002Fsummary2021\"},{\"year\":\"2022\",\"enable\":true,\"communityIds\":[3860],\"url\":\"https:\u002F\u002Fbbs.csdn.net\u002Fsummary2022\"}]","mdVersion":"https:\u002F\u002Fcsdnimg.cn\u002Frelease\u002Fmarkdown-editor\u002F1.1.0\u002Fmarkdown-editor.js","componentSortCfg":"{ \"right\":[\"ratesInfo\",\"cty-profile\",\"pub-comp\",\"user-right-introduce\",\"post-event\",\"my-mission\",\"user-recommend\",\"user-right-rank\",\"user-right-rule\",\"user-right-adimg\"] }","show_1024":"{\"enable\":false,\"useWhitelist\":false,\"whitelist\":[76215],\"home\":\"https:\u002F\u002F1111.csdn.net\u002F\",\"logo\":\"https:\u002F\u002Fimg-home.csdnimg.cn\u002Fimages\u002F20221104102741.png\",\"hideLive\":true}","iframes":"[\"3859\"]","pageCfg":"{\"disableDownloadPDF\": false,\"hideSponsor\":false}"}},"template":{"templateId":71,"templateComponentName":"ccloud-detail","title":"ccloud-detail","floorList":[{"floorId":562,"floorComponentName":"floor-user-content","title":"社区详情页","description":"社区详情页","indexOrder":3,"componentList":[{"componentName":"baseInfo","componentDataId":"cloud-detail1","componentConfigData":{},"relationType":3},{"componentName":"user-right-introduce","componentDataId":"","componentConfigData":{},"relationType":2},{"componentName":"user-recommend","componentDataId":"","componentConfigData":{},"relationType":2},{"componentName":"user-right-rank","componentDataId":"","componentConfigData":{},"relationType":2},{"componentName":"user-right-rule","componentDataId":"","componentConfigData":{},"relationType":2},{"componentName":"user-right-adimg","componentDataId":"","componentConfigData":{},"relationType":2},{"componentName":"default2014LiveRoom","componentDataId":"20221024DefaultLiveRoom","componentConfigData":{},"relationType":3}]}]},"data":{"baseInfo":{"customDomain":"","uriName":"DelphiDB","communityHomePage":"https:\u002F\u002Fbbs.csdn.net\u002Fforums\u002FDelphiDB","owner":{"userName":"community_30","nickName":"数据库相关社区","avatarUrl":"https:\u002F\u002Fprofile-avatar.csdnimg.cn\u002Fdefault.jpg!1","position":"","companyName":""},"user":{"userRole":3,"userName":null,"nickName":null,"avatarUrl":null,"rank":null,"follow":2,"communityBase":null,"joinCollege":null,"isVIP":null},"community":{"name":"数据库相关","description":"Delphi 数据库相关","avatarUrl":"https:\u002F\u002Fg.csdnimg.cn\u002Fstatic\u002Fuser-img\u002Fdefault-user.png","qrCode":"","createTime":"2007-08-02","communityAvatarUrl":"https:\u002F\u002Fprofile-avatar.csdnimg.cn\u002Fdefault.jpg!1","communityNotice":null,"userCount":2496,"contentCount":88445,"followersCount":1244,"communityRule":"","communityId":149,"bgImage":"","hashId":"dewql6nl","domain":"","uriName":"DelphiDB","externalDisplay":1,"adBanner":{"img":"","url":"","adType":0,"adCon":null},"rightBanner":{"img":"","url":"","adType":0,"adCon":null},"tagId":null,"tagName":null,"communityType":1,"communityApplyUrl":"https:\u002F\u002Fmarketing.csdn.net\u002Fquestions\u002FQ2106040308026533763","joinType":0,"visibleType":0,"collapse":0,"topicMoveAble":0,"allowActions":{},"communityOwner":"community_30","tagNameInfo":{"provinceTag":null,"areaTag":null,"technologyTags":null,"customTags":null}},"tabList":[{"tabId":1308,"tabName":"全部","tabUrl":"","tabSwitch":1,"tabType":4,"tabContribute":0,"cardType":0,"indexOrder":-1,"url":"https:\u002F\u002Fbbs.csdn.net\u002Fforums\u002FDelphiDB?typeId=1308","iframe":false,"sortType":1},{"tabId":1639748,"tabName":"Ada助手","tabUrl":"","tabSwitch":1,"tabType":2,"tabContribute":0,"cardType":0,"indexOrder":20,"url":"https:\u002F\u002Fbbs.csdn.net\u002Fforums\u002FDelphiDB?typeId=1639748","iframe":false,"sortType":1}],"dataResource":{"mediaType":"c_cloud","subResourceType":"8_c_cloud_long_text","showType":"long_text","tabId":0,"communityName":"数据库相关","communityHomePageUrl":"https:\u002F\u002Fbbs.csdn.net\u002Fforums\u002FDelphiDB","communityType":1,"content":{"id":"40130372","contentId":40130372,"cateId":0,"cateName":null,"url":"https:\u002F\u002Fbbs.csdn.net\u002Ftopics\u002F40130372","shareUrl":"https:\u002F\u002Fbbs.csdn.net\u002Ftopics\u002F40130372","createTime":"2003-09-11 12:48:50","updateTime":"2021-05-28 13:28:27","resourceUsername":"autocar","best":0,"top":0,"text":null,"publishDate":"2003-09-11","lastReplyDate":"2003-09-11","type":"13","nickname":"autocar","avatar":"https:\u002F\u002Fprofile-avatar.csdnimg.cn\u002Fdefault.jpg!1","username":"autocar","commentCount":0,"diggNum":0,"digg":false,"viewCount":59,"hit":false,"resourceSource":6,"status":10,"taskStatus":null,"expired":false,"taskCate":0,"taskAward":0,"taskExpired":null,"checkRedPacket":null,"avgScore":0,"totalScore":0,"topicTitle":"ActiveX form的简单问题!!!!!!!!!!!!!!!!!!!!!!!","insertFirst":false,"likeInfo":null,"description":" 我在一个ActiveX form 工程中 在菜单中 -\u003E edit -\u003E add to interface 然后在 interface 下拉框中选 Events-leventEvents 在 Declaration 中 输入 procedure g(var i :integer); 声明了带一个参数事件过程 但不知道如何引发该事件???? 例如: 当变量 i 大于 50 时 就引发 上面定义的事件 并将 i 作为 事件的参数 部分代码如下: \u002F\u002F按下activex控件的按钮 procedure","coverImg":"https:\u002F\u002Fimg-home.csdnimg.cn\u002Fimages\u002F20221026061946.png","content":"\u003Cbr \u002F\u003E\n我在一个ActiveX form 工程中 \u003Cbr \u002F\u003E\n\u003Cbr \u002F\u003E\n在菜单中 -> edit -> add to interface \u003Cbr \u002F\u003E\n\u003Cbr \u002F\u003E\n然后在 interface 下拉框中选 Events-leventEvents\u003Cbr \u002F\u003E\n\u003Cbr \u002F\u003E\n在 Declaration 中 输入 procedure g(var i :integer); 声明了带一个参数事件过程\u003Cbr \u002F\u003E\n\u003Cbr \u002F\u003E\n\u003Cbr \u002F\u003E\n但不知道如何引发该事件????\u003Cbr \u002F\u003E\n\u003Cbr \u002F\u003E\n\u003Cbr \u002F\u003E\n 例如: \u003Cbr \u002F\u003E\n\u003Cbr \u002F\u003E\n 当变量 i 大于 50 时 就引发 上面定义的事件 并将 i 作为 事件的参数 \u003Cbr \u002F\u003E\n\u003Cbr \u002F\u003E\n\u003Cbr \u002F\u003E\n部分代码如下:\u003Cbr \u002F\u003E\n\u003Cbr \u002F\u003E\n\u002F\u002F按下activex控件的按钮\u003Cbr \u002F\u003E\n\u003Cbr \u002F\u003E\nprocedure TActiveFormX.Button1Click(Sender: TObject);\u003Cbr \u002F\u003E\n\u003Cbr \u002F\u003E\n\u003Cbr \u002F\u003E\nbegin\u003Cbr \u002F\u003E\n \u002F\u002F如果I大于50就激发G()事件\u003Cbr \u002F\u003E\n\u003Cbr \u002F\u003E\n if i > 50 then\u003Cbr \u002F\u003E\n g(i)\u003Cbr \u002F\u003E\n else\u003Cbr \u002F\u003E\n i:=i+1;\u003Cbr \u002F\u003E\n\u003Cbr \u002F\u003E\n\u003Cbr \u002F\u003E\nend;\u003Cbr \u002F\u003E\n\u003Cbr \u002F\u003E\n\u003Cbr \u002F\u003E\n但在编译时报错,说g(i)没有定义 ,\u003Cbr \u002F\u003E\n\u003Cbr \u002F\u003E\n但type library里在IActiveFormXEvents项中可以看见g事件过程,参数也正确\u003Cbr \u002F\u003E\n\u003Cbr \u002F\u003E\n\u003Cbr \u002F\u003E\n请各位高手帮忙解决,谢谢!!!!!!!\u003Cbr \u002F\u003E\n","mdContent":null,"pictures":null,"videoInfo":null,"linkInfo":null,"student":{"isCertification":false,"org":"","bala":""},"employee":{"isCertification":false,"org":"","bala":""},"userCertification":[],"dependId":"0","dependSubType":null,"videoUrl":null,"favoriteCount":0,"favoriteStatus":false,"taskType":null,"defaultScore":null,"syncAsk":false,"videoPlayLength":null},"communityUser":null,"allowPost":false,"submitHistory":[{"user":{"registerurl":"https:\u002F\u002Fg.csdnimg.cn\u002Fstatic\u002Fuser-reg-year\u002F1x\u002F21.png","avatarurl":"https:\u002F\u002Fprofile-avatar.csdnimg.cn\u002Fdefault.jpg!1","nickname":"autocar","selfdesc":"","createdate":"2003-02-20 23:45:00","days":"7728","years":"21","username":"autocar","school":null,"company":null,"job":null},"userName":"autocar","event":"创建了帖子","body":"2003-09-11 12:48","editId":null}],"resourceExt":{}},"contentReply":{"pageNo":1,"pageSize":20,"totalPages":1,"totalCount":0,"total":0,"list":[],"maxPageSize":3000},"defaultActiveTab":1308,"recommends":[{"url":"https:\u002F\u002Fdownload.csdn.net\u002Fdownload\u002Fdsaewq004\u002F914320","title":"VB制作ASP组件_阿里西西视频录像","desc":"由本人第一次尝试制作的录像视频教程,由于电脑速度较慢,播放时间较慢,请谅解。\n\n本录像讲解最基础的VB封装ASP代码生成DLL的制作教程,适合初级学习者参考。也是本人学习VB制作ASP组件的第一个尝试,录像基本成功。\n\n用vb编写asp组件(dll)示例\n\n下面,将演示如何使用vb制作asp的dll组件...\n\n1. 启动你的vb,选择\u003Cem\u003Eactivex\u003C\u002Fem\u003E dll图标,然后在点击菜单的工程\u003E\u003E引用,接\n着在弹出的\"引用\"窗口从中选择\nmicrosoft active server pages object library.\n\n2. 给工程和类重命名,在asp中调用时,就全靠它了^_^!我们的工程名改\n为aspdll,类名为demo.在asp中调用的方法是:\nset objreference = server.createobject(\"工程名.类名\")\n本例调用的相应代码如下:\nset objreference = server.createobject(\"aspdll.demo\")\n调用的方法和一般常见的,比如fso等组件的方法一模一样.\n心动了吧,呵呵,下面我们继续....\n\n3. 接着,我们开始编写代码,打开我们刚才新建工程类窗口,第一步,先声\n明我们要用到的变量.主要是在vb声明替代asp几大对象的变量名,定义这\nasp的几大对象后,我们就可以像在asp环境中调用类似request,server等\n这样的几大对象了.(声明的变量名完全可以和asp对象名一样)代码如下:\n\n'**********************************************\nprivate mys criptingcontext as s criptingcontext\nprivate myapplication as application\nprivate myrequest as request\nprivate myresponse as response\nprivate myserver as server\nprivate mysession as session\n'**********************************************\n\n4. 声明完变量后,我们必须在类中写onstartpage子函数.本函数的作用是\n当用户访问一个带有本组件的asp文件时,iis就会把s criptingcontext传\n送给我们vb组件对象.这个s criptingcontext包括了全部的asp方法和属性\n.这样,就使得我们有能力访问所有asp的对象.代码如下:\n\n'*****************************************************************\npublic sub onstartpage(passeds criptingcontext as s criptingcontext)\nset mys criptingcontext = passeds criptingcontext\nset myapplication = mys criptingcontext.application\nset myrequest = mys criptingcontext.request\nset myresponse = mys criptingcontext.response\nset myserver = mys criptingcontext.server\nset mysession = mys criptingcontext.session\nend sub\n'*****************************************************************\n\n通过上面的函数,我们在asp中调用本组件后,上面的几大对象就完全可以\n像平时我们在asp使用一样了,举个例子:\n\n在asp中实现接收提交的表单值并输出屏幕:\n\n\u003C%\n\u003Cem\u003Eform\u003C\u002Fem\u003Evalue=request.\u003Cem\u003Eform\u003C\u002Fem\u003E(\"username\")\nresponse.write (\"你提交的用户名是\"&my\u003Cem\u003Eform\u003C\u002Fem\u003Evalue&\",欢迎您!\")\n%\u003E\n\n在vb中实现方法是:\n\n\u003Cem\u003Eform\u003C\u002Fem\u003Evalue=myrequest.\u003Cem\u003Eform\u003C\u002Fem\u003E(\"username\")\nmyresponse.write (\"你提交的用户名是\"&my\u003Cem\u003Eform\u003C\u002Fem\u003Evalue&\",欢迎您!\")\n\n5. 相对应于onstartpage函数,我们还要编写一个关闭onstartpage中对象\n的onendpage函数,代码如下:\n\n'*********************************\npublic sub onendpage()\nset mys criptingcontext = nothing\nset myapplication = nothing\nset myrequest = nothing\nset myresponse = nothing\nset myserver = nothing\nset mysession = nothing\nend sub\n'********************************\n\n6.通过编写上面的代码,我们在vb中编写asp组件实例的环境已经具备了,\n下面,我就尝试写两个与asp中基本相类似的函数,也就是说,关键部位就在\n这里了,你完全可以把你所有的asp源码封装在这里...\n\n先写个最\u003Cem\u003E简单\u003C\u002Fem\u003E的输出屏幕信息函数:\n'********************************************\npublic sub welcomeinfo()\nmyresponse.write (\"阿里西西_web开发,欢迎访www.alixixi.com!\")\nend sub\n'********************************************\n\n再写个带参数传递及显示now()现在时间的函数:\n'**********************************\npublic sub setinfo(content as string)\nmyresponse.write content & \"\u003Cbr\u003E\"\nmyresponse.write \"现在的时间是:\" & now()\nend sub\n'**********************************\n\n通过上面的asp代码实例,你会发现其实这和asp源码基本没有区别^_^\n\n7. 好了,整个类就编写完了,我们开始打包封装成dll.我们先保存工程,\n这里我们保存到e:\\vbdll,接着选择菜单上的文件\u003E\u003E生成aspdll.dll,很\n快的dll组件就封装并生成完毕了.\n\n8. 生成dll文件后,我们开始调试和使用.在系统运行栏输入cmd,进入dos\n命令行状态,我们要注册刚才生成的dll组件,注册方法是可以直接输入\nregsvr32 e:\\vbdll\\aspdll.dll ,为了安装方便,你同时可以写个批处理\n文件,这里不一一举例了...好,注册成功!\n\n9.注册完dll组件后,我们针对刚才的组件,按照上面介绍过的方法编写一\n个asp文件来调试.代码如下:\n\n\u003C%\nset redll = server.createobject(\"aspdll.demo\")\nredll.welcomeinfo\nresponse.write \"\u003Chr \u002F\u003E\"\nredll.setinfo(\"传递参数到服务器组件,并返回值及当前日期now()!\")\nresponse.write \"\u003Chr \u002F\u003E\"\nset redll = nothing\n%\u003E \n在iis中打开此文件,屏幕显示:","createTime":"2008-12-27 12:40:21","dataReportQuery":"spm=1035.2023.3001.6557&utm_medium=distribute.pc_relevant_bbs_down_v2.none-task-download-2~default~OPENSEARCH~Paid-1-914320-bbs-40130372.264^v3^pc_relevant_bbs_down_v2_default&depth_1-utm_source=distribute.pc_relevant_bbs_down_v2.none-task-download-2~default~OPENSEARCH~Paid-1-914320-bbs-40130372.264^v3^pc_relevant_bbs_down_v2_default","dataReportClick":"{\"mod\":\"popu_645\",\"index\":\"1\",\"dest\":\"https:\u002F\u002Fdownload.csdn.net\u002Fdownload\u002Fdsaewq004\u002F914320\",\"strategy\":\"2~default~OPENSEARCH~Paid\",\"extra\":\"{\\\"utm_medium\\\":\\\"distribute.pc_relevant_bbs_down_v2.none-task-download-2~default~OPENSEARCH~Paid-1-914320-bbs-40130372.264^v3^pc_relevant_bbs_down_v2_default\\\",\\\"dist_request_id\\\":\\\"1713450344599_25364\\\"}\",\"spm\":\"1035.2023.3001.6557\"}","dataReportView":"{\"mod\":\"popu_645\",\"index\":\"1\",\"dest\":\"https:\u002F\u002Fdownload.csdn.net\u002Fdownload\u002Fdsaewq004\u002F914320\",\"strategy\":\"2~default~OPENSEARCH~Paid\",\"extra\":\"{\\\"utm_medium\\\":\\\"distribute.pc_relevant_bbs_down_v2.none-task-download-2~default~OPENSEARCH~Paid-1-914320-bbs-40130372.264^v3^pc_relevant_bbs_down_v2_default\\\",\\\"dist_request_id\\\":\\\"1713450344599_25364\\\"}\",\"spm\":\"1035.2023.3001.6557\"}","type":"download"},{"url":"https:\u002F\u002Fdownload.csdn.net\u002Fdownload\u002Fhuke1987\u002F515241","title":"dreamweaver的各种组件","desc":"Dreamweaver 外部插件\n\n名称 简介 \nAlwaysontop 可以使弹出的窗口始终位于顶端 \nBrowse4redirct 页面自动重定向到某个地址 \nMoustrail 鼠标移动带有\"轨迹\" \nwindowresizer 指定窗口的分辨率 \nPageborder 设定页边距 \nColourDethRedirect 根据访问者的的屏幕颜色数选定相应页面 \nFramewizard 制作各种样式的帧结构 \nFrameBuster 监测是否现在在一个帧中,如果在跳出帧结构 \nMakemaillink 建立邮件连接 \nMakenewslink 建立新闻组连接 \nFullscreen Opener 在新窗口中以全屏幕方式打开页面 \nclose onblur 光标移出窗口时自动关闭该窗口 \nCSS on resolution 根据不同的分辨率调入相应的外部css文件 \nCss on plat\u003Cem\u003Eform\u003C\u002Fem\u003E 根据不同的操作系统调入相应的外部css文件 \nCss on Browser 根据不同的浏览器调入相应的外部css文件 \nFontTagKiller 将页面中所有的标记清除 \njsonbrowser 根据不同的浏览器选择不同的js代码 \nRemove lines from maps IE4会在可点图激活时候显示虚线框,该命令移走这个框 \nTag killer 将指定的标签从页面中清除 \nInsertCustom Tag 插入自定义标签 \nset global Var 在head标签中设置javascript的全局变量 \nwindwo mover 将窗口移到屏幕的指定地方 \ndreamshow 使图片像播放幻灯一样顺序播放 \nShow-HideallLayers 隐藏或者显示所有的层 \nOpenerLocation 在新窗口中打开指定的url \nFlash3_detector 监测是否支持flash3 \nredirect 可以根据浏览器操作系统等多种条件调入相应页面 \nCentrewindow 自动将窗口置中 \nOne by one(behavior+command) 在显示当前层的时候,自动隐藏前一个层 \nmaxmizewindow 最大化窗口 \nOpen full screen window 打开一个新的全屏幕的窗口 \nprintcrossbrowser 弹出打印对话框 \nAudioembed 可以嵌入midi文件并设置为循环播放 \nBackground_that_fit 不论怎样缩放窗口背景图片总是和窗口一样大 \nBasetarget 设定页面的的base URL \nTimestamp 为页面加上时间戳,这下最新更动时间不用每次再自己写了 \nguestbook-o-matic 不用cgi制作自己的留言本 \nquicktimeobj 插入quicktime文件 \nFlash3embedder 插入Flash3文件 \nrealvideo 插入real文件 \njs depending on browser 根据不同的浏览器选择不同的javascript代码 \nExternel CSS file 插入外部的CSS文件 \nExternel Javascript file 插入外部的js文件 \nVideo embed 插入activemovie \nwindowsMaxmizer 最大化窗口 \n  名称 简介 \nReverse Timeline Reverse Timeline可以从TIMELINE的帧15倒放到帧1,但必须将其放到TIMELINE的文件夹下,否则它不会工作 \nLayer f(x) Behavior 这个Behavior 可以让一个层(layer)按照一个圆形、螺旋形或一些 特殊的轨迹运动。 \nAlign Layers 这个Action的功能是让用户可以将一个layer象table一样的在屏幕上 进行竖直或水平排列对齐,同时这个插件还可以设置整个html页面的边距。 \nLayer Transitions 包含了12种网页中常见的层变化效果的插件,在IE和NN内都能够正常 显示。 \nBack to my frame 在网页中加入这个action后浏览器将会判断当前的页面是否包含在一 个帧中,如果结果为否则会自动跳转到指定的url地址。 \nHistory Go 2.0 这个Behavior的作用是在网页中增加一个“History Go”的javascri pt,从而可以实现类似于浏览器中的“前进”和“后退”按钮的功能。 \nPrint 3.0 ","createTime":"2008-06-26 16:55:56","dataReportQuery":"spm=1035.2023.3001.6557&utm_medium=distribute.pc_relevant_bbs_down_v2.none-task-download-2~default~OPENSEARCH~Rate-2-515241-bbs-40130372.264^v3^pc_relevant_bbs_down_v2_default&depth_1-utm_source=distribute.pc_relevant_bbs_down_v2.none-task-download-2~default~OPENSEARCH~Rate-2-515241-bbs-40130372.264^v3^pc_relevant_bbs_down_v2_default","dataReportClick":"{\"mod\":\"popu_645\",\"index\":\"2\",\"dest\":\"https:\u002F\u002Fdownload.csdn.net\u002Fdownload\u002Fhuke1987\u002F515241\",\"strategy\":\"2~default~OPENSEARCH~Rate\",\"extra\":\"{\\\"utm_medium\\\":\\\"distribute.pc_relevant_bbs_down_v2.none-task-download-2~default~OPENSEARCH~Rate-2-515241-bbs-40130372.264^v3^pc_relevant_bbs_down_v2_default\\\",\\\"dist_request_id\\\":\\\"1713450344599_25364\\\"}\",\"spm\":\"1035.2023.3001.6557\"}","dataReportView":"{\"mod\":\"popu_645\",\"index\":\"2\",\"dest\":\"https:\u002F\u002Fdownload.csdn.net\u002Fdownload\u002Fhuke1987\u002F515241\",\"strategy\":\"2~default~OPENSEARCH~Rate\",\"extra\":\"{\\\"utm_medium\\\":\\\"distribute.pc_relevant_bbs_down_v2.none-task-download-2~default~OPENSEARCH~Rate-2-515241-bbs-40130372.264^v3^pc_relevant_bbs_down_v2_default\\\",\\\"dist_request_id\\\":\\\"1713450344599_25364\\\"}\",\"spm\":\"1035.2023.3001.6557\"}","type":"download"},{"url":"https:\u002F\u002Fdownload.csdn.net\u002Fdownload\u002Fu011232654\u002F5662747","title":"vb学生成绩管理系统","desc":"     \n课程设计题目\n   学生成绩管理系统\n课程设计的目的\n  理解面向对象的软件设计基本理论,学习VB软件设计的基本方法,熟悉一般软件项目开发的基本步骤,培养运用VB解决实际\u003Cem\u003E问题\u003C\u002Fem\u003E的能力和技巧。\n课程设计的主要内容和要求(包括原始数据、技术参数、设计要求、工作量要求等) \n\n四、工作进度安排 \n 2011-2012学年第19周。\n五、主要参考文献\n Visual Basic程序设计教程\n审核批准意见\n\n                         \n                系主任(签字)    年  月  日\n   \n指导教师评语及成绩\n指\n导\n教\n师\n评\n语 \t  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n成\n绩 \t  \n  \n  \n  \n                           导师签字: \n 年 月 日 \n   \n   \n   \n   \n   设计思路及其创建过程\n   一、任务概述\n    简易学生成绩管理系统主要完成学生成绩的管理,包括:\n   1)、添加信息模块:主要完成学生记录、课程记录、学生成绩和用户记录的添加工作。\n   2)、删除信息模块:主要完成学生记录、课程记录、学生成绩和用户记录的删除工作。\n   3)、修改成绩模块:主要完成学生成绩的修改工作。\n   4)、查询模块:主要完成学生成绩的查询工作。 \n   1.进行数据库设计\n    要编写一个实用的数据库程序,必须系统地学习过数据库原理的知识,并首先设计出符合用户业务需求的数据库体系,然后才能利用某种语言,开发出针对这个数据库的交互程序:数据库应用程序。\n   2. 程序的主要功能\n   利用SQL语句完成对学生成绩表的插入、修改、删除和查询操作。比如:\n   (1)插入记录:\n   Insert Into 学生成绩表(学号,课程号,成绩)\n   Values(‘001’,’001’,85)\n   (2)删除记录\n   Delete From 学生成绩表\n   Where 学号=‘001’ And 课程号=‘001’ \n   (3)修改记录\n   Update 学生成绩表 set 成绩 =90\n   Where 学号=‘001’ And 课程号=‘001’ \n   (4)按学号查询\n   Select * From 学生成绩表 Where 学号=‘001’ \n   二、界面设计\n   1.创建工程\n   新建一“标准EXE”工程.工程名为“成绩查询”.\n   2.创建主窗体(frmMain)-MDI主窗体\n   设计菜单:\n   增加 删除 修改 查询 退出\n   增加学生记录 \t 删除学生记录 修改成绩\n   增加课程记录 删除课程记录\n   增加成绩 删除成绩记录\n   增加用户 删除用户\n\n\n\n\n\n\n\n\n\n\n\n3.创建新增学生记录窗体(frmAddStudent)-MDI子窗体\n \n\n\n\n\n\n\n\n\n\n4、建新增课程记录窗体(frmAddCourse)-MDI子窗体\n \n\n\n\n\n\n\n\n\n\n\n5.创建新增成绩记录窗体(frmAddGrade)-MDI子窗体\n \n\n\n\n\n\n\n\n\n\n6.创建新增用户记录窗体(frmAddUser)-MDI子窗体\n \n\n\n\n\n\n\n\n\n\n\n7. 创建修改记录窗体( frmUpdate )-MDI子窗体\n\n\n\n\n\n\n\n\n\n\n\n8.创建删除学生记录窗体(frmDeleteStudent)-MDI子窗体\n\n\n\n\n\n\n\n\n\n\n\n\n9.创建删除课程记录窗体(frmDeleteCourse)-MDI子窗体\n\n\n\n\n\n\n\n\n\n10.创建删除成绩记录窗体(frmDeleteGrade)-MDI子窗体\n\n\n\n\n\n\n\n\n\n\n\n11.创建删除用户窗体(frmDelete)-MDI子窗体\n\n\n\n\n\n\n\n\n\n12.创建查询记录窗体(frmQuery)-MDI子窗体\n\n\n\n\n\n\n\n\n\n\n\n\n13.创建身份验证窗体-MDI子窗体\n\n\n\n\n\n\n\n\n\n\n\n\n1.3 代码设计\n1. 连接数据库代码\n步骤:\n(1)通过“工程—引用”菜单添加对象库:\n Microsoft \u003Cem\u003EActivex\u003C\u002Fem\u003E Data Objects 2.7 Library\n (Ado数据对象)。\n(2)通过工程菜单添加一个标准模块(Module),并设计代码。\n (3) 通过“工程—工程1属性”菜单,将主窗体(frmMain)MDI\u003Cem\u003Eform\u003C\u002Fem\u003E1设置为启动对象。\n添加标准模块代码:\n'声明全局对象变量ABOcn,用于创建于数据库的连接\nPublic ADOcn As New ADODB.Connection \n添加主窗体初始化过程代码: \nPrivate Sub MDI\u003Cem\u003EForm\u003C\u002Fem\u003E_Initialize()\nADOcn.ConnectionString = \"Provider=SQLOLEDB.1;Password=;User ID=sa;Initial Catalog=成绩;Data Source= localhost;\"\nIf ADOcn.State = adStateClosed Then ADOcn.Open '打开到数据库的连接\nEnd Sub\n完成本项工作后,就创建了一个全局变量ADOcn,但它是一个特殊的变量,其数据类型是数据连接对象(Connection对象)。可以把ADDcn理解成是一个虚拟的数据库。或者称为VB程序中的逻辑数据库,通过它可以非常方便地访问其中的数据。换句话说,ADOcn是VB程序的后台数据库交互的通道。\n2.设置窗体间的调用关系\n\n\n\n\n\n\n\n\n\n\n\n2.设置窗体间的调用关系\n’调用增加课程窗体\nPrivate Sub AddCourse_Click(Index As Integer)\n frmAddCourse.Show \nEnd Sub\n’调用增加成绩窗体\nPrivate Sub AddGrade_Click(Index As Integer)\n FrmAdd.Show \nEnd Sub\n’调用增加学生窗体\nPrivate Sub AddStudent_Click(Index As Integer)\n FrmAddStudent.Show \nEnd Sub\n’调用增加用户窗体\nPrivate Sub AddUser_Click()\n FrmAddUser.Show \nEnd Sub\n’调用删除课程窗体\nPrivate Sub DeleteCourse_Click()\n frmDeleteCourse.Show \nEnd Sub\n’调用删除成绩窗体\nPrivate Sub DeleteGrade_Click()\n frmDelete.Show \nEnd Sub\n’调用删除学生窗体\nPrivate Sub DeleteStudent_Click()\n frmDeleteStudent.Show \nEnd Sub\n’调用删除用户窗体\nPrivate Sub DeleteUser_Click()\n frmDeleteUser.Show \nEnd Sub\n’调用学生基本信息查询窗体\nPrivate Sub Querystudent_Click()\nfrmQuerystudent.Show \nEnd Sub\n’调用学生成绩查询窗体\nPrivate Sub QueryGrade_Click()\nfrmQueryGrade.Show \nEnd Sub’调用修改成绩窗体\nPrivate Sub Update_Click()\n FrmUpdate.Show \nEnd Sub\n调用退出程序\nPrivate Sub Exit_Click()\n End\nEnd Sub\n3.frmAddStudent (增加学生)窗体的代码设计:\n\n\n\n\n\n\n\n\n\n\nPrivate Sub Command1_Click()\nDim ADOrs As New Recordset '声明一个记录集对象\nDim strSQL As String\nADOrs.ActiveConnection = ADOcn '与ADOcn连接对象关联\n If Text1.Text = \"\" Then\n MsgBox \"未输入学号,请重新输入数据!\", vbCritical + vbOKOnly \n Text1.SetFocus '定位光标 \n Exit Sub\n End If\nIf Text2.Text = \"\" Then\n MsgBox \"未输入姓名,请重新输入数据!\", vbCritical + vbOKOnly \n Text2.SetFocus '定位光标 \n Exit Sub\nEnd If\n'首先查询表中是否存在关键字相同的记录\nstrSQL = \"select * from 学生情况表\"\nstrSQL = strSQL & \" Where 学号='\" + Text1.Text + \" '\"\nstrSQL = strSQL & \" and 姓名='\" + Text2.Text + \"'\"\nADOrs.Open strSQL \n'如果关键字重复,则退出\nIf Not ADOrs.EOF Then\n MsgBox \"该记录已经存在,不能继续增加\", vbCritical + vbOKOnly \n Exit Sub\nEnd If \n'拼写Insert插入语句\nstrSQL = \"Insert Into 学生情况表(学号,姓名)\"\nstrSQL = strSQL + \" Values('\" + Text1.Text + \"',\"\nstrSQL = strSQL + \"'\" + Text2.Text + \"'\" + \")\"\nADOcn.Execute strSQL '执行Insert语句\nText1.Text = \"“ '初始化文本框控件\nText2.Text = \"\"\n Text1.SetFocus '定位光标\nMsgBox \"已成功添加新记录\", vbQuestion + vbOKOnly \nADOrs.Close '关闭记录集\nSet ADOrs = Nothing\nEnd Sub \nPrivate Sub Command2_Click()\nUnload Me\nEnd Sub\n4.frmAddCourse (增加课程)窗体的代码设计:\n\n\n\n\n\n\n\n\n\n\n\n(1)在Load事件中,进行初始化工作,代码如下:\nPrivate Sub \u003Cem\u003EForm\u003C\u002Fem\u003E_Load()\n '初始化文本框控件\n Text1.Text = \"\"\n Text2.Text = \"\"\nEnd Sub\n(2)’Command1_Click()(”确定”按钮)事件代码\n Private Sub Command1_Click()\nDim ADOrs As New Recordset '声明一个记录集对象\nDim strSQL As String\n '与ADOcn连接对象关联\nADOrs.ActiveConnection = ADOcn \n If Text1.Text = \"\" Then\n MsgBox \"未输入课程号,请重新输入数据!\", vbCritical + vbOKOnly \n Text1.SetFocus '定位光标\n Exit Sub\n End If\nIf Text2.Text = \"\" Then\n MsgBox \"未输入课程名,请重新输入数据!\", vbCritical + vbOKOnly \n Text2.SetFocus '定位光标\n Exit Sub\nEnd If\n’Command1_Click()(”确定”按钮)事件代码\n'首先查询表中是否存在关键字相同的记录 \nstrSQL = \"select * from 课程情况表\"\nstrSQL = strSQL & \" Where 课程号='\" + Text1.Text + \" '\"\nstrSQL = strSQL & \" and 课程名='\" + Text2.Text + \"'\"\nADOrs.Open strSQL \n'如果关键字重复,则退出 \nIf Not ADOrs.EOF Then\n MsgBox \"该记录已经存在,不能继续增加\", vbCritical + vbOKOnly \n Exit Sub\nEnd If \n’Command1_Click()(”确定”按钮)事件代码\n'拼写Insert插入语句\nstrSQL = \"Insert Into 学生情况表(学号,姓名)\"\nstrSQL = strSQL + \" Values('\" + Text1.Text + \"',\"\nstrSQL = strSQL + \"'\" + Text2.Text + \"'\" + \")\"\nADOcn.Execute strSQL '执行Insert语句\nText1.Text = \"“ '初始化文本框控件\nText2.Text = \"\"\n Text1.SetFocus '定位光标\nMsgBox \"已成功添加新记录\", vbQuestion + vbOKOnly \nADOrs.Close '关闭记录集\nSet ADOrs = Nothing\nEnd Sub \n(3)’Command2_Click()(”返回”按钮)事件代码 \nPrivate Sub Command2_Click()\nUnload Me\nEnd Sub\n5.frmAddGrade(增加成绩)窗体的代码设计:\n\n\n\n\n\n\n\n\n\n\n\n\n\n(1)在Load事件中,进行初始化工作,代码如下:\nPrivate Sub \u003Cem\u003EForm\u003C\u002Fem\u003E_Load()\nDim ADOrs As New Recordset '声明记录集对象\nADOrs.ActiveConnection = ADOcn '与ADOcn连接对象关联\n'对Combo1组合框进行初始化\nADOrs.Open \"Select 学号 From 学生情况表 Order By 学号\"\nCombo1.Clear\nDo While Not ADOrs.EOF\nCombo1.AddItem Trim(ADOrs.Fields(\"学号\")) '添加\"学号\"字段值\nADOrs.MoveNext '取下一条记录\nLoop\nADOrs.Close '关闭记录集\n(1)Load事件代码\n'对Combo2组合框进行初始化\nADOrs.Open \"select 课程号 from 课程情况表 Order By 课程号\"\nCombo2.Clear\nDo While Not ADOrs.EOF\nCombo2.AddItem Trim(ADOrs.Fields(\"课程号\")) '添加\"课程号\"字段值 \nADOrs.MoveNext '取下一条记录 \nLoop\nADOrs.Close '关闭记录集 \n'初始化文本框控件 \nText1.Text = \"\"\nText2.Text = \"\"\nText3.Text = \"0\"\nEnd Sub\n(2) Combo1_Click 事件代码\nPrivate Sub Combo1_Click()\nDim ADOrs As New Recordset '声明一个记录集对象\nADOrs.ActiveConnection = ADOcn '与ADOcn连接对象关联\n'如果输入了学号,则把姓名显示在Text1.Text\nstrSQL = \"select * from 学生情况表\"\nstrSQL = strSQL + \" Where 学号='\" + Combo1.Text + \" '\"\nADOrs.Open strSQL \nText1.Text = ADOrs.Fields(\"姓名\")\nADOrs.Close '关闭记录集\nSet ADOrs = Nothing\nEnd Sub\n(3) Combo2_Click 事件代码\nPrivate Sub Combo2_Click()\nDim ADOrs As New Recordset '声明一个记录集对象\nADOrs.ActiveConnection = ADOcn '与ADOcn连接对象关联\n'如果输入了课程号,则把课程名显示在Text2.text\nstrSQL = \"select * from 课程情况表\"\nstrSQL = strSQL + \" Where 课程号='\" + Combo2.Text + \" '\"\nADOrs.Open strSQL\nText2.Text = ADOrs.Fields(\"课程名\")\nADOrs.Close '关闭记录集\nSet ADOrs = Nothing\nEnd Sub\n(4) Command1_Click(确认) 事件代码\nPrivate Sub Command1_Click()\nDim strSQL As String\nDim ADOrs As New Recordset '声明一个记录集对象\nADOrs.ActiveConnection = ADOcn '与ADOcn连接对象关联\n'检查学号与课程号是否输入\nIf Combo1.Text = \"\" Or Combo2.Text = \"\" Then\n MsgBox \"输入数据不全,请重新输入数据!\", vbCritical + vbOKOnly \nExit Sub\nEnd If\n'首先查询表中是否存在关键字相同的记录\nstrSQL = \"select * from 学生成绩表\"\nstrSQL = strSQL & \" Where 学号='\" + Combo1.Text + \" '\"\nstrSQL = strSQL & \" and 课程号='\" + Combo2.Text + \"'\"\nADOrs.Open strSQL \n'如果关键字重复,则退出\nIf Not ADOrs.EOF Then\n MsgBox \"该记录已经存在,不能继续增加\", vbCritical + vbOKOnly \n Exit Sub\nEnd If \n(4) Command1_Click(确认) 事件代码\n '拼写Insert插入语句 \nstrSQL = \"Insert Into 学生成绩表(学号,课程号,成绩)\"\nstrSQL = strSQL + \"Values('\" + Combo1.Text + \"','\"\nstrSQL = strSQL + Combo2.Text + \"',\" + Str(Val(Text3.Text)) + \")\"\nADOcn.Execute strSQL '执行Insert语句 \nMsgBox \"已成功添加新记录\", vbQuestion + vbOKOnly \n'初始化文本框控件 \nText1.Text = \"\"\nText2.Text = \"\"\nText3.Text = \"0\"\nADOrs.Close '关闭记录集 \nSet ADOrs = Nothing\nEnd Sub \n(5) Command2_Click(返回) 事件代码\nPrivate Sub Command2_Click()\nUnload Me\nEnd Sub \n6.frmAddUser(增加用户)代码设计\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n(1)在Load事件中,进行初始化工作,代码如下: \nPrivate Sub \u003Cem\u003EForm\u003C\u002Fem\u003E_Load()\n '初始化文本框控件\n Text1.Text = \"\"\n Text2.Text = \"\"\n Text3.Text = \"\"\nEnd Sub\n(2) Command1_Click(确认) 事件代码\nPrivate Sub Command1_Click()\nDim strSQL As String\nDim ADOrs As New Recordset '声明一个记录集对象\nADOrs.ActiveConnection = ADOcn '与ADOcn连接对象关联\n'记录已输入的用户信息\nUserName = Text1.Text\nPaasWord = Text2.Text\nPaasWord1 = Text3.Text\n'若 Text1.Text 或Text2.Text或Text3.Text为空则提示用户重新输入\nIf Text1.Text = \"\" Or Text2.Text = \"\" Or Text3.Text = \"\" Then\n MsgBox \"未输入用户名、密码或密码确认,请重新输入!\", vbCritical + vbOKOnly \n Exit Sub\nEnd If\n'若 两此输入密码不一致则提示用户重新输入\nIf PaasWord PaasWord1 Then\n MsgBox \"两次输入的密码不一致,请重新输入!\", vbCritical + vbOKOnly \n Text2.Text = \"\"\n Text3.Text = \"\"\n Text2.SetFocus\n Exit Sub\nEnd If\n '首先查询用户中是否存在相同的记录\nstrSQL = \"Select * From 用户\"\nstrSQL = strSQL + \" Where 用户名='\" + UserName + \"'\"\nADOrs.Open strSQL \nIf Not ADOrs.EOF Then '如果关键字重复,则退出\n MsgBox \"该用户已经存在,请重新注册\", vbCritical + vbOKOnly \n Exit Sub\nEnd If\n'拼写Insert插入语句\nstrSQL = \"Insert Into 用户(用户名,密码)\"\nstrSQL = strSQL + \" Values('\" + UserName + \"','\" + PaasWord + \"')\"\nADOcn.Execute strSQL '执行Insert语句\nMsgBox \"已成功添加新记录\", vbQuestion + vbOKOnly \nADOrs.Close '关闭记录集\nSet ADOrs = Nothing\nEnd Sub\n(3) Command2_Click(返回) 事件代码 \nPrivate Sub Command2_Click()\nUnload Me\nEnd Sub \n7.frmUpdata (修改成绩)窗体代码设计\n\n\n\n\n\n\n\n\n\n\n\n(1)、在Load事件中,进行初始化工作,代码如下:\nPrivate Sub \u003Cem\u003EForm\u003C\u002Fem\u003E_Load()\nDim ADOrs As New Recordset '声明记录集对象\nADOrs.ActiveConnection = ADOcn '与ADOcn连接对象关联\n'对Combo1组合框进行初始化\nADOrs.Open \"Select 学号 From 学生情况表 Order By 学号\"\nCombo1.Clear\nDo While Not ADOrs.EOF\nCombo1.AddItem Trim(ADOrs.Fields(\"学号\")) '添加\"学号\"字段值\nADOrs.MoveNext '取下一条记录\nLoop\nADOrs.Close '关闭记录集\n(1)、\u003Cem\u003EForm\u003C\u002Fem\u003E_Load()事件代码\n '对Combo2组合框进行初始化\nADOrs.Open \"select 课程号 from 课程情况表 Order By 课程号\"\nCombo2.Clear\nDo While Not ADOrs.EOF\nCombo2.AddItem Trim(ADOrs.Fields(\"课程号\")) '添加\"课程号\"字段值 \nADOrs.MoveNext '取下一条记录 \nLoop\nADOrs.Close '关闭记录集 \n'初始化文本框控件 \nText1.Text = \"\"\nText2.Text = \"\"\nText3.Text = \"0\"\nEnd Sub\n(2) Combo1_Click 事件代码\nPrivate Sub Combo1_Click()\nDim ADOrs As New Recordset '声明一个记录集对象\nADOrs.ActiveConnection = ADOcn '与ADOcn连接对象关联\n'如果输入了学号,则把姓名显示在Text1.Text\nstrSQL = \"select * from 学生情况表\"\nstrSQL = strSQL + \" Where 学号='\" + Combo1.Text + \" '\"\nADOrs.Open strSQL \nText1.Text = ADOrs.Fields(\"姓名\")\nADOrs.Close '关闭记录集\n(2) Combo1_Click 事件代码\nIf Combo2 \"\" Then '输入完毕则显示成绩信息\n'查询学生成绩表中是否有指定指定学号与课程号的记录\nstrSQL = \"select * from 学生成绩表\"\nstrSQL = strSQL & \" Where 学号='\" + Combo1.Text + \" '\"\nstrSQL = strSQL & \" and 课程号='\" + Combo2.Text + \"'\"\nADOrs.Open strSQL \n If ADOrs.EOF Then\n MsgBox \"学生成绩表在不存在学号为\" + Combo1.Text + \"课程号为\" + Combo2.Text + \"的记录,请重新输入!\", vbCritical + vbOKOnly \n Text1.Text = \"\"\n Text3.Text = \"\"\n Exit Sub\n Else\n Text3.Text = ADOrs.Fields(\"成绩\")\n End If\nEnd If\nIf ADOrs.State = adStateOpen Then ADOrs.Close '关闭记录集\nSet ADOrs = Nothing\nEnd Sub \n(3) Combo2_Click 事件代码\nPrivate Sub Combo2_Click()\nDim ADOrs As New Recordset '声明一个记录集对象\nADOrs.ActiveConnection = ADOcn '与ADOcn连接对象关联\n'如果输入了课程号,则把课程名显示在Text2.text\nstrSQL = \"select * from 课程情况表\"\nstrSQL = strSQL + \" Where 课程号='\" + Combo2.Text + \" '\"\nADOrs.Open strSQL \nText2.Text = ADOrs.Fields(\"课程名\")\nADOrs.Close '关闭记录集\n(3) Combo2_Click 事件代码\nIf Combo1 \"\" Then '输入完毕则显示成绩信息 \n'查询学生成绩表中是否有指定指定学号与课程号的记录 \nstrSQL = \"select * from 学生成绩表\"\nstrSQL = strSQL & \" Where 学号='\" + Combo1.Text + \" '\"\nstrSQL = strSQL & \" and 课程号='\" + Combo2.Text + \"'\"\nADOrs.Open strSQL \n If ADOrs.EOF Then\n MsgBox \"学生成绩表在不存在学号为\" + Combo1.Text + \"课程号为\" + Combo2.Text + \"的记录,请重新输入!\", vbCritical + vbOKOnly \n Text2.Text = \"\"\n Text3.Text = \"\"\n Exit Sub\n Else\n Text3.Text = ADOrs.Fields(\"成绩\")\n End If\nEnd If\nIf ADOrs.State = adStateOpen Then ADOrs.Close '关闭记录集 \nSet ADOrs = Nothing\nEnd Sub \n(4)、 Command1_Click()(修改\u002F确认按钮)事件代码\nPrivate Sub Command1_Click()\nDim strSQL As String\nDim ADOrs As New Recordset '声明一个记录集对象\nADOrs.ActiveConnection = ADOcn '与ADOcn连接对象关联\n'检查学号与课程号是否输入\nIf Combo1.Text = \"\" Or Combo2.Text = \"\" Then\n MsgBox \"输入数据不全,请重新输入数据!\", vbCritical + vbOKOnly \nExit Sub\nEnd If\n(4)、 Command1_Click()(修改\u002F确认按钮)事件代码 \n'根据当前按钮文字的不同进行相关处理\nIf Command1.Caption = \"修改\" Then\nCommand1.Caption = \"确认\"\nCommand2.Caption = \"放弃\"\nElse\nCommand1.Caption = \"修改\"\nCommand2.Caption = \"返回\"\n'拼写Update语句,以便进行修改\nstrSQL = \"Update 学生成绩表\"\nstrSQL = strSQL + \" Set 成绩=\" + Text3.Text\nstrSQL = strSQL + \" Where 学号='\" + Combo1.Text + \"'\"\nstrSQL = strSQL + \" And 课程号='\" + Combo2.Text + \" '\"\nADOcn.Execute strSQL '执行Updata语句\nMsgBox \"修改成功!\", vbQuestion + vbOKOnly \nEnd If\nIf ADOrs.State = adStateOpen Then ADOrs.Close '关闭记录集\nSet ADOrs = Nothing\nEnd Sub\n(5) Command2_Click(返回\u002F放弃) 事件代码\nPrivate Sub Command2_Click()\nIf Command2.Caption = \"返回\" Then\n Unload Me\nElse\n Command2.Caption = \"返回\"\n Command1.Caption = \"修改\"\nEnd If\nEnd Sub\n8.frmDeleteStudent (删除学生)窗体的代码设计\n\n\n\n\n\n\n\n\n\n\n(1)、\u003Cem\u003EForm\u003C\u002Fem\u003E_Load()事件代码\nPrivate Sub \u003Cem\u003EForm\u003C\u002Fem\u003E_Load()\nDim ADOrs As New Recordset '声明记录集对象\nADOrs.ActiveConnection = ADOcn '与ADOcn连接对象关联\n'对Combo1组合框进行初始化\nADOrs.Open \"select 学号 from 学生情况表 Order By 学号\"\nCombo1.Clear\nDo While Not ADOrs.EOF\n Combo1.AddItem Trim(ADOrs.Fields(\"学号\")) '添加\"学号\"字段值\n ADOrs.MoveNext '取下一条记录\nLoop\nADOrs.Close '关闭记录集\n'对Combo2组合框进行初始化\nADOrs.Open \"select 姓名 from 学生情况表 Order By 学号\"\nCombo2.Clear\nDo While Not ADOrs.EOF\n Combo2.AddItem Trim(ADOrs.Fields(\"姓名\")) '添加\"姓名\"字段值\n ADOrs.MoveNext '取下一条记录\nLoop\nADOrs.Close '关闭记录集\nEnd Sub \n(2) Combo1_Click 事件代码 \nPrivate Sub Combo1_Click()\nDim ADOrs As New Recordset '声明一个记录集对象 \nADOrs.ActiveConnection = ADOcn '与ADOcn连接对象关联 \n'若选择了学号则将姓名自动填写到Combo2.Text\nADOrs.Open \"Select 姓名 From 学生情况表 Where 学号 ='\" + Combo1.Text + \"'\"\n If ADOrs.EOF Then\n MsgBox \"学生情况表中没有学号为\" + Combo1.Text + \"的记录,请重新输入!\", vbQuestion + vbOKOnly \n Combo1.Text = \"\"\n Exit Sub\n Else\n Combo2.Text = ADOrs.Fields(\"姓名\")\n End If\nADOrs.Close '关闭记录集 \nEnd Sub \n(3) Combo2_Click 事件代码 \n Private Sub Combo2_Click()\nDim ADOrs As New Recordset '声明一个记录集对象 \nADOrs.ActiveConnection = ADOcn '与ADOcn连接对象关联 \n'若选择了姓名则将学号自动填写到Combo1.Text\nADOrs.Open \"Select 学号 From 学生情况表 Where 姓名 ='\" + Combo2.Text + \"'\"\n If ADOrs.EOF Then\n MsgBox \"学生情况表中没有姓名为\" + Combo2.Text + \"的记录,请重新输入!\", vbQuestion + vbOKOnly \n Combo1.Text = \"\"\n Exit Sub\n Else\n Combo1.Text = ADOrs.Fields(\"学号\")\n End If\nADOrs.Close '关闭记录集 \nEnd Sub \n(4)、 Command1_Click()(确定按钮)事件代码 \nPrivate Sub Command1_Click()\nDim ADOrs As New Recordset '声明记录集对象 \nDim ADOrs1 As New Recordset '声明记录集对象 \nADOrs.ActiveConnection = ADOcn '与ADOcn连接对象关联 \nADOrs1.ActiveConnection = ADOcn '与ADOcn连接对象关联 \n'若学号和姓名同时为空则提示用户重新输入 \nIf Combo1.Text = \"\" And Combo2.Text = \"\" Then\n MsgBox \"学号和姓名不能同时为空,请重新输入!\", vbQuestion + vbOKOnly \n Exit Sub\nEnd If\n(4)、 Command1_Click()(确定按钮)事件代码 \n'若输入了学号则将姓名自动填写到Combo2.Text\nIf Combo1.Text \"\" And Combo2.Text = \"\" Then\n ADOrs.Open \"Select 姓名 From 学生情况表 Where 学号 ='\" + Combo1.Text + \"'\"\n If ADOrs.EOF Then\n MsgBox \"学生情况表中没有学号为\" + Combo1.Text + \"的记录,请重新输入!\", vbQuestion + vbOKOnly \n Combo1.Text = \"\"\n Exit Sub\n Else\n Combo2.Text = ADOrs.Fields(\"姓名\")\n End If\n If ADOrs.State = adStateOpen Then ADOrs.Close '关闭记录集 \n End If \n(4)、 Command1_Click()(确定按钮)事件代码 \n'若输入了号姓名则将学号自动填写到Combo1.Text\nIf Combo2.Text \"\" And Combo1.Text = \"\" Then\n ADOrs1.Open \"Select 学号 From 学生情况表 Where 姓名='\" + Combo2.Text + \"'\"\n If ADOrs1.EOF Then\n MsgBox \"学生情况表中没有姓名为\" + Combo2.Text + \"的记录,请重新输入!\", vbQuestion + vbOKOnly \n Combo2.Text = \"\"\n Exit Sub\n Else\n Combo1.Text = ADOrs1.Fields(\"学号\")\n End If\n If ADOrs1.State = adStateOpen Then ADOrs1.Close '关闭记录集 \n End If\n'查询学生情况表中是否有指定学号和指定姓名的记录\n If Combo1.Text \"\" And Combo2.Text \"\" Then\n ADOrs.Open \"Select * From 学生情况表 Where 学号='\" + Combo1.Text + \"'\" + \" And 姓名='\" + Combo2.Text + \"'\"\n If ADOrs.EOF Then\n MsgBox \"学生情况表中没有学号为\" + Combo1.Text + \"且姓名为\" + Combo2.Text + \"的记录,请重新输入!\", vbQuestion + vbOKOnly \n Combo1.Text = \"\"\n Combo2.Text = \"\"\n Exit Sub\n Else\n Combo1.Text = ADOrs.Fields(\"学号\")\n Combo2.Text = ADOrs.Fields(\"姓名\")\n End If\n If ADOrs.State = adStateOpen Then ADOrs.Close '关闭记录集\nEnd If\nEnd Sub\n(5)、 Command2_Click()(确认按钮)事件代码 \nPrivate Sub Command2_Click()\nDim xm As String\nDim xh As String\nDim strSQL As String\nDim ADOrs As New Recordset '声明记录集对象 \nADOrs.ActiveConnection = ADOcn '与ADOcn连接对象关联 \n'如果学号与姓名同时为空则提示重新输入\u002F选择 \nIf Combo1.Text = \"\" Or Combo2.Text = \"\" Then\n MsgBox \"学号和姓名不能为空,请重新输入!\", vbQuestion + vbOKOnly \nElse\n xh = Combo1.Text \n xm = Combo2.Text\n If MsgBox(\"删除学号为\" + xh + \"姓名为\" + xm + \"的学生记录,该学生在学生成绩表中的全部记录也将一起删除,是否继续?\", vbQuestion + vbYesNo) = vbYes Then\n'拼写Delete学生成绩表指定记录语句 \n strSQL = \"Delete From 学生成绩表\"\n strSQL = strSQL + \" Where 学号='\" + Combo1.Text + \"'\"\n ADOcn.Execute strSQL '执行Delete语句 \n '拼写Delete学生情况表指定记录语句 \n strSQL = \"Delete From 学生情况表\"\n strSQL = strSQL + \" Where 学号='\" + Combo1.Text + \"'\"\n ADOcn.Execute strSQL '执行Delete语句 \n MsgBox \"删除成功!\", vbQuestion + vbOKOnly \n Combo1.Text = \"\"\n Combo2.Text = \"\"\n End If\nEnd If\nIf ADOrs.State = adStateOpen Then ADOrs.Close '关闭记录集 \nEnd Sub \n(6)、 Command3_Click()(返回按钮)事件代码 \nPrivate Sub Command3_Click()\n Unload Me\nEnd Sub\n9. frmDeleteCourse(删除课程)窗体代码设计\n(1)、\u003Cem\u003EForm\u003C\u002Fem\u003E_Load()事件代码\nPrivate Sub \u003Cem\u003EForm\u003C\u002Fem\u003E_Load()\nDim ADOrs As New Recordset '声明记录集对象\nADOrs.ActiveConnection = ADOcn '与ADOcn连接对象关联\n'对Combo1组合框进行初始化\nADOrs.Open \"select 课程号 from 课程情况表 Order By 课程号\"\nCombo1.Clear\nDo While Not ADOrs.EOF\n Combo1.AddItem Trim(ADOrs.Fields(\"课程号\")) '添加\"课程号\"字段值\n ADOrs.MoveNext '取下一条记录\nLoop\nADOrs.Close '关闭记录集\n'对Combo2组合框进行初始化\nADOrs.Open \"select 课程名 from 课程情况表 Order By 课程号\"\nCombo2.Clear\nDo While Not ADOrs.EOF\n Combo2.AddItem Trim(ADOrs.Fields(\"课程名\")) '添加\"课程名\"字段值\n ADOrs.MoveNext '取下一条记录\nLoop\nADOrs.Close '关闭记录集\nEnd Sub\n(2) Combo1_Click 事件代码 \nPrivate Sub Combo1_Click()\nDim ADOrs As New Recordset '声明一个记录集对象\nADOrs.ActiveConnection = ADOcn '与ADOcn连接对象关联\n'若选择了课程号则将课程名自动填写到Combo2.Text\nADOrs.Open \"Select 课程名 From 课程情况表 Where 课程号 ='\" + Combo1.Text + \"'\"\n If ADOrs.EOF Then\n MsgBox \"课程情况表中没有课程号为\" + Combo1.Text + \"的记录,请重新输入!\", vbQuestion + vbOKOnly \n Combo1.Text = \"\"\n Exit Sub\n Else\n Combo2.Text = ADOrs.Fields(\"课程名\")\n End If\nADOrs.Close '关闭记录集\nEnd Sub \n(3) Combo2_Click 事件代码 \nPrivate Sub Combo2_Click()\nDim ADOrs As New Recordset '声明一个记录集对象\nADOrs.ActiveConnection = ADOcn '与ADOcn连接对象关联\n'若选择了课程名则将课程号自动填写到Combo1.Text\nADOrs.Open \"Select 课程号 From 课程情况表 Where 课程名 ='\" + Combo2.Text + \"'\"\n If ADOrs.EOF Then\n MsgBox \"课程情况表中没有课程名为\" + Combo2.Text + \"的记录,请重新输入!\", vbQuestion + vbOKOnly \n Combo1.Text = \"\"\n Exit Sub\n Else\n Combo1.Text = ADOrs.Fields(\"课程号\")\n End If\nADOrs.Close '关闭记录集\nEnd Sub\n(4)、 Command1_Click()(确定按钮)事件代码 \nPrivate Sub Command1_Click()\nDim ADOrs As New Recordset '声明记录集对象\nDim ADOrs1 As New Recordset '声明记录集对象\nADOrs.ActiveConnection = ADOcn '与ADOcn连接对象关联\nADOrs1.ActiveConnection = ADOcn '与ADOcn连接对象关联\n'若课程号和课程名同时为空则提示用户重新输入\nIf Combo1.Text = \"\" And Combo2.Text = \"\" Then\n MsgBox \"课程号和课程名不能同时为空,请重新输入!\", vbQuestion + vbOKOnly \n Exit Sub\nEnd If \n(4)、 Command1_Click()(确定按钮)事件代码 \n'若输入了课程号则将课程名自动填写到Combo2.Text\nIf Combo1.Text \"\" And Combo2.Text = \"\" Then\n ADOrs.Open \"Select 课程名 From 课程情况表 Where 课程号 ='\" + Combo1.Text + \"'\"\n If ADOrs.EOF Then\n MsgBox \"课程情况表中没有课程号为\" + Combo1.Text + \"的记录,请重新输入!\", vbQuestion + vbOKOnly \n Combo1.Text = \"\"\n Exit Sub\n Else\n Combo2.Text = ADOrs.Fields(\"课程名\")\n End If\n If ADOrs.State = adStateOpen Then ADOrs.Close '关闭记录集\n End If\n(4)、 Command1_Click()(确定按钮)事件代码\n'若输入了课程名则将课程号自动填写到Combo1.Text\nIf Combo2.Text \"\" And Combo1.Text = \"\" Then\n ADOrs1.Open \"Select 课程号 From 课程情况表 Where 课程名='\" + Combo2.Text + \"'\"\n If ADOrs1.EOF Then\n MsgBox \"课程情况表中没有课程名为\" + Combo2.Text + \"的记录,请重新输入!\", vbQuestion + vbOKOnly \n Combo2.Text = \"\"\n Exit Sub\n Else\n Combo1.Text = ADOrs1.Fields(\"课程号\")\n End If\n If ADOrs1.State = adStateOpen Then ADOrs1.Close '关闭记录集\n End If\n(4)、 Command1_Click()(确定按钮)事件代码\n'查询课程情况表中是否有指定课程号和指定课程名的记录\n If Combo1.Text \"\" And Combo2.Text \"\" Then\n ADOrs.Open \"Select * From 课程情况表 Where 课程号='\" + Combo1.Text + \"'\" + \" And 课程名='\" + Combo2.Text + \"'\"\n If ADOrs.EOF Then\n MsgBox \"课程情况表中没有课程号为\" + Combo1.Text + \"且课程名为\" + Combo2.Text + \"的记录,请重新输入!\", vbQuestion + vbOKOnly \n Combo1.Text = \"\"\n Combo2.Text = \"\"\n Exit Sub\n Else\n Combo1.Text = ADOrs.Fields(\"课程号\")\n Combo2.Text = ADOrs.Fields(\"课程名\")\n End If\n If ADOrs.State = adStateOpen Then ADOrs.Close '关闭记录集\nEnd If\nEnd Sub\n(5)、 Command2_Click()(确认按钮)事件代码 \n \nPrivate Sub Command2_Click()\nDim xm As String\nDim xh As String\nDim strSQL As String\nDim ADOrs As New Recordset '声明记录集对象 \nADOrs.ActiveConnection = ADOcn '与ADOcn连接对象关联 \n'如果课程号与课程名同时为空则提示重新输入\u002F选择 \nIf Combo1.Text = \"\" Or Combo2.Text = \"\" Then\n MsgBox \"课程号和课程名不能为空,请重新输入!\", vbQuestion + vbOKOnly \nElse\n xh = Combo1.Text\n xm = Combo2.Text\n If MsgBox(\"删除课程号为\" + xh + \"课程名为\" + xm + \"的课程记录,该课程在学生成绩表中的全部记录也将一起删除,是否继续?\", vbQuestion + vbYesNo) = vbYes Then \n(5)、 Command2_Click()(确认按钮)事件代码 \n \n'拼写Delete学生成绩表指定记录语句\n strSQL = \"Delete From 学生成绩表\"\n strSQL = strSQL + \" Where 课程号='\" + Combo1.Text + \"'\"\n ADOcn.Execute strSQL '执行Delete语句\n '拼写Delete课程情况表指定记录语句\n strSQL = \"Delete From 课程情况表\"\n strSQL = strSQL + \" Where 课程号='\" + Combo1.Text + \"'\"\n ADOcn.Execute strSQL '执行Delete语句\n MsgBox \"删除成功!\", vbQuestion + vbOKOnly \n Combo1.Text = \"\"\n Combo2.Text = \"\"\n End If\nEnd If\nIf ADOrs.State = adStateOpen Then ADOrs.Close '关闭记录集\nEnd Sub\n(6)、 Command3_Click()(返回按钮)事件代码\nPrivate Sub Command3_Click()\n Unload Me\nEnd Sub\n10. frmDeleteGrade (删除成绩)窗体代码设计\n(1)、\u003Cem\u003EForm\u003C\u002Fem\u003E_Load()事件代码\nPrivate Sub \u003Cem\u003EForm\u003C\u002Fem\u003E_Load()\nDim ADOrs As New Recordset '声明记录集对象\nADOrs.ActiveConnection = ADOcn '与ADOcn连接对象关联\n'对Combo1组合框进行初始化\nADOrs.Open \"Select 学号 From 学生情况表 Order By 学号\"\nCombo1.Clear\nDo While Not ADOrs.EOF\nCombo1.AddItem Trim(ADOrs.Fields(\"学号\")) '添加\"学号\"字段值\nADOrs.MoveNext '取下一条记录\nLoop\nADOrs.Close '关闭记录集\n'对Combo2组合框进行初始化\nADOrs.Open \"select 课程号 from 课程情况表 Order By 课程号\"\nCombo2.Clear\nDo While Not ADOrs.EOF\nCombo2.AddItem Trim(ADOrs.Fields(\"课程号\")) '添加\"课程号\"字段值\nADOrs.MoveNext '取下一条记录\nLoop\nADOrs.Close '关闭记录集\n'End Sub\n(2) Combo1_Click 事件代码\nPrivate Sub Combo1_Click()\nDim ADOrs As New Recordset '声明一个记录集对象\nADOrs.ActiveConnection = ADOcn '与ADOcn连接对象关联\n'如果输入了学号,则把姓名显示在Text1.Text\nstrSQL = \"select * from 学生情况表\"\nstrSQL = strSQL + \" Where 学号='\" + Combo1.Text + \" '\"\nADOrs.Open strSQL \nText1.Text = ADOrs.Fields(\"姓名\")\nADOrs.Close '关闭记录集\n(2) Combo1_Click 事件代码(续)\nIf Combo2 \"\" Then '输入完毕则显示成绩信息\n'查询学生成绩表中是否有指定指定学号与课程号的记录\nstrSQL = \"select * from 学生成绩表\"\nstrSQL = strSQL & \" Where 学号='\" + Combo1.Text + \" '\"\nstrSQL = strSQL & \" and 课程号='\" + Combo2.Text + \"'\"\nADOrs.Open strSQL \n If ADOrs.EOF Then\n MsgBox \"学生成绩表在不存在学号为\" + Combo1.Text + \"课程号为\" + Combo2.Text + \"的记录,请重新输入!\", vbCritical + vbOKOnly \n Text1.Text = \"\"\n Text3.Text = \"\"\n Exit Sub\n Else\n Text3.Text = ADOrs.Fields(\"成绩\")\n End If\nEnd If\nIf ADOrs.State = adStateOpen Then ADOrs.Close '关闭记录集\nSet ADOrs = Nothing\nEnd Sub\n(3) Combo2_Click 事件代码\nPrivate Sub Combo2_Click()\nDim ADOrs As New Recordset '声明一个记录集对象\nADOrs.ActiveConnection = ADOcn '与ADOcn连接对象关联\n'如果输入了课程号,则把课程名显示在Text2.text\nstrSQL = \"select * from 课程情况表\"\nstrSQL = strSQL + \" Where 课程号='\" + Combo2.Text + \" '\"\nADOrs.Open strSQL \nText2.Text = ADOrs.Fields(\"课程名\")\nADOrs.Close '关闭记录集\n(3) Combo2_Click 事件代码(续)\nIf Combo1 \"\" Then '输入完毕则显示成绩信息 \n'查询学生成绩表中是否有指定指定学号与课程号的记录 \nstrSQL = \"select * from 学生成绩表\"\nstrSQL = strSQL & \" Where 学号='\" + Combo1.Text + \" '\"\nstrSQL = strSQL & \" and 课程号='\" + Combo2.Text + \"'\"\nADOrs.Open strSQL \n If ADOrs.EOF Then\n MsgBox \"学生成绩表在不存在学号为\" + Combo1.Text + \"课程号为\" + Combo2.Text + \"的记录,请重新输入!\", vbCritical + vbOKOnly \n Text2.Text = \"\"\n Text3.Text = \"\"\n Exit Sub\n Else\n Text3.Text = ADOrs.Fields(\"成绩\")\n End If\nEnd If\nIf ADOrs.State = adStateOpen Then ADOrs.Close '关闭记录集 \nSet ADOrs = Nothing\nEnd Sub\n(4)、 Command1_Click()(确定按钮)事件代码\nPrivate Sub Command1_Click()\nDim strSQL As String\nDim ADOrs As New Recordset '声明一个记录集对象\nADOrs.ActiveConnection = ADOcn '与ADOcn连接对象关联\nDim ADOrs1 As New Recordset '声明一个记录集对象\nADOrs1.ActiveConnection = ADOcn '与ADOcn连接对象关联\nDim ADOrs2 As New Recordset '声明一个记录集对象\nADOrs2.ActiveConnection = ADOcn '与ADOcn连接对象关联\n‘如果学号为空则提示用户重新输入\nIf Combo1.Text = \"\" Then\n MsgBox \"学号不能为空,请重新输入!\", vbQuestion + vbOKOnly \n Combo1.Text = \"\"\n Text1.Text = \"\"\n Exit Sub\nEnd If\n(4)、 Command1_Click()(确定按钮)事件代码---续\n'如果课程号为空则提示拥护重新输入\nIf Combo2.Text = \"\" Then\n MsgBox \"课程号不能为空,请重新输入!\", vbQuestion + vbOKOnly \n Combo2.Text = \"\"\n Text2.Text = \"\"\n Exit Sub\nEnd If\n'查询学生情况表中是否有指定学号的记录\nIf Combo1.Text \"\" Then\n ADOrs1.Open \"Select 姓名 From 学生情况表 Where 学号='\" + Combo1.Text + \"'\"\n If ADOrs1.EOF Then\n MsgBox “学生情况表中没有学号为” + Combo1.Text + “的记录,请重新输入!”, vbQuestion + vbOKOnly \n Combo1.Text = \"\"\n Text1.Text = \"\"\n Exit Sub\n Else '若有指定学号的学生记录,则将姓名字段值填写到text1\n Text1.Text = ADOrs1.Fields(\"姓名\")\n End If\nEnd If\n'查询课程情况表中是否有指定课程号的记录\nIf Combo2.Text \"\" Then\n ADOrs2.Open \"Select 课程名 From 课程情况表 Where 课程号='\" + Combo2.Text + \"'\"\n If ADOrs2.EOF Then\n MsgBox \"课程情况表中没有课程号为\" + Combo2.Text + \"的记录,请重新输入!\", vbQuestion + vbOKOnly \n Combo2.Text = \"\"\n Text2.Text = \"\"\n Exit Sub\n Else '若有指定课程号的课程记录,则将课程名字段值填写到text2\n Text2.Text = ADOrs2.Fields(\"课程名\")\n End If\nEnd If\n'查询学生表中是否有指定学号与课程号的记录\nIf Combo1 \"\" And Combo1 \"\" Then\n strSQL = \"select * from 学生成绩表\"\n strSQL = strSQL & \" Where 学号='\" + Combo1.Text + \" '\"\n strSQL = strSQL & \" and 课程号='\" + Combo2.Text + \"'\"\n ADOrs.Open strSQL \n If ADOrs.EOF Then\n MsgBox \"学生成绩表在不存在学号为\" + Combo1.Text + \"课程号为\" + Combo2.Text + \"的记录,请重新输入!\", vbCritical + vbOKOnly \n Combo1.Text = \"\"\n Combo2.Text = \"\"\n Text1.Text = \"\"\n Text2.Text = \"\"\n Text3.Text = \"\"\n Exit Sub\n Else\n Text3.Text = Val(ADOrs.Fields(\"成绩\"))\n End If\nEnd If\nEnd Sub\n5)、 Command2_Click()(确认按钮)事件代码\nPrivate Sub Command2_Click()\nIf MsgBox(\"是否要删除学号为\" + Combo1.Text + \"课程号为\" + Combo2.Text + \"的成绩记录?\", vbQuestion + vbYesNo) = vbYes Then\n '拼写Delete语句\n strSQL = \"Delete From 学生成绩表\"\n strSQL = strSQL + \" Where 学号='\" + Combo1.Text + \"'\"\n strSQL = strSQL + \" And 课程号='\" + Combo2.Text + \"'\"\n ADOcn.Execute strSQL '执行Delete语句\n Combo1.Text = \"\"\n Combo2.Text = \"\"\n Text1.Text = \"\"\n Text2.Text = \"\"\n Text3.Text = \"\"\n MsgBox \"删除成功!\", vbQuestion + vbOKOnly \nEnd If\nEnd Sub\n(6)、 Command3_Click()(返回按钮)事件代码\nPrivate Sub Command3_Click()\nUnload Me\nEnd Sub\n11. frmDeleteUser(删除用户)窗体代码设计\n(1)、 Command1_Click()(确定按钮)事件代码\nPrivate Sub Command1_Click()\n'定义变量,建立与数据库的连接\n Dim strSQL As String\n Dim ADOrs2 As New Recordset \n ADOrs2.ActiveConnection = ADOcn \n If Trim(Text1.Text) = \"\" Then\n MsgBox \"请输入用户名!\", , \"删除用户\"\n Text1.SetFocus\n Exit Sub\n End If\n If Trim(Text2.Text) = \"\" Then\n MsgBox \"请输入用户密码!\", , \"删除用户\"\n Text2.SetFocus\n Exit Sub\n End If \n'查询是否有指定用户名和密码的记录\n ADOrs2.Open \"Select * From 用户 Where 用户名='\" + Text1.Text + \"'\" + \" And 密码='\" + Text2.Text + \"'\"\n If ADOrs2.EOF Then\n MsgBox \"用户中没有名为:\" + Text1.Text + \" 密码为:\" + Text2.Text + \"的记录,请重新输入!\", vbQuestion + vbOKOnly \n Text1.Text = \"\"\n Text2.Text = \"\"\n Text1.SetFocus\n Else\n If MsgBox(\"是否删除用户名为“\" + Text1.Text + \"”密码为“\" + Text2.Text + \"”的用户记录?\", vbQuestion + vbYesNo) = vbYes Then\n '拼写Delete用户指定记录语句\n strSQL = \"Delete From 用户 Where 用户名='\" + Text1.Text + \"'\" + \" And 密码='\" + Text2.Text + \"'\"\n ADOcn.Execute strSQL '执行Delete语句\n MsgBox \"删除成功!\", vbQuestion + vbOKOnly \n Text1.Text = \"\"\n Text2.Text = \"\"\n Text1.SetFocus\n End If\n End If\nEnd Sub\n(2)、 Command2_Click()(返回按钮)事件代码\nPrivate Sub Command2_Click()\nUnload Me\nEnd Sub\n12. frmQuerystudent(学生基本信息查询)窗体代码设计\n使用ado数据控件与DataGrid数据绑定控件实现\n(1)、\u003Cem\u003EForm\u003C\u002Fem\u003E_Load()事件代码\nPrivate Sub \u003Cem\u003EForm\u003C\u002Fem\u003E_Load()\nCombo1.Text = \"全部学生\" '默认查询全部学生\nLabel2.Caption = \"全部学生数据浏览表格:\"\nLabel1.Visible = False\nText1.Visible = False\nEnd Sub\n说明:这里使用ado数据控件adodc1与DataGrid数据绑定控件DataGrid1,并已设置好adodc属性---查询数据库中的表格(学生情况表)。\n(2) Combo1_Click 事件代码 \nPrivate Sub Combo1_Click()\nSelect Case Combo1.ListIndex '根据选择的组合框项进行处理\nCase 0 '选择“全部学生”时隐藏提示信息\n strSQL = \"select * from 学生情况表\"\n Adodc1.CommandType = adCmdText \n Adodc1.RecordSource = strSQL \n Adodc1.Refresh\n Label2.Caption = \"全部学生数据浏览表格:“\n DataGrid1.Visible = True\n Label1.Visible = False\n Text1.Visible = False\nCase 1 '选择“按学号查询”时给出提示并定位光标\n Label1.Visible = True\n Text1.Visible = True\n Text1.SetFocus\n Label1.Caption = \"请输入学号并按回车键确认:\"\nCase 2 '选择“按姓名查询”时给出提示并定位光标\n Label1.Visible = True\n Text1.Visible = True\n Text1.SetFocus\n Label1.Caption = \"请输入姓名并按回车键确认:\"\nEnd Select\nEnd Sub\n(3) Text1_KeyPress 事件代码\nPrivate Sub Text1_KeyPress(KeyAscii As Integer)\nDim atrsql As String\nIf KeyAscii = 13 Then\nSelect Case Combo1.ListIndex '根据选择的组合框项进行处理\nCase 1 '选择“按学号查询”时\n strSQL = \"select * from 学生情况表 where 学号='\" & Trim(Text1.Text) & \"'\"\n Adodc1.CommandType = adCmdText \n Adodc1.RecordSource = strSQL \n Adodc1.Refresh\n If Adodc1.Recordset.EOF Then '没有找到时\n Label2.Caption = \"\"\n DataGrid1.Visible = False\n MsgBox \"没有该生记录信息,请检查你输入的学号是否正确!\"\n Else '找到时\n Label2.Caption = \"学号为\" & Text1.Text & \"的学生数据浏览表格:\"\n DataGrid1.Visible = True\n End If\n Text1.Text = \"\"\nCase 2 '选择“按姓名查询”时 \n strSQL = \"select * from 学生情况表 where 姓名='\" & Trim(Text1.Text) & \"'\"\n Adodc1.CommandType = adCmdText \n Adodc1.RecordSource = strSQL \n Adodc1.Refresh\n If Adodc1.Recordset.EOF Then '没有找到时 \n Label2.Caption = \"\"\n DataGrid1.Visible = False\n MsgBox \"没有该生记录信息,请检查你输入的姓名是否正确!\"\n Else '找到时 \n Label2.Caption = \"姓名为\" & Text1.Text & \"的学生数据浏览表格:\"\n DataGrid1.Visible = True\n End If\n Text1.Text = \"\"\nEnd Select\nEnd If\nEnd Sub\n(4) Command1_Click(返回按钮)事件代码\nPrivate Sub Command1_Click()\nUnload Me\nEnd Sub \n13. frmQueryGrade(学生成绩查询)窗体代码设计\n使用MSFlexGrid1控件(编程模型)实现\n(1)、\u003Cem\u003EForm\u003C\u002Fem\u003E_Load()事件代码\nPrivate Sub \u003Cem\u003EForm\u003C\u002Fem\u003E_Load()\nDim ADOrs As New Recordset '声明一个记录集对象\nADOrs.ActiveConnection = ADOcn '与ADOcn连接对象关联\nMSFlexGrid1.Visible = False '隐藏MSFlexGrid1控件\n'对Combo1组合框进行初始化\nADOrs.Open \"select 学号 from 学生情况表 Order By 学号\"\nCombo1.Clear\nDo While Not ADOrs.EOF\n Combo1.AddItem Trim(ADOrs.Fields(\"学号\")) '添加\"学号\"字段值\n ADOrs.MoveNext '取下一条记录\nLoop\nADOrs.Close '关闭记录集对象\nText1.Text = \"\"\nEnd Sub\n(2) Combo1_Click 事件代码 \nPrivate Sub Combo1_Click()\nDim ADOrs As New Recordset '声明一个记录集对象\nADOrs.ActiveConnection = ADOcn '与ADOcn连接对象关联\n'若选择了学号则将姓名自动填写到text1\nADOrs.Open \"Select 姓名 From 学生情况表 Where 学号 ='\" & Combo1.Text & \"'\"\n If ADOrs.EOF Then\n MsgBox \"学生情况表中没有学号为\" & Combo1.Text & \"的记录,请重新输入!\", vbQuestion & vbOKOnly \n Text1.Text = \"\"\n Else\n Text1.Text = ADOrs.Fields(\"姓名\")\n End If\nADOrs.Close '关闭记录集\nEnd Sub\n(3) Command1_Click(确定按钮)事件代码\nPrivate Sub Command1_Click()\nDim strSQL As String, strSQL2 As String\nDim strRecord As String\nDim ADOrs As New Recordset '声明记录集对象\nDim ADOrs2 As New Recordset \nADOrs.ActiveConnection = ADOcn '与ADOcn连接对象关联\nADOrs2.ActiveConnection = ADOcn \nstrSQL = \"select * from 学生情况表 Where 学号='\" & Combo1.Text & \" '\"\nADOrs.Open strSQL \nIf ADOrs.EOF Then\n MsgBox (\"数据库中找不到学号为\" & Combo1.Text & \"的记录,请重新输入!\")\n Combo1.Text = \"\"\n Text1.Text = \"\"\nElse\n Text1.Text = ADOrs.Fields(\"姓名\")\nEnd If\n'拼写Select语句 \nstrSQL2 = \"Select 学生成绩表.学号,学生成绩表.课程号,学生成绩表.成绩,\"\nstrSQL2 = strSQL2 & \"学生情况表.姓名,课程情况表.课程名\"\nstrSQL2 = strSQL2 & \" From 学生成绩表,学生情况表,课程情况表\"\nstrSQL2 = strSQL2 & \" Where 学生成绩表.学号=学生情况表.学号\"\nstrSQL2 = strSQL2 & \" And 学生成绩表.课程号=课程情况表.课程号\"\nstrSQL2 = strSQL2 & \" And 学生成绩表.学号= '\" & Combo1.Text & \"'\"\nADOrs2.Open strSQL2 '执行Select语句 \nIf ADOrs2.EOF = True Then\n MSFlexGrid1.Visible = False '隐藏MSFlexGrid1控件\n MsgBox \"没有该生成绩!\"\nElse\n '初始化MSFlexGrid表格 \n MSFlexGrid1.Rows = 0 '行数 \n MSFlexGrid1.Cols = 5 '列数 \n MSFlexGrid1.ColWidth(3) = 1500 '调节第4列宽度\n MSFlexGrid1.Visible = True '显示MSFlexGrid1控件\n '设置表格标题栏 \n strRecord = \"学号\" & vbTab & \"姓名\" & vbTab & \"课程号\"\n strRecord = strRecord & vbTab & \"课程名\" & vbTab & \"成绩\"\n MSFlexGrid1.AddItem strRecord \n'从第一条记录开始循环,直至表尾,填写表格内容 \n Do While Not ADOrs2.EOF\n '拼写表格内容 \n strRecord = Trim(ADOrs2.Fields(\"学号\")) & vbTab & Trim(ADOrs2.Fields(\"姓名\")) & vbTab \n strRecord = strRecord & Trim(ADOrs2.Fields(\"课程号\")) & vbTab & Trim(ADOrs2.Fields(\"课程名\"))\n strRecord = strRecord & vbTab & Trim(Str(ADOrs2.Fields(\"成绩\")))\n MSFlexGrid1.AddItem strRecord '向表格内添加行 \n ADOrs2.MoveNext '取下一条记录 \n Loop\nEnd If\nADOrs.Close '关闭记录集对象 \nADOrs2.Close '释放记录集对象 \nSet ADOrs = Nothing\nSet ADOrs2 = Nothing\nEnd Sub\n(4) Command2_Click(返回按钮)事件代码\nPrivate Sub Command2_Click()\nUnload Me\nEnd Sub \n14.身份验证窗体(frmlogin)代码设计\n1)、\u003Cem\u003EForm\u003C\u002Fem\u003E_Initialize()事件代码\nPrivate Sub \u003Cem\u003EForm\u003C\u002Fem\u003E_Initialize()\nADOcn.ConnectionString = \"Provider=Microsoft.Jet.OLEDB.4.0;Data Source=成绩.MDB\"\nIf ADOcn.State = adStateClosed Then ADOcn.Open '打开到数据库的连接\nEnd Sub\n2)、Command1_Click()事件代码—登录按钮\nPrivate Sub Command1_Click()\nDim ADOrs As New Recordset '声明记录集对象\nDim strSQL As String\nADOrs.ActiveConnection = ADOcn '与连接对象adocn关联\nIf Trim(Text1.Text) = \"\" Or Trim(Text2.Text) = \"\" Then '检验用户名与密码为空否\n MsgBox \"帐号和密码不能为空,请重新填写\", vbOKOnly + vbIn\u003Cem\u003Eform\u003C\u002Fem\u003Eation \nExit Sub\nEnd If\nstrSQL = \"select * from 用户 where 用户名='\" + Trim(Text1.Text) + \"'\"\nADOrs.Open strSQL '按用户名查询\nIf ADOrs.EOF Then '找不到该用户\n MsgBox \"用户不存在\", vbCritical + vbOKOnly \n Text1.Text = \"\"\n Text1.SetFocus\n Exit Sub\nElseIf Trim(Text2.Text) ADOrs.Fields(“密码”) Then ‘找到用户后检验密码\n MsgBox \"密码不正确\", vbOKOnly + vbIn\u003Cem\u003Eform\u003C\u002Fem\u003Eation \n Text2.Text = \"\"\n Text2.SetFocus\n Exit Sub\nEnd If\n'用户登录成功,记录用户类型参数\nusertype = ADOrs.Fields(\"用户类型\")\nUnload Me\nMDI\u003Cem\u003EForm\u003C\u002Fem\u003E1.Show '登录成功,打开MDI主窗体\nADOrs.Close \nSet ADOrs = Nothing\nEnd Sub\n3)、Command2_Click()事件代码—退出按钮\nPrivate Sub Command2_Click()\nADOcn.Close \nSet ADOcn = Nothing\nUnload Me\nEnd Sub \n4)、登录成功并打开MDI主窗体后,应根据人员类型设置菜单权限\nPrivate Sub MDI\u003Cem\u003EForm\u003C\u002Fem\u003E_Load()\n'根据人员类型设置菜单权限\nSelect Case usertype \n'Case \"管理员\"\nCase \"查询人员\"\n addmenu.Enabled = False\n deletemenu.Enabled = False\n Updata.Enabled = False\nEnd Select\nEnd Sub\n1.4 其他\n一、用户自定义函数的使用\n1、初始化窗体大小及显示座标函数\nPublic Sub init(frmname As Object, X As Integer, Y As Integer)\n frmname.Width = X\n frmname.Height = Y\n frmname.Left = (MDI\u003Cem\u003EForm\u003C\u002Fem\u003E1.Width - frmname.Width) \u002F 2\n frmname.Top = (MDI\u003Cem\u003EForm\u003C\u002Fem\u003E1.Height - frmname.Height) \u002F 2\nEnd Sub\n2、校验输入的文本框字符是否为数字或backspace回格键函数\n,’如果是则返回true,否则返回false \nPublic Function in_int(KeyAscii As Integer) As Boolean\nDim Accept_int(10) As String\n'可接受的字符数组 \nAccept_int(0) = \"0\"\nAccept_int(1) = \"1\"\nAccept_int(2) = \"2\"\nAccept_int(3) = \"3\"\nAccept_int(4) = \"4\"\nAccept_int(5) = \"5\"\nAccept_int(6) = \"6\"\nAccept_int(7) = \"7\"\nAccept_int(8) = \"8\"\nAccept_int(9) = \"9\"\nAccept_int(10) = Chr(8) 'Chr(8)是backspace键对应的字符 \nin_int = False\nFor i = 1 To 10 '检查输入的字符是否在数组中 \n If Chr(KeyAscii) = Accept_int(i) Then\n in_int = True\n End If\nNext i \nEnd Function","createTime":"2013-06-28 08:55:24","dataReportQuery":"spm=1035.2023.3001.6557&utm_medium=distribute.pc_relevant_bbs_down_v2.none-task-download-2~default~OPENSEARCH~Rate-3-5662747-bbs-40130372.264^v3^pc_relevant_bbs_down_v2_default&depth_1-utm_source=distribute.pc_relevant_bbs_down_v2.none-task-download-2~default~OPENSEARCH~Rate-3-5662747-bbs-40130372.264^v3^pc_relevant_bbs_down_v2_default","dataReportClick":"{\"mod\":\"popu_645\",\"index\":\"3\",\"dest\":\"https:\u002F\u002Fdownload.csdn.net\u002Fdownload\u002Fu011232654\u002F5662747\",\"strategy\":\"2~default~OPENSEARCH~Rate\",\"extra\":\"{\\\"utm_medium\\\":\\\"distribute.pc_relevant_bbs_down_v2.none-task-download-2~default~OPENSEARCH~Rate-3-5662747-bbs-40130372.264^v3^pc_relevant_bbs_down_v2_default\\\",\\\"dist_request_id\\\":\\\"1713450344599_25364\\\"}\",\"spm\":\"1035.2023.3001.6557\"}","dataReportView":"{\"mod\":\"popu_645\",\"index\":\"3\",\"dest\":\"https:\u002F\u002Fdownload.csdn.net\u002Fdownload\u002Fu011232654\u002F5662747\",\"strategy\":\"2~default~OPENSEARCH~Rate\",\"extra\":\"{\\\"utm_medium\\\":\\\"distribute.pc_relevant_bbs_down_v2.none-task-download-2~default~OPENSEARCH~Rate-3-5662747-bbs-40130372.264^v3^pc_relevant_bbs_down_v2_default\\\",\\\"dist_request_id\\\":\\\"1713450344599_25364\\\"}\",\"spm\":\"1035.2023.3001.6557\"}","type":"download"},{"url":"https:\u002F\u002Fdownload.csdn.net\u002Fdownload\u002Ffanshuzone\u002F196338","title":"cuteEditor6.0","desc":"\u003Cbr\u002F\u003ECuteEditor功能特点 \u003Cbr\u002F\u003E是什么使CuteEditor成为Html在线编辑器的领航者?除了其强大的功能和方便的使用, 这里还有一些顶尖的技术因素是CuteEditor编辑器成为你编辑和发布Web内容的最佳选择: \u003Cbr\u002F\u003E 界面简洁加载速度快 \u003Cbr\u002F\u003E\u003Cbr\u002F\u003E由于才有了很多优化方法,所以CuteEditor非常\u003Cem\u003E简单\u003C\u002Fem\u003E、小巧、装载速度快,但仍然保持功能强大、执行效率高的特点。 \u003Cbr\u002F\u003E \u003Cbr\u002F\u003E 跨浏览器,跨平台的所见即所得在线html编辑器 \u003Cbr\u002F\u003E\u003Cbr\u002F\u003E兼容市面上最流行的ie5.5+,firefox1.0+,mozilla1.3+, netscape7+和Safari(1.3+)浏览器,并且包括Mac和Linux操作平台。 \u003Cbr\u002F\u003E \u003Cbr\u002F\u003E CuteEditor遵循Web标准,没有类似 \u003CFONT\u003E 这种标签 \u003Cbr\u002F\u003E\u003Cbr\u002F\u003E你的Html编辑器还在使用类似 \u003CFONT\u003E这种标签么? CuteEditor会帮助你构建用户最新Web标准的html代码标签,自动生成简洁的HTML\u002FXHTML代码。 为什么要遵循Web标准? \u003Cbr\u002F\u003E\u003Cbr\u002F\u003E学习应用Web标准有很多益处,下面给几个\u003Cem\u003E简单\u003C\u002Fem\u003E例子:\u003Cbr\u002F\u003E\u003Cbr\u002F\u003E获得好的搜索引擎排名: The separation of content and presentation makes the content represent a larger part of the total file size. Combined with semantic markup this will improve search engine rankings. \u003Cbr\u002F\u003E更快的下载和加载网页: Less HTML results in smaller file sizes and quicker downloads. Modern web browsers render pages faster when they are in their standards mode than when they are in their backwards compatible mode. \u003Cbr\u002F\u003E适应未来网页浏览器: When you use defined standards and valid code you future-proof your documents by reducing the risk of future web browsers not being able to understand the code you have used. \u003Cbr\u002F\u003E代码编写\u003Cem\u003E简单\u003C\u002Fem\u003E,维护方便: Using more semantic and structured HTML makes it easier and quicker to understand code created by somebody else. \u003Cbr\u002F\u003E适应其他设备: Semantic HTML, where structure is separated from presentation, makes it easier for screen readers and alternative browsing devices to interpret the content. \u003Cbr\u002F\u003E非常好的适应性: A semantically marked up document can be easily adapted to print and alternative browsing devices, like handheld computers and cellular phones, just by linking to a different CSS file. You can also make site-wide changes to presentation by editing a single file. \u003Cbr\u002F\u003ERead more:\u003Cbr\u002F\u003E我的网页符合Web标准,你的呢? \u003Cbr\u002F\u003E 能自动清理HTML代码中Word标记 \u003Cbr\u002F\u003E\u003Cbr\u002F\u003EWhen text is pasted from Microsoft Word allot of unnecessary word specific markup is carried across. This can result in web pages that take an unnecessarily long time to download. The Paste from Word button solves this by removing word markup before pasting the text into your page. \u003Cbr\u002F\u003E \u003Cbr\u002F\u003E 支持W3C WAI和section 508的无障碍引导 \u003Cbr\u002F\u003E\u003Cbr\u002F\u003ECute Editor optional accessibility settings ensure your site complies with Section 508, so people with disabilities can have full access to your content.\u003Cbr\u002F\u003E \u003Cbr\u002F\u003E 输出的HTML或不错的XHTML供你选择 (Demo)\u003Cbr\u002F\u003E\u003Cbr\u002F\u003ECute Editor supports output well-\u003Cem\u003Eform\u003C\u002Fem\u003Eed XHTML. Your choice of XHTML 1.0 or HTML 4.01 output. \u003Cbr\u002F\u003E\u003Cbr\u002F\u003E \u003Cbr\u002F\u003E 无限次的撤销\u002F恢复\u003Cbr\u002F\u003E\u003Cbr\u002F\u003EMany of the other editors on the market cannot undo or redo certain actions, and certain table operations - such as cell merge or column deletion. Cute Editor 4.0 has a new custom undo\u002Fredo implementation to make you can now safely undo those actions. \u003Cbr\u002F\u003E\u003Cbr\u002F\u003E \u003Cbr\u002F\u003E 多语言支持,通过\u003Cem\u003E简单\u003C\u002Fem\u003E设置XML即可完成 (Demo)\u003Cbr\u002F\u003E\u003Cbr\u002F\u003EAll labels, buttons, tooltips and messages are located in external XML files, so that the language of the editor can be switched with a single property. You can also create a new language in a matter of minutes. \u003Cbr\u002F\u003E \u003Cbr\u002F\u003E 完全支持页面编辑(从 \u003CHTML\u003E 到 \u003C\u002FHTML\u003E) (Demo)\u003Cbr\u002F\u003E\u003Cbr\u002F\u003ECute Editor 4.0 allows you to edit a full HTML page, including \u003Ctitle\u003E, \u003C!DOCTYPE...\u003E and some other options. You can also insert \u003Cem\u003EForm\u003C\u002Fem\u003E elements (checkbox, button, textarea, etc.) and modify certain properties of the element.\u003Cbr\u002F\u003E \u003Cbr\u002F\u003E 默认换行为软回车 (Demo)\u003Cbr\u002F\u003E\u003Cbr\u002F\u003EMost other editors insert double line returns which can be annoying for clients who are used to editing in Microsoft Word. CuteEditor can be configured to use \u003Cdiv\u003E, \u003Cbr\u003E or \u003Cp\u003E tags when you press enter. In either mode \u003Cbr\u003E tags can be created by using shift+enter.\u003Cbr\u002F\u003E \u003Cbr\u002F\u003E 支持代码缩进和小写字母\u003Cbr\u002F\u003E\u003Cbr\u002F\u003ECute Editor displays nicely indented code in the HTML mode and the generating HTML tags and Attributes are in lower case. This is very convenient and important for the advanced users. \u003Cbr\u002F\u003E \u003Cbr\u002F\u003E 支持全屏编辑 (Demo)\u003Cbr\u002F\u003E\u003Cbr\u002F\u003EIt does not open a new window, instead it will resize to fit the browser screen. Edit in full screen mode, maximizing your available space. \u003Cbr\u002F\u003E\u003Cbr\u002F\u003E \u003Cbr\u002F\u003E 没有打开较慢的Java或\u003Cem\u003EActiveX\u003C\u002Fem\u003E组件\u003Cbr\u002F\u003E\u003Cbr\u002F\u003E100% DHTML, JavaScript ASP.Net code. There are no slow Java or \u003Cem\u003EActiveX\u003C\u002Fem\u003E components to worry about and everything is handled in the browser! \u003Cbr\u002F\u003E\u003Cbr\u002F\u003E \u003Cbr\u002F\u003E 支持相对地址和URL自动关联(Demo)\u003Cbr\u002F\u003E\u003Cbr\u002F\u003EWith Cute Editor, you have the choice of using either a relative or absolute URL. \u003Cbr\u002F\u003E \u003Cbr\u002F\u003E 部署\u003Cem\u003E简单\u003C\u002Fem\u003E\u003Cbr\u002F\u003E\u003Cbr\u002F\u003EThe perfect addition to your content management system! Only a couple lines of code , you don't need to be an expert. Allows you to add an online HTML editing functionality that works with standard HTML \u003Cem\u003Eform\u003C\u002Fem\u003E.\u003Cbr\u002F\u003E \u003Cbr\u002F\u003E 可以\u003Cem\u003E简单\u003C\u002Fem\u003E的通过API隐藏按钮和标签 \u003Cbr\u002F\u003E\u003Cbr\u002F\u003ECute Editor allows developers to set the image directory, set the controls width, disable image uploading and deleting, restrict access to the source\u002Fpreview tabs, hide buttons and lists that you don't want your clients to see or access. \u003Cbr\u002F\u003E \u003Cbr\u002F\u003E 支持图片的文字环绕 \u003Cbr\u002F\u003E\u003Cbr\u002F\u003ELocate the image you want to wrap text around, and click any justify button in the toolbar. The image will float to the desired direction. Text will be positioned around the image. \u003Cbr\u002F\u003E \u003Cbr\u002F\u003E 支持文件下载 \u003Cbr\u002F\u003E\u003Cbr\u002F\u003EYou can upload document files, create a link from your HTML content to the document files (zip files, ppt files...). \u003Cbr\u002F\u003E \u003Cbr\u002F\u003E CSS型皮肤 (Demo)\u003Cbr\u002F\u003E\u003Cbr\u002F\u003ECute Editor provides several built in themes that are ready to use. Developers can completely change the appearance of the toolbar and the dialogs by simply modifying the supplied classes and images. \u003Cbr\u002F\u003E \u003Cbr\u002F\u003E 高级的表格管理\u003Cbr\u002F\u003E\u003Cbr\u002F\u003ECreate and modify tables and table cells. Set their border color, alignment, cellspacing and more! Once you've created a table, simply right click inside of it and use the handy popup menu to change its attributes. \u003Ccaption\u003E,\u003Csummary\u003E,\u003Cthead\u003E,\u003Ctfoot\u003E,\u003Cth\u003E tags are supported. \u003Cbr\u002F\u003E\u003Cbr\u002F\u003E \u003Cbr\u002F\u003E 图片插入和自动上传\u003Cbr\u002F\u003E\u003Cbr\u002F\u003EBuilt-in thumbnail generator. Thumbnail images are dynamically created; Supports upload new images. Paging - specify how many images. Support auto resize images.\u003Cbr\u002F\u003E \u003Cbr\u002F\u003E 具有特殊的对话框\u003Cbr\u002F\u003E\u003Cbr\u002F\u003EWith Style builder dialog box you can apply CSS style attributes directly to any HTML elements on your Web page.\u003Cbr\u002F\u003E \u003Cbr\u002F\u003E 支持内容模板 (Demo)\u003Cbr\u002F\u003E\u003Cbr\u002F\u003EThe basic idea behind a Content Management System (CMS) is to separate the management of content from design. Cute Editor allows the site designer to easily create and establish templates to give the site a uni\u003Cem\u003Eform\u003C\u002Fem\u003E look. Templates may be modified when desired. \u003Cbr\u002F\u003E \u003Cbr\u002F\u003E 通过限制html和文字的长度来保护你的数据库 (Demo)\u003Cbr\u002F\u003E\u003Cbr\u002F\u003EIf you tried to insert a record whose text length is greater than allowed by your table, an error will be reported. To prevent this type of error from occurring, developers can use MaxHTMLLength or MaxTextLength in the Cute Editor to limit the length of the user抯 input. \u003Cbr\u002F\u003E \u003Cbr\u002F\u003E Apply security to control user access to resources \u003Cbr\u002F\u003E\u003Cbr\u002F\u003ECute Editor allows developers to assign a pre-defined set of permissions by group or individual. This prevents a normal user to access the administration functionality. \u003Cbr\u002F\u003E\u003Cbr\u002F\u003EThe details of permissions are specified by an XML security policy file. Each level maps to a specific file. The default mappings: \u003Cbr\u002F\u003E\u003Cbr\u002F\u003Eadmin设置 admin.config \u003Cbr\u002F\u003Edefault设置 default.config \u003Cbr\u002F\u003Eguest设置 guest.config \u003Cbr\u002F\u003EYou can customize and extend each policy file by editing the XML security policy file. You can also create your own policy files that define arbitrary permission sets.\u003Cbr\u002F\u003E\u003Cbr\u002F\u003EComparison of the sample security policy file \u003Cbr\u002F\u003E\u003Cbr\u002F\u003E \u003Cbr\u002F\u003EPermissions\u002FResource Setting Admin Default Guest \u003Cbr\u002F\u003EAllowUpload \u003Cbr\u002F\u003EAllowDelete \u003Cbr\u002F\u003EAllowCopy \u003Cbr\u002F\u003EAllowMove \u003Cbr\u002F\u003EAllowCreateFolder \u003Cbr\u002F\u003EAllowDeleteFolder \u003Cbr\u002F\u003ERestrictUploadedImageDimension \u003Cbr\u002F\u003EAutoResizeUploadedImages \u003Cbr\u002F\u003EMaxImageWidth 6400 640 640 \u003Cbr\u002F\u003EMaxImageHeight 4800 480 480 \u003Cbr\u002F\u003EMaxImageSize 10000 100 100 \u003Cbr\u002F\u003EMaxMediaSize 10000 100 100 \u003Cbr\u002F\u003EMaxFlashSize 10000 100 100 \u003Cbr\u002F\u003EMaxDocumentSize 10000 100 100 \u003Cbr\u002F\u003EImageGalleryPath ~\u002Fuploads ~\u002Fuploads\u002Fmember ~\u002Fuploads\u002Fguest \u003Cbr\u002F\u003EMediaGalleryPath ~\u002Fuploads ~\u002Fuploads\u002Fmember ~\u002Fuploads\u002Fguest \u003Cbr\u002F\u003EFlashGalleryPath ~\u002Fuploads ~\u002Fuploads\u002Fmember ~\u002Fuploads\u002Fguest \u003Cbr\u002F\u003EFilesGallaryPath ~\u002Fuploads ~\u002Fuploads\u002Fmember ~\u002Fuploads\u002Fguest \u003Cbr\u002F\u003EImageFilters .jpg \u003Cbr\u002F\u003E.jpeg \u003Cbr\u002F\u003E.gif \u003Cbr\u002F\u003E.png .jpg \u003Cbr\u002F\u003E.jpeg \u003Cbr\u002F\u003E.gif \u003Cbr\u002F\u003E .jpg \u003Cbr\u002F\u003E.jpeg \u003Cbr\u002F\u003E.gif \u003Cbr\u002F\u003E \u003Cbr\u002F\u003EMediaFilters .avi \u003Cbr\u002F\u003E.mpg \u003Cbr\u002F\u003E.mpeg \u003Cbr\u002F\u003E.mp3 .avi \u003Cbr\u002F\u003E.mpg \u003Cbr\u002F\u003E.mpeg \u003Cbr\u002F\u003E .avi \u003Cbr\u002F\u003E.mpg \u003Cbr\u002F\u003E.mpeg \u003Cbr\u002F\u003E \u003Cbr\u002F\u003EDocumentFilters .txt, .doc\u003Cbr\u002F\u003E.pdf, .zip\u003Cbr\u002F\u003E.rar, .avi\u003Cbr\u002F\u003E.mpg, .mpeg\u003Cbr\u002F\u003E.mp3, .jpg\u003Cbr\u002F\u003E.jpeg,.gif\u003Cbr\u002F\u003E.png .pdf, .doc\u003Cbr\u002F\u003E .txt, .doc\u003Cbr\u002F\u003E.pdf, .zip\u003Cbr\u002F\u003E \u003Cbr\u002F\u003E \u003Cbr\u002F\u003E 在线图片编辑\u003Cbr\u002F\u003E\u003Cbr\u002F\u003EPeople that input content on a website are generally not web designers, so most don't have that design & technical fibre in them. With online image editor, you can now edit image file with no image editing software to download or install! Easy drag and drop familiar interface. Resize, change dimensions, scale, crop, add text, optimize, rotate, flip, mirror and add watermark. \u003Cbr\u002F\u003E \u003Cbr\u002F\u003E 控制上传文件夹大小\u003Cbr\u002F\u003E\u003Cbr\u002F\u003EMax Upload Folder size(Including all subfolders and files. A must have feature for people who have limited hosting space.) Dynamic display of available free space in the Upload Folder.Limits the size of your upload folder. If the max is reached uploads will be disabled. \u003Cbr\u002F\u003E \u003Cbr\u002F\u003E 支持图片热点\u003Cbr\u002F\u003E\u003Cbr\u002F\u003EImage maps are pictures with clickable regions also known as \"hotspots.\" When users click on one of the hotspots, they're directed to the page you designate. CuteEditor 5.0 lets you easily create image maps to add fun and excitement to a page\u003Cbr\u002F\u003E \u003Cbr\u002F\u003E \u003Cdiv\u003E 的盒模式\u003Cbr\u002F\u003E\u003Cbr\u002F\u003E\u003Cdiv\u003E boxes offer a much greater ability to control the layout of a page. With CuteEditor, you can put any content between \u003Cdiv\u003E tags and then use CSS to style all sorts of borders, backgrounds, etc. \u003Cbr\u002F\u003E \u003Cbr\u002F\u003E 通用虚拟键盘\u003Cbr\u002F\u003E\u003Cbr\u002F\u003EVirtual Keyboard does not require changes to language settings of your system and even speeds up the entire text input process for your customers. It lets your native speaking clients to access your web resources from any location in the world without changing national keyboard layouts and fonts on their machines. \u003Cbr\u002F\u003E \u003Cbr\u002F\u003E 把图片存到数据库\u003Cbr\u002F\u003E\u003Cbr\u002F\u003EWith CuteEditor you can easily use a Sql Server database or access database as the file storage. \u003Cbr\u002F\u003E \u003Cbr\u002F\u003E RTF和HTML之间互相转换\u003Cbr\u002F\u003E\u003Cbr\u002F\u003EWith CuteEditor you can easily convert an HTML document into an RTF file and RTF file into HTML or XHTML document. \u003Cbr\u002F\u003E \u003Cbr\u002F\u003E 生成PDF文件\u003Cbr\u002F\u003E\u003Cbr\u002F\u003ECuteEditor also allows you dynamically create Adobe PDF documents from ASP.NET.\u003Cbr\u002F\u003E cuteEditor6.0多语言版(集成lic文件) \u003Cbr\u002F\u003E\u003Cbr\u002F\u003E目前功能强大,最好的Asp.net编辑器之一 \u003Cbr\u002F\u003E除了一般html编辑器具有的功能外,还有word过滤、图片在线处理、加水印等实用功能 \u003Cbr\u002F\u003E使用关键步骤: \u003Cbr\u002F\u003E\u003Cbr\u002F\u003E1、引用bin下的cuteEditor文件 \u003Cbr\u002F\u003E2、在aspx页面顶部中添加引用 \u003Cbr\u002F\u003E3、在aspx页面中加入代码 \u003Cbr\u002F\u003E4、最后可以在.cs文件中通过来读取Editor1.Text的值来进行任意的扩展和控制了 \u003Cbr\u002F\u003E具体配置可参照default.aspx和default.aspx.cs \u003Cbr\u002F\u003E\u003Cbr\u002F\u003E关于cuteEditor6.0的特征及体验请浏览cuteEditor.cn,系统集成了lic授权文件,仅供体验测试使用,请不要用于任何商业用途! \u003Cbr\u002F\u003E\u003Cbr\u002F\u003E \u003Cbr\u002F\u003E","createTime":"2007-06-19 11:25:19","dataReportQuery":"spm=1035.2023.3001.6557&utm_medium=distribute.pc_relevant_bbs_down_v2.none-task-download-2~default~OPENSEARCH~Rate-4-196338-bbs-40130372.264^v3^pc_relevant_bbs_down_v2_default&depth_1-utm_source=distribute.pc_relevant_bbs_down_v2.none-task-download-2~default~OPENSEARCH~Rate-4-196338-bbs-40130372.264^v3^pc_relevant_bbs_down_v2_default","dataReportClick":"{\"mod\":\"popu_645\",\"index\":\"4\",\"dest\":\"https:\u002F\u002Fdownload.csdn.net\u002Fdownload\u002Ffanshuzone\u002F196338\",\"strategy\":\"2~default~OPENSEARCH~Rate\",\"extra\":\"{\\\"utm_medium\\\":\\\"distribute.pc_relevant_bbs_down_v2.none-task-download-2~default~OPENSEARCH~Rate-4-196338-bbs-40130372.264^v3^pc_relevant_bbs_down_v2_default\\\",\\\"dist_request_id\\\":\\\"1713450344599_25364\\\"}\",\"spm\":\"1035.2023.3001.6557\"}","dataReportView":"{\"mod\":\"popu_645\",\"index\":\"4\",\"dest\":\"https:\u002F\u002Fdownload.csdn.net\u002Fdownload\u002Ffanshuzone\u002F196338\",\"strategy\":\"2~default~OPENSEARCH~Rate\",\"extra\":\"{\\\"utm_medium\\\":\\\"distribute.pc_relevant_bbs_down_v2.none-task-download-2~default~OPENSEARCH~Rate-4-196338-bbs-40130372.264^v3^pc_relevant_bbs_down_v2_default\\\",\\\"dist_request_id\\\":\\\"1713450344599_25364\\\"}\",\"spm\":\"1035.2023.3001.6557\"}","type":"download"},{"url":"https:\u002F\u002Fblog.csdn.net\u002Flailai186\u002Farticle\u002Fdetails\u002F8190835","title":"Delphi \u003Cem\u003EActiveX\u003C\u002Fem\u003E \u003Cem\u003EForm\u003C\u002Fem\u003E的使用实例","desc":"\u003Cem\u003EActiveX\u003C\u002Fem\u003E控件也就是一般所说的OCX控件,它是\u003Cem\u003EActiveX\u003C\u002Fem\u003E技术的一部分。\r\n\u003Cem\u003EActiveX\u003C\u002Fem\u003E控件可以被集成到很多支持\u003Cem\u003EActiveX\u003C\u002Fem\u003E的应用当中去,或者直接用来扩展应用的功能,这些支持\u003Cem\u003EActiveX\u003C\u002Fem\u003E的应用包括C++ Builder、Delphi、Visual dBASE、 Visual Basic、Visual C++、Internet Explorer、Netscape Navigator等。","createTime":"2012-11-16 14:33:05","dataReportQuery":"spm=1035.2023.3001.6557&utm_medium=distribute.pc_relevant_bbs_down_v2.none-task-blog-2~default~OPENSEARCH~Rate-5-8190835-bbs-40130372.264^v3^pc_relevant_bbs_down_v2_default&depth_1-utm_source=distribute.pc_relevant_bbs_down_v2.none-task-blog-2~default~OPENSEARCH~Rate-5-8190835-bbs-40130372.264^v3^pc_relevant_bbs_down_v2_default","dataReportClick":"{\"mod\":\"popu_645\",\"index\":\"5\",\"dest\":\"https:\u002F\u002Fblog.csdn.net\u002Flailai186\u002Farticle\u002Fdetails\u002F8190835\",\"strategy\":\"2~default~OPENSEARCH~Rate\",\"extra\":\"{\\\"utm_medium\\\":\\\"distribute.pc_relevant_bbs_down_v2.none-task-blog-2~default~OPENSEARCH~Rate-5-8190835-bbs-40130372.264^v3^pc_relevant_bbs_down_v2_default\\\",\\\"dist_request_id\\\":\\\"1713450344599_25364\\\"}\",\"spm\":\"1035.2023.3001.6557\"}","dataReportView":"{\"mod\":\"popu_645\",\"index\":\"5\",\"dest\":\"https:\u002F\u002Fblog.csdn.net\u002Flailai186\u002Farticle\u002Fdetails\u002F8190835\",\"strategy\":\"2~default~OPENSEARCH~Rate\",\"extra\":\"{\\\"utm_medium\\\":\\\"distribute.pc_relevant_bbs_down_v2.none-task-blog-2~default~OPENSEARCH~Rate-5-8190835-bbs-40130372.264^v3^pc_relevant_bbs_down_v2_default\\\",\\\"dist_request_id\\\":\\\"1713450344599_25364\\\"}\",\"spm\":\"1035.2023.3001.6557\"}","type":"blog"}],"staffDOList":[{"id":null,"communityId":149,"username":"community_30","userNickname":"数据库相关社区","roleCode":1,"status":1,"createUsername":"","updateUsername":"","avatarUrl":"https:\u002F\u002Fprofile-avatar.csdnimg.cn\u002Fdefault.jpg!1","createTime":"2021-05-12 18:06:02","updateTime":"2021-05-12 18:06:02","lastLoginTime":"2021-05-12 18:06:02"}],"communityConfig":{"scoreType":0,"scoreItems":{"0":"给本帖投票","1":"锋芒小试,眼前一亮","2":"潜力巨大,未来可期","3":"持续贡献,值得关注","4":"成绩优异,大力学习","5":"贡献巨大,全力支持"}},"shouldApply":false,"subscribeAble":false,"operatorAble":false,"commentNeedJoinCommunity":false},"default2014LiveRoom":[{"itemType":"","description":"高峰论坛","title":"2022 技术英雄会","url":"https:\u002F\u002Flive.csdn.net\u002Froom\u002Fiframe\u002Fcsdnnews\u002FfsNR5NWp?chat=1&title=1&footer=1","images":["https:\u002F\u002Fimg-home.csdnimg.cn\u002Fimages\u002F20221016050009.png"],"ext":{"time":"9:00","liveRoomUrl":"https:\u002F\u002Flive.csdn.net\u002Froom\u002Fcsdnnews\u002FfsNR5NWp"}}]},"isGooglebot":false,"canonical":"https:\u002F\u002Fwww.csdn.net\u002Ftopics\u002F40130372","openUrl":"","isApp":false,"localUrl":"https:\u002F\u002Fbbs.csdn.net\u002Ftopics\u002F40130372","typeId":"index","hasIndex":false},"CFG":{"ALIPLAYER_VERSION":"v4","ALIPLAYER_H5_VERSION":"mobile_v1","ENV":"prod","ROOT_URL":"https:\u002F\u002Fcms-mall.csdn.net\u002F","VUE_APP_API_URL_SERVER":"http:\u002F\u002Fcms-community-api.internal.csdn.net\u002F","VUE_APP_API_URL":"https:\u002F\u002Fcms-api.csdn.net\u002F","LOGIN_URL":"https:\u002F\u002Fpassport.csdn.net\u002Faccount\u002Flogin","VUE_APP_DOMAIN_SKILL":"https:\u002F\u002Fedu.csdn.net\u002F","VUE_APP_DOMAIN_PATH":"https:\u002F\u002Fedu.csdn.net\u002F","VUE_APP_COMMUNITY_API_URL":"https:\u002F\u002Fcommunity-api.csdn.net\u002F","VUE_APP_CCLOUD_API_URL":"https:\u002F\u002Fbizapi.csdn.net\u002Fcommunity-cloud\u002Fv1\u002F","VUE_APP_SKILL_API_URL":"https:\u002F\u002Fbizapi.csdn.net\u002Fskilltree\u002Fapi\u002F","VUE_APP_SEARCH_PLUGIN_API_URL":"https:\u002F\u002Fbizapi.csdn.net\u002Fsearchplugin\u002F","VUE_APP_COMMUNITY_ASK_API_URL":"https:\u002F\u002Fmp-ask.csdn.net\u002F","VUE_APP_ME_URL":"https:\u002F\u002Fme.csdn.net\u002F","VUE_APP_CCLOUD_RESUME":"https:\u002F\u002Fbizapi.csdn.net\u002Fjob-api\u002F","VUE_APP_CCLOUD_MAIN":"https:\u002F\u002Fwww.csdn.net\u002F","VUE_APP_CCLOUD_UC":"https:\u002F\u002Fwww.csdn.net\u002F","VUE_APP_CCLOUD_BZP_API_URL":"https:\u002F\u002Fbizapi.csdn.net\u002F","VUE_APP_CCLOUD_START_API_URL":"https:\u002F\u002Fmp-action.csdn.net\u002F","VUE_APP_PRACTIVE":"https:\u002F\u002Fbizapi.csdn.net\u002Fdaily-practice\u002F","VUE_APP_CCLOUD_HOSTPATH":"https:\u002F\u002Fbbs.csdn.net\u002F"},"queries":{"pageId":[],"domain":["ccloud.csdn.net\u002Fccloud\u002Fdetail1"],"id":["40130372"],"deviceType":"pc","isSpider":"","hostname":["bbs.csdn.net"]},"basePath":"bbs.csdn.net\u002Fccloud\u002Ftopics\u002F40130372","hrefUrl":"https:\u002F\u002Fbbs.csdn.net\u002Ftopics\u002F40130372","active":0,"navBarFixed":false,"title":"ActiveX form的简单问题!!!!!!!!!!!!!!!!!!!!!!!","isLive":false,"contentType":{"text":"text","picture":"picture","link":"link","video":"video","vote":"vote","live":"live","blog":"blog","long_text":"long_text","task_text":"task_text"},"liveUrl":"https:\u002F\u002Flive.csdn.net\u002Froom\u002Fiframe\u002F","spmExtra":{"id":149,"topicId":40130372},"keywords":"","description":"以下内容是CSDN社区关于ActiveX form的简单问题!!!!!!!!!!!!!!!!!!!!!!!相关内容,如果想了解更多关于数据库相关社区其他内容,请访问CSDN社区。"};</script><script type="text/javascript" src="https://csdnimg.cn/release/cmsfe/public/js/runtime.3e5c09eb.js"></script><script type="text/javascript" src="https://csdnimg.cn/release/cmsfe/public/js/chunk/common.7672e502.js"></script><script type="text/javascript" src="https://csdnimg.cn/release/cmsfe/public/js/chunk/tpl/ccloud-detail/index.243a94d0.js"></script></body> <!----> <script> window.csdn.sideToolbar = { options: { qr: { isShow: true, data: [ { imgSrc: 'https://csdnimg.cn/release/cmsfe/public/img/ewm.9010d6e5.png', desc: "关注公众号" }, ] }, help: { isShow: false, }, contentEl: document.getElementsByClassName("cloud-maintainer")[0] }, }; </script> <script src="https://g.csdnimg.cn/side-toolbar/2.9/side-toolbar.js" ></script> <!----> <!----> <!----> <script src="https://csdnimg.cn/release/blog_editor_html/release1.7.5/ckeditor/plugins/codesnippet/lib/highlight/highlight.pack.js"></script> <script src="https://g.csdnimg.cn/lib/editor-page-detail/v2.2.0/js/runDetail.min.js"></script> <!----> <!----> <!----> <!----> <!----> <!----> <script src="https://g.csdnimg.cn/collection-box/2.1.0/collection-box.js"></script> <!----> <!----> <!----> <!----> <script src="https://g.csdnimg.cn/common/csdn-cert/csdn-cert.js"></script> <!----></html>