由Excel学生成绩单创建Access数据库
运用excel 导入导出access数据库
excel 导入导出access数据库(winform)//从excel导入到数据库。
OleDbConnection conExcel = new OleDbConnection();try{OpenFileDialog openFile = new OpenFileDialog();//打开文件对话框。
openFile.Filter = ("Excel 文件(*.xls)|*.xls");//后缀名。
if (openFile.ShowDialog() == DialogResult.OK){string filename = openFile.FileName;int index = stIndexOf("\\");//截取文件的名字filename = filename.Substring(index + 1);conExcel.ConnectionString = "Provider=Microsoft.Jet.Oledb.4.0;Data Source=" + Application.StartupPath + "\\Appdata.mdb";//将excel导入access//distinct :删除excel重复的行.//[excel名].[sheet名] 已有的excel的表要加$//where not in : 插入不重复的记录。
string sql = "insert into 用户表select distinct * from [Excel 8.0;database=" + filename + "].[用户表$] where 记录编号not IN (select 记录编号from 用户表)";OleDbCommand com = new OleDbCommand(sql, conExcel);conExcel.Open();com.ExecuteNonQuery();MessageBox.Show("导入数据成功","导入数据", MessageBoxButtons.OK, rmation );}}catch (Exception ex){MessageBox.Show(ex.ToString());}finally{conExcel.Close();}//导出到excel操作。
如何将Excel的数据写入到Accees?
如何将Excel的数据写入到Accees?Aceess 是微软出品的桌面关系型数据库,也是在Office 大礼包中的套件之一,和大名鼎鼎的 Excel 不同;Access 主要承担了数据存储和SQL 查询的功能,需要的数据技能要更为结构化与进阶;总体来说,Excel 的强项在于灵活的分析数据,它的基本对象的单元格Cell;而 Access 的基本对象是Record,是一种结构化的数据形式,可以方便的存储及查询数十万级别的数据。
下面和大家分享一下,如何使用 VBA 将 Excel 和 Access 进行连接,并将数据写到 Access 数据库中;01 引入 Microsoft ActiveX Data Objects 6.0 Library在菜单栏工具->引入->找到Microsoft ActiveX Data Objects 6.0 Library,勾选引入02 在 Access 新建一个表•打开 Access 创建-表•右键左侧表名称 -> 设计视图•重命名表•设置需要的字段•右键打开的表名称 -> 保存•结果如图,我们需要记住表,以及字段名称03 在 Excel VBA 内写连接代码Sub Demo()Dim conn As ADODB.ConnectionSet conn = New ADODB.Connectiondatapath = ThisWorkbook.Path & "\Demo.accdb"With conn.Provider = "microsoft.ace.oledb.12.0".Open datapathEnd WithMsgBox "连接数据库成功!"End Sub我们需要先声明数据库连接对象ADODB.Connection;然后设置数据库路径:ThisWorkbook.Path是表明是当前文件夹路径,然后使用连字符&连接"\Demo.accdb"形成完整的数据库文件路径;点击运行,连接成功:04 在 Excel VBA 内写 SQL 代码我们可以将工作表的B1和B2单元格的内容,作为变量传入SQL语句我们需要向数据库写入数据,需要使用 SQL 代码:Insert Into语句Sql = "Insert Into Demo(姓名,年龄) Values('" & Sheet1.Cells(2, 1).Value & "','" & Sheet1.Cells(2, 2).Value & "')"其中第一段字符串,使用连字符将变量连接起来时,中间有个英文逗号'05 完整示例代码Sub Demo()Dim conn As ADODB.ConnectionSet conn = New ADODB.Connectiondatapath = ThisWorkbook.Path & "\Demo.accdb"With conn.Provider = "microsoft.ace.oledb.12.0".Open datapathEnd With'MsgBox "连接数据库成功!"Sql = "Insert Into Demo(姓名,年龄) Values('" & Sheet1.Cells(2, 1).Value & "','" & Sheet1.Cells(2, 2).Value & "')"conn.Execute (Sql)End Sub今天的教程,主要学习了:如何从Excel连接Access数据库,并写入数据;大家都学会了吗?。
在EXCEL中操作ACCESS数据库-8页精选文档
在EXCEL中操作ACCESS数据库(发表时间: 2007-3-3117:29:00)【评论】【打印】【字体:大中小】本文链接:http://blog.pfan/otot/24443.html 复制链接分享到: 0标签:excel vba access mdb为了便于管理手中的一大堆联系厂家的联系方式,我建立了一个ACCESS的数据库文件(TEST.MDB(表名:telephone)),把所有的客户信息存在数据库里面。
但是由于操作ACCESS数据库很不方便,我平时又习惯使用EXCEL,所以便想做一个EXCEL文件,能够与这个数据库文件连接起来,实现对数据的搜索、添加功能。
于是使用VBA。
当然首先是建立一个空白的EXCEL,并在里面针对数据库的各个字段标题建立标题。
如:打开VBA编辑器,添加三个模块:模块1:(从数据库取得全部数据,并显示到EXCEL文件中)Public Sub Getmdb()Dim cmd As StringDim oAss As Objectconnstr = "DBQ=D:\test.mdb;DefaultDir=;DRIVER={Microsoft Access Driver (*.mdb)};"Set oAss = CreateObject("ADODB.connection")oAss.Open connstrcmd = "SELECT * FROM telephone ORDER BY id DESC"Set rs = oAss.Execute(cmd)btop = 4bleft = 2ast = "A" & btop & ":Z1000"Range(ast).ClearContentsDo While Not rs.EOFbtop = btop + 1Cells(btop, bleft + 2) = rs("姓名")Cells(btop, bleft + 3) = rs("公司")Cells(btop, bleft + 4) = rs("座机")Cells(btop, bleft + 5) = rs("手机")Cells(btop, bleft + 6) = rs("传真")rs.movenextLooprs.CloseWorksheets(1).addcomEnd Sub模块2:(从数据库中搜索符合指定名字或者公司名字的项目)Public Sub Serchmdb(ByVal so, si, st As String)Dim cmd As StringDim oAss As Objectconnstr = "DBQ=D:\test.mdb;DefaultDir=;DRIVER={Microsoft Access Driver (*.mdb)};"Set oAss = CreateObject("ADODB.connection")oAss.Open connstrcmd = "SELECT * FROM telephone WHERE " + si + " like " + st + "%" + so + "%" + stOn Error GoTo 0Set rs = oAss.Execute(cmd)btop = 4bleft = 2btop = btop + 1ast = "A" & btop & ":Z1000"Range(ast).ClearContentsDo While Not rs.EOFCells(btop, bleft + 2) = rs("姓名")Cells(btop, bleft + 3) = rs("公司")Cells(btop, bleft + 4) = rs("座机")Cells(btop, bleft + 5) = rs("手机")Cells(btop, bleft + 6) = rs("传真")btop = btop + 1rs.movenextLooprs.CloseEnd Sub模块3:(网数据库中添加数据的函数)Public Sub Addmdb(ByVal atype, aname, acomp, ajob, aphone, amobil, afax, aemail As String)Dim cmd As StringDim oAss As Objectconnstr = "DBQ=D:\test.mdb;DefaultDir=;DRIVER={Microsoft Access Driver (*.mdb)};"Set oAss = CreateObject("ADODB.connection")oAss.Open connstrcmd = "INSERT INTO telephone ( 姓名,公司,职位,座机,手机,传真)" cmd = cmd + " VALUES ('" + aname + "','" + acomp + "','" + ajob + "','" + aphone + "','" + amobil + "','" + afax + "'')"On Error GoTo 0oAss.Execute (cmd)End Sub在sheet1中添加以下内容:Dim so, si, st As StringPrivate Sub ComboBox1_Change()(在EXCEL页面中添加ComboBox1控件,用于指定搜索项目名称)aa = ComboBox1.ListIndexIf aa < 0 Thensi = ""Elsesi = ComboBox1.List(aa)End IfIf si <> "id" Thenst = "'"Elsest = ""End IfEnd SubPrivate Sub CommandAdd_Click()(在EXCEL页面中添加一个“添加项目”按钮,以及一系列的输入框,用于往数据库中添加内容)Dim aname, acomp, ajob, aphone, amobil, afax As Stringaname = TextName.Textacomp = TextComp.Textajob = TextJob.Textaphone = TextPhone.Textamobil = TextMobil.Textafax = TextFax.TextAddmdb atype, aname, acomp, ajob, aphone, amobil, afax, aemail Serchmdb acomp, "公司", "'"End IfEnd SubPrivate Sub CommandButton1_Click()(在EXCEL中添加搜索输入框和“搜索”按钮,点击后开始搜索数据库)so = TextBox1.TextIf si = "" Thensi = ComboBox1.List(0)End IfIf si <> "id" Thenst = "'"Elsest = ""End IfSerchmdb so, si, stEnd SubPublic Sub addcom()(ComboBox1控件里面原来是空白的,需要在页面打开的时候往里面放入搜索的项目名称)With ComboBox1.Clear.AddItem "姓名".AddItem "公司".AddItem "座机".AddItem "手机".AddItem "传真".Text = .List(0)si = .List(0)End WithEnd Sub在ThisWorkBook中,添加:Private Sub Workbook_Open()(在页面打开时执行以下函数,也就是往ComboBox1中添加内容)Sheet1.addcomEnd Sub至此,执行就完成所要的功能了,还差一点就是删除数据的功能,暂时很少用,就懒得编了。
WPS零教程数据表的数据导出为Access
WPS零教程数据表的数据导出为AccessWPS Office是一款功能强大的办公软件套件,其中包括文字处理、演示文稿和电子表格等多个应用程序。
在WPS Office中,数据表是一种非常常用的工具,用于管理和处理大量数据。
而将数据导出为Access数据库是一种常见的需求,方便进行更深入的数据分析和管理。
本文将为您介绍如何在WPS表格中将数据导出为Access数据库。
一、准备工作在导出数据之前,您需要确保您的电脑已经安装了WPS Office和Access数据库软件。
如果没有安装,请根据您的需要自行下载安装。
二、打开WPS表格打开WPS Office软件,在主界面选择“表格”应用程序。
如果您已经有一个数据表格需要导出,可以直接打开该文件;如果没有,可以新建一个数据表格。
三、选择导出数据在打开的数据表格中,选择您想要导出的数据范围。
可以通过鼠标点击并拖动的方式选中需要导出的数据区域,也可以通过键盘上的方向键进行选择。
四、导出为Access数据库选择导出的数据范围后,单击工具栏上的“数据”选项卡,在下拉菜单中选择“导出到其他格式”选项。
接下来,将会弹出一个对话框,您需要在这个对话框中完成设置。
首先,在左侧选择“数据库文件”选项,并在右侧选择“Access数据库文件”作为导出格式。
随后,点击右侧“浏览”按钮,选择您希望将数据导入的Access数据库文件。
然后,选择导入数据的目标表格名称,并点击“确定”按钮。
五、完成导出在完成导出设置后,点击对话框底部的“导出”按钮,WPS表格将会自动将选中的数据导出到您指定的Access数据库文件中。
六、在Access中打开导出的数据表现在,您可以打开Access数据库软件,导入刚刚导出的数据表。
在Access中,选择“外部数据”选项卡,然后点击“Access”按钮。
在弹出的对话框中,选择导入的数据库文件,然后点击“确定”按钮。
Access将会导入WPS表格导出的数据表,并在数据库中显示。
使用ACCESS与EXCEL进行数据分析
进行数据比对与分析
天津市南港工业区开发有限公司 财务资产部 王东 2014 年 6 月
使用 ACCESS 与 EXCEL 进行数据比对与分析
前言
Microsoft office 办公软件是由微软出品的最流行的办公软件,其中 EXCEL 是我们在日常工作中进行数据分析的主要工具,能够胜任日常工作中的绝大部份 数据分析工作,但对于一些复杂的数据统计工作就有些力不从心了,在 Microsoft Office 办公套件中还有一款产品不被普通用户所熟悉,但对于程序 设计人员来说是最基础的数据库解决工具,那就是 ACCESS 桌面数据库系统,这 款软件是一个小型的关系型数据库系统,支持大部份 SQL 语句,编写此手册就是 为了让读者充分发挥 EXCEL 和 ACCESS 的长处,将数据分析工作做的更加得心应 手,当然本手册只是入门基础,如果读者想更加深入的学习 ACCESS 的其他功能 请在互联网查找相关资料或购买书籍。
由于时间比较仓促,难免存在错误月
~1~
使用 ACCESS 与 EXCEL 进行数据比对与分析
目录
1、 ACCESS 介绍........................................................................................................... 1 2、启动、新建一个 ACCESS 文件................................................................................ 1
如果数据类型为文本型需要对值加单引号如果是数字只需用逗号分隔结果想要的结果显示学员信息表中年龄不在指定数值内的记录实际语句selectfrom学员信息表where年龄1716结果想要的结果显示学员信息表中的学号在学员成绩表中存在的记录语句模型select字段fromwhere字段select关键字段from场情说明我们想找出参加了本次考试的学员有哪些人我们在练习数据中建立了一个学员信息表这张表为基本信息表一个学员成绩表这使用access与excel进行数据比对与分析199进行数据合并join91leftjoin左链接张表为基本信息的扩展表主要记录每个学员的相关科目成绩在扩展表中我们对每个参加考试的学员都录入了成绩信息而没有记录学员的基本情况这两张表用学号即可关联如果在扩展表中存在成绩那么这个学员就参加了考试如果没有成绩则没有参加我们现在想找出来谁都参加了考试
Excel创建acc数据库的几个方法
Excel创建acc数据库的几个方法Excel创建acc数据库的几个方法需引用microsoft dao 3.51.object.libraryA\ 1-- Sub excel创建access数据库()Dim myDatabase As DAO.Database '定义数据库变量Dim myDataTable As DAO.TableDef '定义数据表变量Dim myDatabaseName As String '定义数据库名称Dim myDataTableName As String '定义数据表名称myDatabaseName = ThisWorkbook.Path & "\小爪.mdb"myDataTableName = "小爪成绩表"'删除已经存在的数据库文件On Error Resume NextKill myDatabaseNameOn Error GoTo 0'创建数据库文件Set myDatabase = CreateDatabase(myDatabaseName, dbLangGeneral)'创建数据表Set myDataTable = myDatabase.CreateTableDef(myDataTableName)'为数据表添加字段With myDataTable.Fields.Append .CreateField("学号", dbText, 8).Fields.Append .CreateField("姓名", dbText, 6).Fields.Append .CreateField("性别", dbText, 1).Fields.Append .CreateField("学科", dbText, 20).Fields.Append .CreateField("成绩", dbSingle)End With'将数据表添加到数据库对象中myDatabase.TableDefs.Append myDataTableSet myDatabase = Nothing '释放变量'弹出信息MsgBox "创建数据库成功!" & vbCrLf _& "数据库文件名为:" & myDatabaseName & vbCrLf _& "数据表名称为:" & myDataTableName & vbCrLf _& "保存位置:当前工作簿所在的文件夹。
将Excel中数据导入到Access数据库中的方法
将Excel中数据导⼊到Access数据库中的⽅法复制代码代码如下:<%@ Page Language="C#" AutoEventWireup="true" CodeFile="Default.aspx.cs" Inherits="_Default" %><!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="/1999/xhtml"><head id="Head1" runat="server"><title>⽆标题页</title><style type="text/css">.style1{height: 16px;}.style3{height: 23px;}</style></head><body><form id="form1" runat="server"><div></div><table align="center" border="1" bordercolor="honeydew" cellpadding="0"cellspacing="0"><tr><td style="FONT-SIZE: 9pt; COLOR: #ff0000; BACKGROUND-COLOR: #ff9933; TEXT-ALIGN: center"class="style1"></td><td colspan="2"style="FONT-SIZE: 9pt; COLOR: #ffffff; HEIGHT: 16px; BACKGROUND-COLOR: #ff9933; TEXT-ALIGN: center">将Excel数据写⼊Access数据库中</td></tr><tr><td style="BACKGROUND-COLOR: #ffffcc; TEXT-ALIGN: center"></td><td style="BACKGROUND-COLOR: #ffffcc; TEXT-ALIGN: center"><iframe id="I1" name="I1" scrolling="yes" src="学⽣成绩.xls"style="WIDTH: 407px; HEIGHT: 280px"></iframe></td><td style="WIDTH: 190px; BACKGROUND-COLOR: #ffffcc; TEXT-ALIGN: center"><asp:GridView ID="GridView1" runat="server" CellPadding="4" Font-Size="9pt"ForeColor="#333333" GridLines="None" Width="228px"><FooterStyle BackColor="#990000" Font-Bold="True" ForeColor="White" /><RowStyle BackColor="#FFFBD6" ForeColor="#333333" /><SelectedRowStyle BackColor="#FFCC66" Font-Bold="True" ForeColor="Navy" /><PagerStyle BackColor="#FFCC66" ForeColor="#333333" HorizontalAlign="Center" /><HeaderStyle BackColor="#990000" Font-Bold="True" ForeColor="White" /><AlternatingRowStyle BackColor="White" /></asp:GridView></td></tr><tr><td style="BACKGROUND-COLOR: #ff9900; TEXT-ALIGN: center" class="style3"></td><td style="HEIGHT: 23px; BACKGROUND-COLOR: #ff9900; TEXT-ALIGN: center"valign="top"><asp:Button ID="Button3" runat="server" Font-Size="9pt" onclick="Button1_Click"Text="Excel数据写⼊Access数据库中" /><asp:Label ID="Label1" runat="server" Text="Label" Visible="False"style="font-size: x-small"></asp:Label></td><td style="WIDTH: 190px; HEIGHT: 23px; BACKGROUND-COLOR: #ff9900; TEXT-ALIGN: center"> <asp:Button ID="Button2" runat="server" Font-Size="9pt" onclick="Button2_Click"Text="数据库中显⽰Excel数据" /></td></tr><tr><td> </td></tr></table></form></body></html>复制代码代码如下:using System;using System.Configuration;using System.Data;using System.Linq;using System.Web;using System.Web.Security;using System.Web.UI;using System.Web.UI.HtmlControls;using System.Web.UI.WebControls;using System.Web.UI.WebControls.WebParts;using System.Xml.Linq;using System.Data.OleDb;public partial class _Default : System.Web.UI.Page{protected void Page_Load(object sender, EventArgs e){}public OleDbConnection CreateCon(){string strconn = "Provider=Microsoft.Jet.OLEDB.4.0;Data source=" + Server.MapPath("UserScore.mdb") + ";User Id=admin;Password=;";OleDbConnection odbc = new OleDbConnection(strconn);return odbc;}protected void Button1_Click(object sender, EventArgs e){//定义Excel列表string StyleSheet = "Sheet1";//调⽤⾃定义LoadData⽅法,将Excel⽂件中数据读到ASPNET页⾯中LoadData(StyleSheet);//定义查询的SQL语句string sql = "select ID,⽤户姓名,试卷,成绩,考试时间 from Score";//创建Oledb数据库连接OleDbConnection con = CreateCon();con.Open();//打开数据库连接OleDbCommand com = new OleDbCommand(sql, con);//开始事务OleDbTransaction tran = con.BeginTransaction();com.Transaction = tran;//创建适配器OleDbDataAdapter da = new OleDbDataAdapter(com);OleDbCommandBuilder cb = new OleDbCommandBuilder(da);//创建DataSet数据集DataSet ds = new DataSet();//填充数据集da.Fill(ds);int curIndex = 0;if (ds.Tables[0].Rows.Count > 0){curIndex = Convert.ToInt32(ds.Tables[0].Rows[0][0]);}//创建⼀个内存表DataTable tb = this.getExcelDate();string selsql = "";for (int i = 0; i < tb.Rows.Count; i++){string UserName = tb.Rows[i][0].ToString();selsql = "select count(*) from Score where ⽤户姓名='" + UserName + "'";}//判断Excel⽂件中是否已经导⼊到Access数据库中if (ExScalar(selsql) > 0){Label1.Visible = true;Label1.Text = "<script language=javascript>alert('该Excle中的数据已经导⼊数据库中!');location='Default.aspx'; </script>";}else{//循环读取Excel⽂件中数据,并添加到Access事先创建好的数据库表中for (int i = 0; i < tb.Rows.Count; i++){DataRow dr = ds.Tables[0].NewRow();dr[0] = ++curIndex;dr[1] = tb.Rows[i][0];dr[2] = tb.Rows[i][1];dr[3] = tb.Rows[i][2];dr[4] = tb.Rows[i][3];ds.Tables[0].Rows.Add(dr);}try{da.Update(ds);//执⾏插⼊操作mit();//事务提交Label1.Visible = true;Label1.Text = "<script language=javascript>alert('数据导⼊成功!');location='Default.aspx';</script>";}catch{tran.Rollback();//事务回滚Label1.Visible = true;Label1.Text = "<script language=javascript>alert('数据导⼊失败!');location='Default.aspx';</script>";}finally{con.Close();//关闭数据库连接}}}protected void Button2_Click(object sender, EventArgs e){string sqlstr = "select * from Score";OleDbConnection conn = CreateCon();conn.Open();OleDbCommand mycom = new OleDbCommand(sqlstr, conn);OleDbDataReader dr = mycom.ExecuteReader();dr.Read();if (dr.HasRows){GetDataSet(sqlstr);}else{Label1.Visible = true;Label1.Text = "<script language=javascript>alert('数据库中没有数据信息,请先导⼊再查询!');location='Default.aspx'; </script>";}dr.Close();conn.Close();}public DataSet GetDataSet(string sqlstr){OleDbConnection conn = CreateCon();OleDbDataAdapter myda = new OleDbDataAdapter(sqlstr, conn);DataSet ds = new DataSet();myda.Fill(ds);GridView1.DataSource = ds;GridView1.DataBind();return ds;}public DataTable getExcelDate(){string strExcelFileName = Server.MapPath("学⽣成绩.xls");string strcon = "Provider=Microsoft.Jet.OLEDB.4.0;" + "Data Source=" + strExcelFileName + ";" + "Extended Properties='Excel 8.0;HDR=YES;IMEX=1';";string sql = "select * from [Sheet1$]";OleDbDataAdapter da = new OleDbDataAdapter(sql, strcon);DataSet ds = new DataSet();da.Fill(ds);return ds.Tables[0];}public void LoadData(string StyleSheet){//定义数据库连接字符串 mstring strCon = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source =" + Server.MapPath("学⽣成绩.xls") + ";Extended Properties=Excel 8.0";//创建数据库连接OleDbConnection myConn = new OleDbConnection(strCon);//打开数据链接,得到⼀个数据集myConn.Open();//创建DataSet对象DataSet myDataSet = new DataSet();//定义查询的SQL语句string StrSql = "select * from [" + StyleSheet + "$]";//创建数据库适配器OleDbDataAdapter myCommand = new OleDbDataAdapter(StrSql, myConn);//填充数据集中的数据myCommand.Fill(myDataSet, "[" + StyleSheet + "$]");//释放占有的资源myCommand.Dispose();//关闭数据库连接myConn.Close();}public int ExScalar(string sql){OleDbConnection conn = CreateCon();conn.Open();OleDbCommand com = new OleDbCommand(sql, conn);return Convert.ToInt32(com.ExecuteScalar());conn.Close();}}。
Access数据库VBA编程实例通用成绩处理系统
Access数据库VBA编程实例通⽤成绩处理系统Access数据库VBA编程实例——通⽤成绩处理系统诏安⼀中信息技术组吴瑶民同学们通过学习⾼中选修课4《数据库管理技术》第四章“开发数据库应⽤系统”,已初步学会了简单应⽤系统的设计,为了让同学们能进⼀步提升开发能⼒,以学⽣熟知的成绩统计为实例,结合VBA编写通⽤成绩处理系统。
⼀、系统总体分析与设计成绩录⼊采⽤EXCEL电⼦表格模板⽅式,各班以电⼦表格形式上缴年段,由年段汇总后导⼊通⽤成绩处理系统,然后由系统进⾏计算总分、排名次、质量分析后,通过导出功能导出EXCEL表格形式并打印出统计结果。
录⼊成绩与打印成绩都在教师悉熟的EXCEL电⼦表格进⾏,⽅便教师操作,数据的统计与分析由系统⾃动完成,提⾼⼯作效率。
将上述模块设计图⽰化后我们便可以得到所⽰的系统功能模块图:⼆、数据库分析与设计1.数据库数据结构分析通过对成绩统计过程分析及数据要求,创建该管理系统数据库,名为“通⽤成绩管理系统.mdb”,主要包含的数据表有“学⽣成绩”、“质量分析”两个表。
“学⽣成绩”为EXCEL 格式的“学⽣成绩”通过导⼊模块⽣成,EXCEL格式的“学⽣成绩”格式如下:通⽤成绩处理系统导⼊成绩(EXCEL格式)导⼊信息浏览统计分析三率浏览学⽣站队浏览退出系统导出学⽣站队表返回导出质量分析导出结果(EXCEL格式)使⽤帮助计算三率返回班级排名年段排名“质量分析”表结构设计如下表:字段名称数据类型字段⼤⼩⼩数位班级⽂本 2科⽬⽂本8与考⼈数数字长整形⾃动及格⼈数数字长整形⾃动⾼分⼈数数字长整形⾃动平均分数字单精度 2及格率数字单精度 4⾼分率数字单精度 42、窗体的设计与实现窗体是Access 2003数据库系统的⼀个重要对象。
前⾯介绍的数据导⼊、浏览记录、质量分析、显⽰查询结果、导出数据等都是在“数据表”视图中所进⾏的操作。
(1)通⽤成绩处理系统窗体:图⼀该窗体及命令按钮VBA代码:Private Sub Form_Load()MsgBox ("使⽤前先进⼊“使⽤帮助”,花⼏分钟阅读⼀下使⽤说明,会使你的⼯作事半功倍!")End SubPrivate Sub 命令0_Click()On Error GoTo errDim db As DatabaseSet db = CurrentDb()For i = 0 To db.TableDefs.Count - 1If db.TableDefs(i).Name = "学⽣成绩" ThenDoCmd.DeleteObject acTable, "学⽣成绩"End IfNext iSet db = NothingMsgBox ("请将要导⼊的⽂件置于“成绩统计”⽂件夹中,⽂件名必须是“学⽣成绩”") DoCmd.TransferSpreadsheet acImport, 8, "学⽣成绩", CurrentProject.Path & "\学⽣成绩.xls", TrueMsgBox ("导⼊完成!")Exit Suberr:MsgBox ("找不到⽂件或⽂件格式不对")End SubPrivate Sub 命令11_Click()DoCmd.OpenTable "学⽣成绩"End SubPrivate Sub 命令12_Click()MsgBox ("提⽰:00表⽰年段,01表⽰⼀班,02表⽰⼆班.....")DoCmd.OpenTable "质量分析"End SubPrivate Sub 命令13_Click()DoCmd.OpenQuery "temp"End SubPrivate Sub 命令15_Click()FollowHyperlink CurrentProject.Path & "\功能说明.doc" End SubPrivate Sub 命令22_Click()DoCmd.Quit acQuitSaveAllEnd SubPrivate Sub 命令6_Click()DoCmd.OpenForm "质量分析"End SubPrivate Sub 命令7_Click()DoCmd.OpenForm "导出结果"End Sub(2)质量分析窗体各命令按钮VBA代码:Private Sub 命令10_Click()Dim kmzf(15) As DoubleDim kmmc(15) As StringFor i = 1 To 11kmzf(i) = Val(Me.Controls("txtzf" & i).Value)Nextkmmc(1) = "数学"kmmc(2) = "语⽂"kmmc(3) = "英语"kmmc(4) = "物理"kmmc(5) = "化学"kmmc(6) = "地理"kmmc(7) = "政治"kmmc(8) = "历史"kmmc(9) = "⽣物"kmmc(10) = "⽂综"kmmc(11) = "理综"Dim k As Stringtt = Falsek = ""'Dim db As DAO.Database '声明数据库对象变量Set db = CurrentDb()db.Execute "DELETE * FROM 质量分析;"For i = 1 To 11If Me.Controls("check" & i) <> 0 ThenCall 统计(kmmc(i), kmzf(i), "00") '算年段三率For j = Val(TXTbjks.Value) To Val(TXTbjks.Value) + bjzs - 1 If j < 10 Then k = "0" & CStr(j)Call 统计(kmmc(i), kmzf(i), k) '算班级三率Elsek = CStr(j)Call 统计(kmmc(i), kmzf(i), k)End IfNext jEnd IfNext iIf tt = False ThenMsgBox ("统计完毕,请返回主菜单导出结果打印")End IfEnd SubPrivate Sub 命令97_Click()Call 查询End SubPrivate Sub 命令100_Click()DoCmd.CloseEnd SubPrivate Sub 命令111_Click()Dim kk As StringCall 计算总分For i = Val(TXTbjks.Value) To Val(TXTbjks.Value) + Val(txtbjzs.Value) - 1 Debug.Print iIf i < 10 Thenkk = """0" & CStr(i) & "*"""Elsekk = """" & CStr(i) & "*"""End IfDebug.Print kkCall RangBerechnen_bj("学⽣成绩", kk, "总分")Next iMsgBox ("处理完毕!")End SubPrivate Sub 命令98_Click()tt = True'Call 计算总分Call RangBerechnen("学⽣成绩", "总分") '年段排名Call 查询If tt ThenMsgBox ("统计完毕,请返回主菜单导出结果打印")End IfEnd Sub(3)导出结果窗体各命令按钮VBA代码:Private Sub 命令0_Click()DoCmd.OutputTo acOutputQuery, "temp", acFormatXLS, CurrentProject.Path & "\学⽣站队表.xls" MsgBox "导出完毕!结果为“成绩统计\学⽣站队表.xls”"End SubPrivate Sub 命令1_Click()DoCmd.OutputTo acOutputTable, "质量分析", acFormatXLS, CurrentProject.Path & "\质量分析.xls" MsgBox "导出完毕!结果为“成绩统计\质量分析.xls”"End SubPrivate Sub 命令3_Click()DoCmd.CloseEnd Sub(4)通⽤模块代码Public tt As BooleanPublic i As IntegerPublic j As IntegerPublic str As StringPublic bjzs As IntegerPublic kmzf(15) '存放各科总分Public kmmc(15) '存放科⽬名称Sub 统计(km As String, kmzf As Double, jj As String)Dim sum As LongDim intI As LongDim avg As SingleDim gfli As SingleDim jgli As SingleDim strsql As StringDim db As DAO.Database '声明数据库对象变量Dim recName As DAO.Recordset '声明记录集对象变量Dim strName As DAO.Field '声明字段对象变量On Error GoTo wrongSet db = CurrentDb() '指定数据库为当前数据库If jj = "00" ThenSet recName = db.OpenRecordset("学⽣成绩") '计算年段ElseSet recName = db.OpenRecordset("select * from 学⽣成绩 where 班号 like " & """" & jj & "*" & """") '计算班级End IfSet strName = recName.Fields(km) '指定记录集“科⽬”字段' 计算三率jgrs = 0 '及格⼈数sum = 0 '总分gfrs = 0 '⾼分⼈数intI = 0 '总⼈数Do Until recName.EOFsum = sum + IIf(IsNull(strName), 0, strName) ' 将“科⽬”字段读⼊数组If strName >= kmzf * 0.6 Thenjgrs = jgrs + 1 '及格⼈数End IfIf strName >= 0.8 * kmzf Thengfrs = gfrs + 1 '⾼分的⼈数End IfintI = intI + 1 '总⼈数recName.MoveNext '读取记录集的下⼀⾏记录Loopavg = sum / intI '平均分gfli = gfrs / intI '⾼分率jgli = jgrs / intI '及格率'写⼊“质量分析”表Set recName = db.OpenRecordset("质量分析") '将“”表读⼊记录集recName.AddNew recName.Fields(0) = jjrecName.Fields(1) = kmrecName.Fields(2) = intIrecName.Fields(3) = jgrsrecName.Fields(4) = gfrsrecName.Fields(5) = avgrecName.Fields(6) = jglirecName.Fields(7) = gflirecName.UpdateExit Subwrong:MsgBox ("找不到科⽬成绩或者班级总数设置不对!请检查并重新设置")i = 11: j = 18000: tt = TrueEnd Sub'⽣成temp查询Public Sub 查询()Dim db As DAO.Database '声明数据库对象变量Dim qry As DAO.QueryDefSet db = CurrentDb()For i = 0 To db.QueryDefs.Count - 1If db.QueryDefs(i).Name = "temp" ThenDoCmd.DeleteObject acQuery, "temp"End IfNext iSet qry = db.CreateQueryDef("temp")qry.SQL = "SELECT * FROM 学⽣成绩 ORDER BY 总分 DESC"Set db = NothingEnd SubPublic Sub 计算总分()Dim db As DAO.Database '声明数据库对象变量Dim recName As DAO.Recordset '声明记录集对象变量Dim strName As DAO.Field '声明字段对象变量kmmc(1) = "数学"kmmc(2) = "语⽂"kmmc(3) = "英语"kmmc(4) = "物理"kmmc(5) = "化学"kmmc(6) = "地理"kmmc(7) = "政治"kmmc(8) = "历史"kmmc(9) = "⽣物"kmmc(10) = "⽂综"kmmc(11) = "理综"Set db = CurrentDb() '指定数据库为当前数据库Set recName = db.OpenRecordset("学⽣成绩") '将“”表读⼊记录集On Error GoTo errDo Until recName.EOFsum = 0For i = 1 To 11If Form_质量分析.Controls("check" & i) <> 0 Thensum = sum + IIf(IsNull(recName.Fields(kmmc(i))), 0, recName.Fields(kmmc(i))) End IfNext irecName.EditrecName.Fields("总分") = sumrecName.UpdaterecName.MoveNextLoopExit Suberr:MsgBox "找不到成绩!请重新设置科⽬"End Sub'计算名次Public Function RangBerechnen(TableName As String, LeistungFeld As String) As Boolean On Error GoTo Err_Rang Dim db As DAO.DatabaseDim iRang As LongDim iLeistung As IntegerDim iGleicherRang As IntegerSet db = CurrentDbSet rst = db.OpenRecordset("SELECT * FROM " & TableName & " ORDER BY " & LeistungFeld & " DESC", dbOpenDynaset)iRang = 1With rstDo While Not .EOFiLeistung = .Fields(LeistungFeld).Edit!年名 = iRang.Update.MoveNextIf .EOF Then Exit DoiGleicherRang = 0Do While (.Fields(LeistungFeld) = iLeistung).Edit!年名 = iRang.UpdateiGleicherRang = iGleicherRang + 1.MoveNextIf .EOF Then Exit DoLoopiRang = iRang + 1 + iGleicherRangLoop.CloseEnd WithRangBerechnen = TrueSet db = NothingSet rst = NothingExit FunctionErr_Rang:RangBerechnen = FalseResume Exit_RangEnd Function'计算班级名次Public Function RangBerechnen_bj(TableName As String, tiaoj As String, LeistungFeld As String) As BooleanOn Error GoTo Err_RangDim rst As DAO.RecordsetDim iRang As LongDim iLeistung As IntegerDim iGleicherRang As IntegerDim sqlstr As Stringsqlstr = "SELECT * FROM " & TableName & " where 班号 like " & tiaoj & " ORDER BY " & LeistungFeld & " DESC;" Set db = CurrentDbSet rst = db.OpenRecordset(sqlstr, dbOpenDynaset)iRang = 1With rstDo While Not .EOFiLeistung = .Fields(LeistungFeld).Edit!班名 = iRang.Update.MoveNextIf .EOF Then Exit DoiGleicherRang = 0Do While (.Fields(LeistungFeld) = iLeistung).Edit!班名 = iRang.UpdateiGleicherRang = iGleicherRang + 1.MoveNextIf .EOF Then Exit DoLoopiRang = iRang + 1 + iGleicherRang Loop.CloseEnd WithRangBerechnen_bj = TrueSet db = NothingSet rst = NothingExit_Rang:Exit FunctionErr_Rang:RangBerechnen_bj = False Resume Exit_RangEnd Function。
实验 ACCESS数据库查询创建与操作
实验3-1使用“简单查询向导”以“学生成绩表”为数据源创建一个名为“不及格学生成绩表查询_简单查询向导”的查询,查询运行结果如图所示:实验3-2:以学生成绩表为数据源使用“简单查询向导”向导,创建“学生成绩表_大学计算机基础不及格学生信息”查询,查询成绩表中“大学计算机基础”不及格的记录,要求结果显示学号,姓名,课程名称,成绩。
结果如下图所示以“学生档案表”为数据源使用“简单查询向导”向导建立查询,查询所有女同学的学生信息,要求查询的名称为“女生信息”,查询结果中显示女生的姓名、性别、院系与专业。
(需要在使用向导建立查询后,再在设计视图中修改查询条件)。
实验3-4(1)以“图书信息表”为数据源,使用用“交叉表查询向导”创建“图书信息表交叉信息查询1”查询,统计每个出版社,每个类别图书的数量,如图所示:(2)以“图书销售表”为数据源,使用用“交叉表查询向导”创建“图书销售表交叉信息查询1”查询,统计每本图书由每个销售人员各销售的数量,如图所示:(书名作为列,人名作为行):(3)以“图书销售表”为数据源,使用用“交叉表查询向导”创建“图书销售表交叉信息查询1”查询,统计每个销售人员销售每本图书由的数量(人名作为列,书名作为行)(1)以“学生档案表”为数据源,使用“查找重复项查询向导”创建“学生档案表班级的重复项”查询,统计相同班级的学生信息。
如图所示:(2)以“学生档案表”和“优秀学生表”为数据源,使用“查找不匹配项查询向导”创建“学生档案表与优秀学生表不匹配”查询,查询不是优秀学生的相关信息,查询结果如图所示:(3)以“图书信息表”和“图书借阅表”为数据源,使用“查找不匹配项查询向导”创建“图书信息表与图书借阅表不匹配”查询,查询图书信息表中未曾被借阅的图书的相关信息,查询结果如图所示:(4)以“图书信息表”和“图书销售表”为数据源,使用“查找不匹配项查询向导”创建“图书信息表与图书销售表不匹配”查询,查询图书信息表中未曾被销售的图书的相关信息,查询结果如图所示:实验3-6(1)以“学生档案表”为数据源建立查询,查询所有学号中包含字符串“12”的学生信息,要求查询的名称为“学生档案表查询1-1”,查询结果中显示学生的学号、姓名、性别、院系与专业(*号)(2)以“学生档案表”为数据源建立查询,查询所有专业中包含字符串“计算”的学生信息,要求查询的名称为“学生档案表查询1-2”,查询结果中显示学生的学号、姓名、性别、院系与专业(*号)(3)以“学生档案表”为数据源建立查询,查询所有籍贯是辽宁省的学生信息,要求查询的名称为“学生档案表查询1-3,查询结果中显示学生的姓名、性别、院系、籍贯与专业(*号)(4)以“学生档案表”为数据源建立查询,查询所有学号第二位是3的学生信息,要求查询的名称为“学生档案表查询1-4,查询结果中显示学生的姓名、性别、院系、籍贯与专业(?号)(5)以“学生档案表”为数据源建立查询,查询所有姓“王”的学生信息,要求查询的名称为“学生档案表查询1-5”,查询结果中显示学生的姓名、性别、院系、出生日期与专业。
从EXCEL表中读取数据,添加到ACCESS数据库中
Dim db,rs,strSl
Set db = Server.CreateObject(&uot;ADODB.Connection&uot;)
db.Open &uot;Driver={Microsoft Excel Driver (*.xls)};Db=&uot; & Server.MapPath(&uot;test.xls&uot;) '打开记录集,表名一定要以&uot;[表名$]&uot;的格式
<table border=&uot;1&uot; width=&uot;90%&uot; align=&uot;center&uot;>
<tr align=&uot;center&uot; bgcolor=&uot;#E6E6E6&uot;>
<td>学号</td><td>姓名</td><td>数学</td><td>语文</td><td>英语</td><td>总分</td> </tr>
Response.Write &uot;<td>&uot; & rs(&uot;学号&uot;) & &uot;</td>&uot;
Access软件中建立数据库的方法
Access软件中建立数据库的方法Access是微软公司开发的一款关系型数据库管理软件,广泛应用于各行各业。
本篇文章将介绍Access中建立数据库的方法。
一、新建数据库打开Access软件,点击“新建”按钮,弹出“新建文件”对话框,选择“空白数据库”,保存到指定位置,命名为“学生信息管理系统.accdb”。
二、创建表格在新建的数据库中,需要创建表格以存储数据。
点击“创建”选项卡下的“表格设计”,在弹出的“设计视图”中,可以为表格定义字段(列名)和其数据类型(整型、文本、日期等)。
以学生信息表为例,可以定义学号、姓名、性别、年龄、出生日期、联系电话、地址等字段。
具体步骤:1.点击“添加字段”按钮,输入“学号”,数据类型选“文本”,属性中设置长度为8。
2.点击“添加字段”,输入“姓名”,数据类型选“文本”,属性中设置长度为20。
3.依次添加剩下的字段。
4.设定主键。
在设计视图中,选中学号字段,点击“主键”按钮,将其设置成主键,用于唯一地标识每个学生。
5.设定其他属性。
例如,可以设置姓名列为必填项,以防止未输入姓名的情况发生。
三、导入数据数据可以从其他软件中导入。
以下是从Excel中导入学生信息的具体步骤:1.在Excel中打开一个包含学生信息的文件。
2.选中你要导入的数据,复制。
3.返回Access软件,点击“外部数据”选项卡下的“从其他源导入”。
4.弹出“导入向导”,选择“Microsoft Excel”。
5.选择文件,指定数据范围。
按下一步。
6.选择目标,确定导入方式,按下一步。
7.点击完成,数据就自动导入表格中。
四、生成查询查询是指从表格中筛选数据并生成新表格的过程。
例如,可以通过查询“20岁以下女性”,得到这一特定群体的学生信息。
具体步骤:1.点击“创建”选项卡下方的“查询设计”。
2.弹出设计视图,从“表格”列表中选择要查询的表格。
3.选择要查询的字段,添加条件。
例如,可以添加一个条件,“性别”为“女性”,并添加限定条件“年龄小于20岁”。
利用Access制作学生考试成绩单方法
利用Access制作学生考试成绩单方法利用Access制作学生成绩单在学校期中或期末考试结束后,一般都是利用Excel统计学生的成绩。
现在我介绍给大家,如何利用Access中的“报表”对象来实现。
第一步、将Excel中的成绩表导入到Access文件的表中1. 假如在D盘中,有一名为“成绩总表”的Excel文件,其中含有如图1所示的一个名为“成绩表”的工作表。
在“成绩总表”的Excel文件的同一目录下,新建一个名为“班级成绩单”的Access文件。
2. 打开这个Access文件,在对象栏中选择“表”,然后单击数据库窗口工具栏上的“新建”按钮。
3. 在新建表对话框中选择“导入表”,单击“确定”,然后在弹出的导入对话框中,选择文件类型为“Microsoft Execl”,在“查找范围”中选择.Excel文件“成绩总表”所在的目录(我这里为D:),再选择要导入的“成绩总表”文件;最后单击下面的“导入”按钮。
进入“导入数据表向导”对话框。
4. 选择要导入的“成绩表”,按“下一步”;选中“第一行包含列标题”前面的复选框,再按“下一步”,进入“请选择数据的保存位置”页,选择默认值“新表中”;按“下一步”,进入“字段选择”页,保持默认值不变;按“下一步”,选择“不要主键”。
5. 按“下一步”,在“导入到表”输入框中输入表名,我这里输入的是“成绩表”。
按“完成”按钮,此时系统会弹出一个导入完成的对话,按“确定”。
这样就成功地把数据从Excel文件导入到Access的表中了。
第二步、利用“报表”创建成绩通知单1. 在对象栏中选择“报表”,单击数据库窗口工具栏上的“新建”按钮;在弹出的新建报表对话框中,选择“自动创建报表“纵栏式”,并在“对象数据的来源表或查询”提示的右面,选中“成绩表”,然后单击“确定”。
2. 随后就会自动生成一个简单的报表预览,点击预览窗口右上角的关闭按钮,系统会弹出一个询问对话框,问你要不要保存报表,单击“是”后,在弹出的报表名称中输入名字,如“成绩通知单”,再单击“确定”,返回数据库窗口,会看到已经建立好了一个名为“成绩通知单”的报表。
excel直接创建access 数据库输入输出
excel直接创建access 数据库输入输出excel 可以直接创建access 数据库并输入输出,这样整个操作都在excel中进行,access 完全处于后台Sub fig()Set x = CreateObject("adodb.connection")x.Open "provider=microsoft.jet.oledb.4.0;extended properties=excel 8.0;data source=" & ThisWorkbook.FullNameOn Error Resume Next '如果数据库存在则跳过Set y = CreateObject("adox.catalog") 'ADO没有提供创建Access数据库的功能,用adoxy.create ("provider=microsoft.jet.oledb.4.0;data source=c:\bb.mdb") '创建access数据库Sql = "select * into kk in 'c:\bb.mdb' from [sheet1$]" '写入数据库,创建表名kk表,把sheet1内容输出到数据库Set yy = x.Execute(Sql)On Error GoTo 0Sql = "select * from kk in 'c:\bb.mdb' " '读入数据库Set yy = x.Execute(Sql)Sheet1.[a10].CopyFromRecordset yy '数据库内容在a10End Sub进一步请教大师:我想将下面红色部分的代码都修改成变量,这样通用性就很强,请问如何修改。
谢谢!Sub fig2()Set x = CreateObject("adodb.connection")x.Open "provider=microsoft.jet.oledb.4.0;extended properties=excel 8.0;data source=" & ThisWorkbook.FullNameOn Error Resume Next '如果数据库存在则跳过Dim Wjm As StringWjm = "d:\zyg365.mdb"Set y = CreateObject("adox.catalog") 'ADO没有提供创建Access数据库的功能,用adoxy.create ("provider=microsoft.jet.oledb.4.0;data source=c:\bb.mdb") '创建access数据库Sql = "select * into kk in 'c:\bb.mdb' from [sheet1$]" '写入数据库,创建表名kk表,把sheet1内容输出到数据库Set yy = x.Execute(Sql)On Error GoTo 0Sql = "select * from kk in 'c:\bb.mdb' " '读入数据库Set yy = x.Execute(Sql)Sheet1.[a10].CopyFromRecordset yy '数据库内容在a10End Sub我已经解决:Excel创建Access数据库并写入数据(变量修改)'Excel创建Access数据库并写入数据(应用变量,通用性强)'Excel创建Access数据库,并将指定工作表sheet1中实有数据写入数据库c:\bb.mdb中'创建的数据库名称:c:\bb.mdb'数据库表名: kkSub Excel创建Access数据库并写入数据()Dim tb1 As StringDim tb2 As StringDim Mdb As StringSet x = CreateObject("adodb.connection")x.Open "provider=microsoft.jet.oledb.4.0;extended properties=excel 8.0;data source=" & ThisWorkbook.FullNameOn Error Resume Next '如果数据库存在则跳过Dim Wjm As Stringtb1 = " [" & & "$]" '当前活动工作表名称tb2 = "数据库表名" '创建的数据库表名Mdb = "c:\bb.mdb" '创建的数据库名称及路径Set y = CreateObject("adox.catalog") 'ADO没有提供创建Access数据库的功能,用adoxy.create ("provider=microsoft.jet.oledb.4.0;data source=" & Mdb) '创建access数据库Sql = "select * into " & tb2 & " in '" & Mdb & "' from" & tb1 '写入数据库,创建表名kk表,把sheet1内容输出到数据库Set yy = x.Execute(Sql)On Error GoTo 0End Sub。
基于Excel和Access的学生成绩单设计与实现
本栏目责任编辑:谢媛媛软件设计开发基于Excel 和Access 的学生成绩单设计与实现许婧婧,唐磊(云南财经大学现代设计艺术学院,云南昆明650221)摘要:针对高校教务管理工作运用Excel 对成绩数据进行统计、整理,保证成绩的及时性、准确性和完整性。
然后,利用Ac⁃cess 较强的数据库管理功能和不用编程的优势,对成绩进行管理和输出。
主要功能包含成绩查询,成绩单的设计、打印输出,具有易实现,易上手的特点。
实现快速、准确、高效的成绩管理,并能依托成绩系统开展相关工作,方便师生,促进教学教务管理。
关键词:成绩;Excel ;Access ;报表中图分类号:TP317文献标识码:A文章编号:1009-3044(2021)02-0062-03开放科学(资源服务)标识码(OSID ):随着高校扩招和教务管理信息化的发展,高校教务管理也越来越便捷,越来越高效。
然而在教务管理系统的使用和教务管理信息平台的应用过程中,会存在一些问题,比如教学管理系统功能不稳定,不全面。
那么在对系统完善的过程中,作为教务工作人员就需要根据实际情况另辟蹊径来辅助工作。
本文学生成绩单的设计与制作,主要针对学校教务管理信息系统不完善的情况进行设计并运用。
比如系统打印出来的成绩信息不全,或者不能显示学生学号姓名等。
鉴于这样的情况,制作一份格式统一、信息完整的成绩单不但能提升学院、学校形象,对学生顺利办理出国手续、找工作也有帮助。
学生成绩是学校非常基础和重要的资料档案,如何更科学地记录、保存以及管理学生成绩是各学校面临的一个重要问题[1]。
通过对教务管理人员、学生对成绩需求调研发现,学生对成绩的打印,教务人员对成绩的管理、查询是两个主要方面。
本文主要针对这两个方面进行成绩单的设计与实现。
基于Mi⁃crosoft Office Access 2003,和Microsoft Office Excel2003实现1.0版本,在此版本平台上经过两年的实际运用后又在Microsoft Office Access 2007和Microsoft Office Excel 2007平台上进行改进和完善,本系统已实际应用在教学管理中九年,服务于九届52个毕业班,共计2611名毕业生(见表1)。
Access实验--数据库创建及表的操作
一、实验目的1.掌握数据库的创建及其它简单操作2.熟练掌握数据表建立、数据表维护、数据表的操作二、实验内容与要求1.数据库的创建、打开、关闭2.数据表的创建:建立表结构、设置字段属性、建立表之间关系、数据的输入3.数据表维护:打开表、关闭表、调整表外观、修改表结构、编辑表内容4.数据表的操作:查找替换数据、排序记录、筛选记录三、实验步骤案例一:创建数据库1.创建空数据库要求:在移动盘上建立“\ experiment\ACCESS\实验一”文件夹,并在其下建立“教学管理.accdb”数据库。
创建数据库文件操作步骤:图1-1创建教学管理数据库(1)在Access 2010启动窗口中,在中间窗格的上方,单击“空数据库”,在右侧窗格的文件名文本框中,给出一个默认的文件名“”。
把它修改为“教学管理”如图1-1所示。
(2)单击按钮,在打开的“新建数据库”对话框中,选择数据库的保存位置,在“\ experiment\ACCESS\实验一”文件夹中,单击“确定”按钮,如图1-2所示。
(3)这时返回到access启动界面,显示将要创建的数据库的名称和保存位置,如果用户未提供文件扩展名,access将自动添加上。
(4)在右侧窗格下面,单击“创建”命令按钮,如图1-1所示。
(5)这时开始创建空白数据库,自动创建了一个名称为表1的数据表,并以数据表视图方式打开这个表1,如图1-3所示。
图1-2“文件新建数据库”对话框(6)这时光标将位于“添加新字段”列中的第一个空单元格中,现在就可以输入添加数据,或者从另一数据源粘贴数据。
图1-3表1的数据表视图2.使用模板创建Web数据库要求:利用模板创建“联系人Web数据库.accdb”数据库,保存在“\ experiment\ACCESS\实验一”文件夹中。
操作步骤:(1)启动Access。
(2)在启动窗口中的模板类别窗格中,双击样本模板,打开“可用模板”窗格,可以看到Access提供的12个可用模板分成两组。
实验五数据库建立ACCESS
实验五、创建关系数据库student实验要求:1.熟悉Access 2003 的环境。
掌握 Access 2003的启动与退出;熟悉并掌握数据库文件的建立与打开。
2.熟悉数据库基本表的创建方法;掌握基本表中数据的录入方法。
3.熟悉数据库表结构的修改方法;熟悉数据库表中各属性的设置方法。
4.掌握VB可视化数据管理器创建数据库基本表方法。
实验内容1:可视化数据管理器选择“外接程序”菜单下的“可视化数据管理器”项就可以启动数据管理器,打开“VisData”窗口。
建立数据库student.mdb中的表定义:学生成绩表字段名类型宽度学号 Text 6课程 Text 10成绩 Long 4学期 Text 2基本情况表字段名类型宽度学号 Text 6姓名 Text 10性别 Text 2专业 Text 10出生年月 Date 8照片 Binary 0备注 Memo 0(1)建立数据库结构单击“文件”菜单中的“新建”命令,在“新建”级联菜单中选择“Microsoft Access”,再选择“Version7.0 MDB”项,在“选择要创建的Microsoft Access数据库”窗口中选定新建数据库的路径并输入数据库名,这里为student.mdb。
(2)添加数据表将鼠标移到数据库窗口区域内,单击鼠标右键,在弹出的菜单中选择“新建表”命令,出现“表结构”对话框,利用对话框可以建立数据表的结构。
在“表名称”中输入“基本情况”( 和“学生成绩”),然后添加基本情况表的字段,单击“添加字段”按钮,填入字段的信息。
(3)录入数据在工具栏上选定“动态集类型记录集”显示风格的按钮,然后在要录入数据的数据表上单击鼠标右键,选择“打开”选项,则出现以网格风格显示数据的窗口,如果此表中已有数据,则此时会显示出此表中的全部数据;若此表中无数据,则会显示出一个空表。
用ACCESS管理学生成绩
用ACCESS管理学生成绩用ACCESS管理学生成绩一、建立学生成绩数据库1、启动ACCESS2000,选择新建一个空ACCESS数据库,并将数据库命名为"2003届学生第一学期成绩数据库"。
2、在数据库窗口中单击"对象栏"项目区中的"表"选项,在"数据库"窗口工具栏上单击"新建"按钮,在弹出的"新建表"对话框中选择"设计视图"选项,然后单击"确定"按钮。
3、在"表1:表"设计视图窗体中的"字段名称"栏中依次输入学生成绩表项目:"学号"、"班级"、"姓名"、"语文"、"数学"、"英语"、"物理"、"化学"、"政治"、"历史"、"地理",它们的数据类型除"班级"和"姓名"字段定义为"文本"类型外,其余的字段均定义为"数字"类型,为每个字段定义好合适的字段大小。
学生成绩统计一般都是以本年级为单位,所以,我们设计在"班级"字段输入框中提供一个下拉列表,当需要输入班级数据时,就可以从下拉列表中进行选择,设置方法是:选中"班级"字段,在字段属性窗口中选择"查阅"选项卡,在"显示控件"栏内选择"列表框",在"行来源类型"栏中选择"值列表",在"行来源"栏中输入单位所有的部门名称"一班;二班;三班;四班"(请注意:标点符号请在英文状态下输入,引号内为输入内容,下同),此表我们就称其为"学生成绩表"。
AccessVBAExcel-Access记录创建-04
AccessVBAExcel-Access记录创建-04系统:Windows 10软件:Excel 2010 / Access 2010•这个系列开展一个新的篇章,重点关注Access数据库•主体框架:以Excel作为操作界面,Access作为数据库•今天讲讲如何新建新的记录(行)•涉及知识:ADO,SQL今日歌曲:Part 1:目标1.从上一篇文章中,我们已经获取了一个工作表(学生信息表)和4个字段(ID,姓名,学号,性别)2.今天的文章开始向Access数据库中录入一条条数据3.包括两条记录•张三,11,男•李四,12,男结果如下Part 2:代码Sub test() Dim cnn As New ADODB.Connection Dim rs As New ADODB.Recordset Dim SQL As String Dim tblName Dim dbAddr dbAddr = ThisWorkbook.Path & '\学生信息.accdb' tblName = '学生信息表' '连接数据库 With cnn .Provider = 'Microsoft.ACE.OLEDB.12.0' .Open 'Data Source=' & dbAddr End With '记录1 stuName = '张三' stuNum = 11 stuGender = '男' SQL = 'INSERT INTO ' &tblName & ' (姓名,学号,性别) VALUES' _ & '(' & Chr(39) & stuName & Chr(39) & ',' & stuNum & ',' & Chr(39) & stuGender & Chr(39) & ')' Set rs = cnn.Execute(SQL) '记录2 stuName = '李四' stuNum = 12 stuGender = '男' SQL = 'INSERT INTO ' & tblName & ' (姓名,学号,性别) VALUES' _ & '(' & Chr(39) & stuName & Chr(39) & ',' & stuNum & ',' & Chr(39) & stuGender & Chr(39) & ')' Set rs = cnn.Execute(SQL) cnn.Close Set rs = Nothing Set cnn = Nothing End SubPart 3:部分代码解读1.INSERT INTO 工作表名称(字段1,字段2,字段3) VALUES (字段1对应值,字段2对应值,字段3对应值)2.中文释义:向工作表X中的字段1中录入数据X,字段2中录入数据X,字段3录入数据X3.若字段中对应值为字符串,需在单引号(Chr(39))中'',若是时间,则使用#时间信息#4.ID字段是自增式,无需额外赋值,每有一个新的记录,会自动1相关文章Access/VBA/Excel-数据库-01Access/VBA/Excel-新建Access文件-02Access/VBA/Excel-Access表及字段创建-03小结:对数据库的操作转化为对应的SQL语句,然后运行,搞定祝大家内心深处一直有一颗童真的心,儿童节快乐,大朋友们!以上为本次的学习内容,下回见。
Excel_VBA与数据库(Access)整合笔记
目录一、创建数据库 (7)1-1 利用DAO 创建数据库和数据表 (7)1-2 利用ADOX 创建数据库和数据表 (8)ADOX常用方法 (9)1-3 利用SQL 语句创建数据库和数据表 (9)1-4 在已有的数据库中创建数据表(DAO) (10)1-5 在已有的数据库中创建数据表(ADOX) (11)1-6 在已有的数据库中创建数据表(SQL,Command 对象) (12)1-7 在已有的数据库中创建数据表(SQL,Recordset 对象) (13)1-10 利用工作表数据创建数据表(ADOX) (14)1-11 利用工作表数据创建数(ADO+SQL) (17)1-12 利用工作表数据创建数据表(DAO) (18)二、获取数据库中的信息 (20)2-1检查数据表是否存在(ADO) (20)实例2-2 检查数据表是否存在(ADOX) (23)实例2-3 检查数据表是否存在(DAO) (24)实例2-5 获取数据库中所有表的名称和类型(ADO) (25)实例2-6 获取数据库中所有表的名称和类型(ADOX) (25)实例2-7 获取数据库中所有的表的名称(DAO) (26)实例2-12 检查某字段是否存在(ADO) (27).扩展:使用connection 对象的find 方法来查找某个字段是否存在 (28)获取数据库中某数据表的所有字段信息 (29)实例2-20 获取数据库的所有查询信息(ADOX) (29)实例2-21 获取数据库的所有查询信息(DAO) (30)实例2-22 获取数据库的模式信(openschema) (31)实例2-23 获取表的创建日期和最后更新日期(ADOX) (32)实例2-24 获取表的创建日期和最后更新日期(DAO) (33)三、SQL各种查询操作 (34)实例3-1 将数据库数据导入到excel 工作表(ADO之一) (34)实例3-2 数据库数据导入到excel 工作表(ADO,之三) (36)实例3-4 将数据库数据导入到Excel 工作表(DAO,之一) (37)实例3-6 将数据库数据导入工作表(QueryT able 集合) (38)实例3-7 数据库某些字段数据导入到Excel 工作表(ADO) (39)实例3-9 查询前面的若干条记录 (40)实例3-11 查询不重复的字段记录(DISTINCT) (41)实例3-12 利用Like 运算符进行模糊查询 (42)实例3-13 查询某一区间内的记(BETWEEN) (44)实例3-14 查询存在于某个集合里面的记录(IN) (45)实例3-15 将查询结果进行排序(ORDERBY) (46)实例3-16 进行复杂条件的查询(WHERE) (47)实例3-17 利用合计函数进行查询(查询最大值和最小值) (49)实例3-18 利用合计函数进行查询(查询合计值和平均值) (50)实例3-19 将一个查询结果作为查询条件进行查询 (51)实例3-20 将查询结果进行分组(GROUPBY) (52)实例3-21 查询结果进行分组(HAVING) (54)实例3-22 通过计算列进行查询 (55)实例3-23 使用IS NULL 运算符进行查询 (56)实例3-24 使用COUNT 函数进行查询 (57)实例3-25 使用FIRST 函数与LAST 函数查询 (58)实例3-26 使用Parameters 参数动态查询记录(DAO)指定单个参数 (59)实例3-27 使用parameters 参数动态查询记录(DAO):指定多个参数 (60)实例3-28 使用parameters 参数动态查询记录(ADO):指定单个参数 (61)实例3-29 使用Parameters 参数动态查询记录(ADO):指定多个参数 (63)实例3-30 使用别名查询数据库 (64)实例3-31 将查询结果作为窗体控件的源数据 (65)实例3-32 通过窗体控件查询浏览数据库记录 (68)实例3-33 多表查询(WHERE 连接) (79)实例3-34 多表查询(内连接INNERJOINT) (79)实例3-35 多表查询(左外连接LEFTOUTER JOINT) (79)实例3-36 多表查询(右外连接RIGHTOUTER JOINT) (79)实例3-37 多表查询(子查询WHERE,ANY,SOME) (79)实例3-38 多表查询(子查询EXISTS,NOT EXISTS) (79)实例3-39 从两个数据表中查询出都存在的记录分析: (79)实例3-40 从两个数据表查询出只存在于某数据表的记录 (79)实例3-41 将查询结果生成一个数据表 (80)实例3-42 将查询结果保存为一个XML文件 (82)实例3-43 利用工作表实现记录的分页显示 (83)实例3-44 利用窗体实现记录的分页显示 (85)四、添加更新及删除记录 (88)实例4-1 添加新记录(ADO+addnew) (88)实例4-2 添加新记录(ADO+SQL) (89)实例4-3 添加新记录(DAO+addnew) (90)实例4-4 添加新记录(DAO+SQL) (90)实例4-5 添加新记录(Access+SQL) (91)实例4-6 修改更新特定记录(ADO+SQL) (91)实例4-7 修改更新特定记录(DAO+SQL) (92)实例4-8 修改更新特定记录(Access+SQL) (93)实例4-9 修改更新全部记录(ADO+SQL) (93)实例4-10 修改更新全部记录(DAO+SQL) (94)实例4-11 修改更新全部记录(Access+SQL) (94)实例4-12 删除特定记录(ADO+SQL) (94)实例4-13 删除特定记录(DAO+SQL) (94)实例4-14 删除特定记录(Acess+SQL) (95)实例4-15 删除全部记录(ADO+SQL) (95)实例4-16 删除全部记录(DAO+SQL) (96)实例4-17 删除全部记录(Access+SQL) (96)实例4-18 通过窗体编辑记录 (96)五、将数据保存为数据库数据 (98)实例5-1 将整个工作表数据都保存为新的Access 数据库 (98)实例5-2 将工作表的某些区域数据保存为新Access 数据库(Access) (100)实例5-3 将工作簿的所有工作表数据分别保存为不同的数据表(Access) (101)实例5-4 将多个工作簿的某个工作表数据汇总为新Access 数据库(Access) (102)实例5-5 将多个工作簿的某个工作表数据保存为不同的数据表(Access) (103)实例5-6 将工作表数据保存到已有的Access 数据库(循环方式)(ADO) (105)实例5-7 将工作表数据保存到已有的Access 数据库(循环方式)(DAO) (107)实例5-8 将工作表数据保存到已有的Access 数据库(数组方式)(ADO) (109)实例5-9 将工作表数据保存到已有的Access 数据库(数组方式)(DAO) (111)实例5-10 将工作簿的所有工作表数据分别保存为不同的数据表(ADO) (112)实例5-11 将工作簿的所有工作表数据分别保存为不同的数据表(DAO) (114)六、数据库中的数据表操作 (115)实例6-1 打开数据库和数据表(Getobject函数) (115)实例6-2 打开数据库数据表(createobject 函数) (116)实例6-3 删除数据表(ADO) (117)实例6-4 删除数据表(ADOX) (118)实例6-5 删除数据表(DAO+DELETE) (118)实例6-6 删除数据表(DAO+SQL) (118)实例6-7 删除数据表(Access) (118)实例6-8 为数据表增加字段(ADO) (119)实例6-9 为数据表增加字段(ADOX).实例6-10 为数据表增加字段(DAO) (120)实例6-11 为数据表增加字段(Access) (120)实例6-12 删除字段(ADO) (121)实例6-13 删除字段(ADOX) (122)实例6-14 删除字段(DAO) (122)实例6-15 删除字段(Access) (124)实例6-16 改变字段的类型(ADO) (125)实例6-17 改变字段的类型(DAO) (126)实例6-18 改变字段的类型(Access) (126)实例6-19 改变字段的长度(ADO) (127)实例6-20 改变字段的长度(DAO) (127)实例6-21 改变字段的长度(Access) (128)实例6-22 重命名数据表(Access) (128)实例6-23 复制数据表(Access) (129)实例6-24 复制数据表(ADO) (130)实例6-25 复制数据表(DAO) (130)实例6-26 通过窗体维护数据库 (131)七、sql server数据库有关 (141)八、FoxPro 数据库有关 (157)九、 (162)实例9-1 从工作簿的某个工作表中查询获取数据(ADO) (162)实例9-2 从工作簿的全部工作表中查询获取数据(ADO) (163)实例9-3 利用DAO 从工作表中查询数据 (164)实例9-4 查询其他工作簿的数据(ADO) (165)实例9-5 获取其他工作簿中的工作表名称清单(ADOX) (166)实例9-6 利用ADO 对工作表数据进行多重排序 (167)实例9-7 利用ADO 按照字符的长度对数据进行排序 (168)实例9-8 比较两张表,将两个表中相同的行数据抓取出来 (169)实例9-9 比较两张表,将只存在于某个表中的行数据抓取出来 (170)实例9-10 删除工作表数据区域内的所有空行 (171)十、关于文本文件 (173)一、创建数据库1-1利用DAO 创建数据库和数据表首先建立对DAO 对象库Microsoft DAO3.6 Object Library 的引用.在VBA 界面下:工具-à引用,选中”Microsoft DAO3.6 Object Library”Public Sub1_1()Dim myDb As DAO.Database ‘定义DAO 的Database(数据库)对象变量Dim myTbl As DAO.T ableDef ‘定义DAO 的TableDef(数据表)对象变量Dim myData As String ‘定义数据库名称变量Dim myT able As String ‘定义数据表名称变量‘设置要创建的数据库名称(包括完整路径)myData=ThisWorkbook.Path & “\学生成绩管理.mdb”‘设置要创建的数据表名称myT able=”期末成绩”‘删除已经存在的数据库文件on error resume nextkill myDataon error goto 0‘创建数据库Set myDb=CreateDatabase(myData,dbLangChineseSimplified)‘创建数据表Set myTbl=myDb.CreateT ableDef(myT able)‘为创建的数据表添加各个字段With myTbl.Fields.Append .CreateField(“学号”,dbText,10).Fields.Append .CreateField(“姓名”,dbText,6).Fields.Append .CreateField(“性别”,dbText,1).Fields.Append .CreateField(“班级”,dbText,10).Fields.Append .CreateField(“数学”,dbSingle).Fields.Append .CreateField(“语文”,dbSingle).Fields.Append .CreateField(“物理”,dbSingle).Fields.Append .CreateField(“化学”,dbSingle).Fields.Append .CreateField(“英语”,dbSingle).Fields.Append .CreateField(“总分”,dbSingle)End With‘将创建的数据表添加到数据库的T ableDefs 集合中myDb.T ableDefs.Append myTbl‘关闭数据库,并释放变量myDb.CloseSet myDb=NothingSet myTbl=NothingEnd sub1-2 利用ADOX 创建数据库和数据表引用:microsoft ADO Ext.2.X for DDL and Security代码:public sub1_2()dim mycat as new adox.catalog ‘定义ADOX 的Catalog 对象变量dim mytbl as new table ‘定义table 对象变量dim mydata as string ‘定义数据库名称变量dim mytable as string ‘定义数据表名称变量‘设置要创建的数据库名称(包括完整路径)mydata=thisworkbook.path & “\学生成绩管理.mdb”‘设置要创建的数据表名称mytable=”期末成绩”‘删除已经存在的数据库文件on error resume nextkill mydataon error goto 0‘创建新的数据库mycat.create”provider=microsoft.jet.oledb.4.0;data source=” & mydata ‘创建数据表,并添加字段with mytbl.name=mytable.columns.append “学号”,advarwchar,10.columns.append “姓名”,advarwchar,6.columns.append “性别”,advarwchar,1.columns.append “班级”,advarwchar,10.columns.append “数学”,adSingle.columns.append “语文”,adSingle.columns.append “物理”,adSingle.columns.append “化学”,adSingle.columns.append “英语”,adSingle.columns.append “总分”,adSingleEnd with‘将创建的数据表添加到ADOX 的Tables 集合中mycat.tables.append mytbl‘释放变量set mycat=nothingset mytbl=nothingend sub注:在VB 中,常用的数据访问接口有下列三种:数据库访问对象(DAO,DataAccess object)、远程数据库对象(RDO,Remote Data Object)和ActiveX 数据对象(ADO,ActiveX Data Object)ADOX常用方法•Append 方法:可以创建columns,groups,indexes,keys,procedures,tables,users,views 等为数据表添加字段:mytbl.columns.append 字段名,数据类型,字段长度将创建的数据表添加到ADOX 的Tables 集合中的语句是:Mycat.tables.append mytbl•Create 方法:创建一个新的数据库的语句:Mycat.create “provider=Microsoft.jet.oledb.4.0;data source=” & mydata•Delete 方法:删除数据表:Mycat.tables.delete 数据表名•Refresh 方法:用于更新集合中的对象1-3 利用SQL 语句创建数据库和数据表首先引用:microsoft activeX data objects 2.X library 和microsoft ado ext.2.x for ddl andsecurity”代码:public sub1_3()dim mycat as new adox.catalog ‘定义ADOX 的Catalog 对象变量Dim mycmd as new mand ‘定义Command 对象变量dim mydata as string ‘定义数据库名称变量dim mytable as string ‘定义数据表名称变量dim SQL as string‘设置要创建的数据库名称(包括完整路径)mydata=thisworkbook.path & “\学生成绩管理.mdb”‘设置要创建的数据表名称mytable=”期末成绩”‘删除已经存在的数据库文件on error resume nextkill mydataon error goto 0‘创建数据库文件mycat.create “provider=microsoft.jet.oledb.4.0;Data source=” & mydata‘设置数据库连接set mycmd.activeconnection=mycat.activeconnection‘设置创建数据表的SQL 语句SQL = "CREATE TABLE " & myT able _& "(学号text(10),姓名text(6),性别text(1),班级text(10)," _& "数学Single,语文Single,物理Single,化学Single," _& "英语Single,总分Single)"‘利用execute 方法创建数据表with mycmd.commandtext=sql.execute, , adcmdtextend with‘释放变量set mycat=nothingset mycmd=nothingend sub注:有两种方法来创建数据表:•利用mand 对象的commandtext 属性和execute 方法:dim mycmd as new mandset mycmd.activeconnection=mycat.activeconnectionwith mycmd.commandtext=SQL.execute, , adcmdtextend with•利用ADODB.Connection 对象的execute 方法来生成几个记录集Dim cnn as new adodb.connectiondim rs as new adodb.recordsetset cnn=mycat.activeconnectionset rs=cnn.execute(sql)1-4 在已有的数据库中创建数据表(DAO)引用DAO 对象库:microsoft DAO 3.6 object library代码:public sub1_4()dim mydb as dao.database ‘定义DAO 的database(数据库)对象变量dim mydata as string ‘定义数据库名称变量dim mytable as string ‘定义数据表名称变量‘设置数据库名称(包括完整路径)mydata=thisworkbook.path & “\学生成绩管理.mdb”‘设置要创建的数据表名称mytable=”期末成绩”‘打开数据库set mydb=opendatabase(mydata)‘删除数据库中已经存在的数据表mydb.tabledefs.delete mytable‘创建新的数据表set mytbl=mydb.createtabledef(mytable)‘以下与1-1相同end sub•补充:opendatabase 方法用来打开一个已有的数据库,返回一个数据库对象,并自动将该数据库对象加入到数据库对象集中。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
由Excel学生成绩单创建Access数据库
1 从CBL网站下载本实验用的Excel文件“学生成绩.xls”;
2 启动Access;
3 将“学生成绩.xls”中的两个工作表导入到数据库中:
在设计视图中,修改“课程”和“学生成绩单”两个表。
4 建立“生成学生表”查询:
SELECT 学生成绩单.ID, 学生成绩单.学号, 学生成绩单.姓名 INTO 学生
FROM 学生成绩单;
运行该查询,得到“学生”表,并在设计视图中,修改“学生ID”字段。
5 建立“选课”表:
字段名键值数据类型字段大小说明
学生ID PK、FK长整4内部标识,关系连接
课程ID PK、FK长整4内部标识,关系连接
6 建立“追加数据到选课表”:
INSERT INTO 选课 ( 学生ID, 课程ID, 成绩 )
SELECT 学生.学生ID, 课程.课程ID, 学生成绩单.语文
FROM 课程, 学生 INNER JOIN 学生成绩单 ON 学生.学生ID = 学生成绩单.ID WHERE (((课程.课程ID)=5));
最终,“选课”表中有了50条记录。
7 建立“学生成绩-交叉表”:
TRANSFORM Sum(选课.成绩) AS 成绩之总计
SELECT 学生.学号, 学生.姓名
FROM 学生 INNER JOIN (选课 INNER JOIN 课程 ON 选课.课程ID = 课程.课程ID) ON 学生.学生ID = 选课.学生ID
GROUP BY 学生.学号, 学生.姓名
PIVOT 课程.课程名;
并将该查询导出到Excel文件“学生成绩单.xls”。
(注:文档可能无法思考全面,请浏览后下载,供参考。
)。