精华内容
下载资源
问答
  • Windows 7 下打开Access数据库出错

    千次阅读 2011-02-11 10:42:00
    为解决在64位操作系统下使用.Net 开发access数据库联接的问题。

    如果你尝试在Windows7或其他64位操作系统下打开access 数据库,可能你会碰到如下的错误: System.InvalidOperationException: The 'Microsoft.Jet.OLEDB.4.0' provider is not registered on the local machine.

    为解决这个问题,你只需要打开Visual stadio, 进入菜单My Project -> compile -> advanced compiler options,设置一下 the target cpu to x86. 当然如果你用的是中文版,请选择相应菜单。由于当前没有64位的Jet.OLEDB.provider,所以这里只能通过设置CPU选项,强制 .NET framework使用32位的数据库引擎.     

     

    数据库联接事例如下:

    Dim ds As New DataSet

        Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
            Dim conn As OleDbConnection
            Dim strConn As String
            Dim da As OleDbDataAdapter

            strConn = "Provider = Microsoft.Jet.OLEDB.4.0;"
            strConn &= "Data Source = c:/Northwind.mdb;"


            conn = New OleDbConnection(strConn)
            ds = New DataSet
            da = New OleDbDataAdapter("Select * from Products", conn)
            Try
                da.Fill(ds, "Products")
            Catch ex As Exception
                MessageBox.Show(ex.ToString)
            End Try
            DataGridView1.DataSource = ds.Tables("Products")
        End Sub

    展开全文
  • 动网数据库Access 转成SQL ...2、把旧的动网数据库备份,备份完成后,用Access 2003打开动网旧数据库,在打开时会出现一个警告,不要理会它(安全警告),按打开键,打开后按工具栏——数据库实用工具——转换数据库
     
    动网数据库Access 转成SQL Server2000 数据库的一个绝对成功的好方法:
    

    步骤如下:

    1、必须先安装Microsoft Office Access 2003,和SQL Server2000。2、把旧的动网数据库备份,备份完成后,用Access 2003打开动网旧数据库,在打开时会出现一个警告,不要理会它(安全警告),按打开键,打开后按工具栏——数据库实用工具——转换数据库——转换为2002-2003格式,把数据库转换成2003格式。


    2、转换完成后再用Access 2003打开,打开后按工具栏——数据库实用工具——升迁向导——新建数据库——填写SQL数据库登陆名称、密码和要新建的动网数据库(准备转成新的动网数据库),按下一步,按“ 》”键,再按下一步,选取所有选项,再按下一步,选择“不对应用程序作任何改动”,再按完成。


    3、打开SQL企业管理器——数据库---选中相应的数据库---右键所有任务-----生成SQL脚本——常规——全部显示——编写全部对象脚本——确定(记住存放的位置)。


    4、用记事本打开刚才生成的SQL脚本,在编辑栏——替换——查找内容为“smalldatetime”替换为“datetime”——替换全部;完成后再在编辑栏——替换——查找内容为“nvarchar”替换为“varcha”——替换全部,完成后保存退出。

    5、打开SQL企业管理器——数据库——点击这个数据库下新建的动网数据库,然后在工具栏——SQL查询分析器——文件——打开——“刚才生成的SQL脚本”——查询——执行,然后关闭窗口。
    (有的朋友说,用sql版自带的sql脚本也可以,大家不妨试试看)


    6、再回到SQL企业管理器——数据库——点击这个数据库下新建的动网数据库,然后打开工具栏——数据库转换服务——导入数据——下一步——数据源“Microsoft Access”文件名“为旧的动网数据库”——下一步——再下一步——从源数据复制表和视图——下一步——全选——下一步——立即运行——下一步——完成。


    7、修改动网文件夹两个文件conn.asp和inc/const.asp。
    Conn.asp文件修改如下:
    Const IsSqlDataBase = 1
    SqlDatabaseName = "MYBBS"
    SqlPassword = "sa"
    SqlUsername = "sa"
    SqlLocalName = "MYSERVER"

    Const.asp文件修改如下:
    Const IsBuss=0

    8、最后补充:
    (1)由于SQL2000里面没有"自动编号",所以你的以"自动编号"设置的字段都会变成非空的字段,这就必须手工修改这些字段,并把他的"标示"选择"是",种子为"1",增量为"1",
    (2)另外,ACCESS2000转换成SQL2000后,原来属性为"是/否"的字段将被转换成非空的"bit",这时候你必须修改成自己想要的属性了;
    (3)另外,大家要注意对时间函数的把握.ACCESS与SQL是有很多不同的.
          根据以上3点,再回到SQL企业管理器——数据库——点击这个数据库下新建的动网数据库,将所有表的字段属性根据以上3点进行修改




    补充说明:


    • 自动增加字段需要重写。在access中经常使用的自动编号字段,导入到mssql后,他并不是自增型的int,需要手工设置,把导入后的自动编号字段的标识的“否”改为“是”,“种子”和“递增量”都为“1”,才能成为自动编号

    • 所有的默认值都丢失了。主要是数字类型和日期类型

    • 所有now(),time(),date()要改成getdate()

    • 所有datediff('d', time1, time2)要改成datediff(day, time1, time2)

    • 所有datediff('ww', time1, time2)要改成datediff(week, time1, time2)

    • 所有datediff('d', time1, time2)要改成datediff(day, time1, time2)

    • 在mssql server中,有许多保留字,在access中是没有的,当你把数据导入到mssql的时候,问题就出来了。mssql在导入的时候,会自动给这些字段(包括数据库中的表名)加上“[字段名]”,因此,你必须修改你的脚本,把相应的字段名字(或者表名字)加上中括号,或改变字段名字为不是mssql的保留字

    • 在用access关于时间的使用,大家喜欢使用“select * from aaaa while time="&now()”这样的sql语句,然而,在mssql中没有“now()”这个函数,而是使用“getdate()”,所以,所有的sql语句中的“now()”必须换成“getdate()”。

    • 日期函数不相同,在对ACCESS数据库处理中,可用date()、time()等函数,但对
          SQL SERVER数据库处理中,只能用datediff,dateadd等函数,而不能用date()、time()等函数。

    • 转化时,跟日期有关的字段,SQL SERVER默认为smalldatetime型,我们最好将它变为datetime型,因为datetime型的范围比smalldatetime型大。有时用smalldatetime型时,转化失败,而用datetime型时,转化成功

    • isnull(rowname)要改成rowname = null

    • CursorType要改成1,也就是打开数据库时要给出第一个数字参数为1,否则记录可能
      显示不完整

    • 备注类型要通过cast(column as varchar)来使用

    • true/false类型不能使用,要变为1/0

    • 对此两种数据库进行操作的sql语句不全相同,例如:在对ACCESS数据库进行删除纪录时用:"delete * from user where id=10",而对SQL SERVER数据库进行删除是用:"delete user where id=10".

    • 在对ACCESS数据库处理中,sql语句中直接可以用一些VB的函数,像cstr()函数,而对SQL SERVER数据库处理中,却不能用

    • 在access的sql语句中的时间使用变量查询的时候,大家一般使用"select * from aaaa while time=#"&变量名&"#",在mssql中是不行的,他的语法是“select * from aaaa while time='"&变量名&"'"”。(意思是让你把日期时间变量当成字符串来使用,呵呵~~~)

    • 原来ASP里的“DELETE * FROM ……”要改为“DELETE FROM ……”

    • 有可能rs.update失败,修改成update 表名 set 字段=‘值’ 这样通过(遇到的情况,提示为:
      Microsoft OLE DB Provider for SQL Server 错误 '80040e38'

      乐观并发检查失败。已在此游标之外修改了该行。

      /Admin_ClassOrder.asp,行 164 )

    • access里面除法可以使用"/"或者"/",MSSQL里面只能使用"/"
     
    展开全文
  • Access教程 第Access数据库基础

    万次阅读 多人点赞 2008-03-12 12:39:00
     数据库技术产生于60年代末、70年代初,它的出现使计算机应用进入了一个新的时期——社会的每一个领域都与计算机应用发生了联系。数据库是计算机的最重要的技术之一,是计算机软件的一个独立分支,数据库是建立管理...
      
    
    本章内容
     
    ◆ 数据库基础知识及关系数据库管理系统。
    ◆ Access 2003 中文版介绍。
     
    数据库技术产生于 60年代末、70年代初,它的出现使计算机应用进入了一个新的时期——社会的每一个领域都与计算机应用发生了联系。数据库是计算机的最重要的技术之一,是计算机软件的一个独立分支,数据库是建立管理信息系统的核心技术,当数据库与网络通信技术、多媒体技术结合在一起时,计算机应用将无所不在,无所不能。
    作为本课程学习的开始,我们首先要了解的是:什么是数据库?什么是数据库管理系统?什么是 Access呢?
     
    一、数据库的基本知识
     
    1 .什么是数据库
     
    数据库这个词有多种解释,简单的定义是这样的:数据库( DataBase)是结构化数据的集合。
    从广义上讲,数据库就是数据或信息的集合,相当于一个数据仓库。具体来说,数据库是一组经过计算机整理后的数据,在关系数据库中,它由许多数据表组成。
    David M.Kroenke关于数据库的定义是:数据库是指自描述的完整记录的集合。它表达了三层含义:
    ⑴ 数据库是自描述的。
    数据库除了包含用户的源数据以外,还包含关于它本身结构的描述,这个描述称作数据词典(或数据目录、元数据)。从这个意义上讲,数据库与作为一个自描述的书的集合的图书馆相似:除了书籍以外,图书馆还包含一个描述它们的卡片目录。
    ⑵ 数据库是集成记录的集合。
    数据的标准结构如下:位 — > 字节 —> 域 —> 记录 —> 文件, 按这种模式说,文件组合成数据库是非常诱人的,但却无法深入,数据库将包含四种数据:用户数据文件、元数据、索引、应用元数据。
     
    用户数据大多表示为表格,称之为数据表,它存放了用户的各种有用资料和数据。例如:
    学生姓名
    指导老师
    老师电话
    刘小景
    钱志国
    5666043
    李 娟
    杨一如
    5666120
    古介新
    吴 萌
    4108219
    屈 达
    钱志国
    5666043
    王成义
    吴 萌
    4108219
     
    元数据是关于用户数据的结构的描述,称之为系统表。例如:
    表名
    字段数
    主关键字
    Student
    7
    学号
    Adviser
    4
    姓名
    Guideplan
    3
    学生姓名
     
     
    索引数据改进了数据库的性能和可访问性,称之为概括数据。例如:
    学生姓名
    指导老师
    古介新
    吴 萌
    李 娟
    杨一如
    刘小景
    钱志国
    屈 达
    钱志国
    王成义
    吴 萌
     
    指导老师
    老师电话
    钱志国
    5666043
    吴 萌
    4108219
    杨一如
    5666120
     
    应用元数据用来存储用户表格、报表、查询、媒体数据和其它形式的应用组件。并非所有的 DBMS都支持应用组件,支持应用组件的DBMS也不一定把全部组件的结构作为应用元数据存储在数据库中。
     
    ⑶ 数据库是模型的模型。
    数据库是用户关于现实世界的模型的模型。具体解释是:非计算机操作数据的情况下,人们所建立的一套文件、表格、数字等的处理内容和规则是人们关于现实世界的模型,在计算机操作数据的情况下,数据库设计者将在人们关于现实世界的模型的基础上再次建模,从而建立一个适用于计算机处理的数据库模型。
    三个世界的划分:
    现实世界(客观世界):实体、实体集、属性、实体标识符
    信息世界(观念世界):记录、文 件、字段、关键字
    数据世界(计算机世界):位、字节、字、块、卷
     
    2 .从文件管理到数据库管理
     
    前面提到从文件组合成数据库是非常诱人的,但却无法深入。实际上,在数据库处理之前,确实采用的文件管理方式,即用数据文件来存放数据,并通过高级语言完成对数据文件的操作。一个数据文件包含若干个“记录( Record)”,一个记录又包含若干个“数据项(Data Item)”,用户通过对文件的访问实现对记录的存取。通常称支持这种数据管理方式的软件为“文件管理系统”,它一直是操作系统的重要组成部分。
    随着计算机处理的数据量不断增加,文件管理系统采用的一次最多存取一个记录的访问方式,以及在不同文件之间缺乏相互联系的结构,不能适应管理大量数据的需要,于是数据库管理系统应运而生,并在上世纪 60年代末诞生了第一个商业化的数据库系统——IBM的IMS(Information Management System)。
     
    3 .数据库系统的特点
     
    与文件系统比较,数据库系统有下列特点:
    ⑴ 数据的结构化。文件系统中单个文件的数据一般是有结构的,但从整个系统来看,数据在整体上没有结构,数据库系统则不同,在同一数据库中的数据文件是有联系的,且在整体上服从一定的结构形式。
    ⑵ 数据的共享性。在文件系统中,数据一般是由特定的用户专用,数据库系统中的数据可以有为不同部门、不同单位甚至不同用户所共享。
    ⑶ 数据的独立性。在文件系统中,数据结构和应用程序相互依赖,一方的改变总是要影响到另一方的改变。数据库系统中的数据文件与应用程序之间的这种依赖关系已大大减小。
    ⑷ 数据的完整性。在数据库系统中,可以通过对数据的性质进行检查而管理它们,使之保持完整正确。如商品的价格不能为负数,一场电影的定票数不能超过电影院的座位数。
    ⑸ 数据的灵活性。数据库系统不是把数据简单堆积,而是在记录数据信息的基础上具有多种管理功能,如输入、输出、查询、编辑、修改等。
    ⑹ 数据的安全性。数据库系统中的数据具有安全管理功能。
    ⑺ 数据可控冗余度。数据专用时,每个用户拥有使用自己的数据,难免会出现数据相互重复,这就是数据冗余。实现数据共享后,不必要的数据重复将全部消除,有时为了提高查询效率,也保留少量的重复数据,其冗余度可以由设计者控制。
     
    4 .数据库系统的分代
     
    数据库系统可分为三代。
    ⑴ 非关系型数据库系统。是对第一代数据库系统的总称,包括层次型数据库系统和网状型数据库系统。其主要特点是:采用“记录”作为基本数据结构,在不同“记录型”之间,允许存在相互联系,一次查询只能访问数据库中的一个记录。( P3)
    ⑵ 关系型数据库系统( RDBS)。1970年,E.F.Codd在一篇名为“A Relational Model of Data For Large Shared Databanks(大型共享数据库数据的关系模型)”文章提出了“关系模型”的概念。70年代中期,商业化的RDBS问世,数据库系统进入第二代,目前PC机上使用的数据库系统主要是第二代数据库系统。其主要特点是:采用“表格”作为基本数据结构,在不同的表之间,允许存在相互联系,一次查询可以访问整个表格中的数据。
    ⑶ 对象—关系模型数据系统( ORDBS)。将数据库技术与面向对象技术相结合,以实现对多媒体数据和其它复杂对象数据的处理,这就产生了第三代数据库系统。其主要特点是:包含第二代数据库系统的功能,支持正文、图形图像、声音等新的数据类型,支持类、继承、方法等对象机制,提供高度集成的、可支持客户/服务器应用的用户接口。
     
     
    二、数据库管理系统和数据库应用系统
     
    1 .数据库管理系统
     
    实际上,数据库是存于某种存储介质上的相关数据有组织的集合,为了在计算机中对数据库进行定义、描述、建立、管理和维护,应通过特定的数据库语言进行,这就需要一套支持该数据库语言的系统软件,称作数据库管理系统( DBMS)。一般说,数据库管理系统具有下列功能:
    ⑴ 数据定义功能。 DBMS向用户提供“数据定义语言(DDL)”,用于描述数据库的结构,在关系数据库中其标准语言是SQL(Structured Query Language),它提供了DDL语句。
    ⑵ 数据操作功能。对数据库进行检索和查询,是数据库的主要应用。为此 DBMS向用户提供“数据操纵语言(DML)”,用于对数据库中的数据进行查询,同样SQL也提供了DML语句。
    ⑶ 控制和管理功能。除了 DDL和DML两类语句外,DBMS还具有必要的控制和管理功能。
    在讨论可视化的数据库管理系统(如VFP、Access)时,一般而言,从组成结构上看,DBMS的特点和功能可以分为三个子系统:设计工具子系统、运行子系统和DBMS引擎。
    设计工具子系统提供设计工具,包括表生成、窗体生成、查询生成、报表生成和过程语言编译器等工具,设计工具子系统与开发人员相关联。
    运行子系统提供对设计时产生的程序的执行,它与用户接口。
    DBMS引擎介于设计工具及运行子系统与数据本身之间。实际上,它将根据以上组件的请求,将其翻译成对操作系统的命令,以实现对物理介质上的数据的读写。除此之外, DBMS引擎还涉及事务管理、锁定、备份和恢复等工作。
     
    2 .数据库应用系统
     
    数据库应用系统(DataBase Application System、DBAS)专指基于数据库的应用系统。一个DBAS通常由数据库和应用程序两部分组成,它们都需要在DBMS支持下开发。开发一个信息系统,一是要设计数据库,二是要开发应用程序。并且,这二者亦是相互关联的。
     
    三、Access 2003内部结构
     
    Access 2003是一个功能强大、方便灵活的关系型数据库管理系统。 Access 2003作为一个小型数据库管理系统,它最多能为由此由25-30台计算机组成的小型网络服务。
     
    进入 Access 2003,打开一个示例数据库,可以看到如下的界面,在这个界面的【对象】栏中,包含有Access 2003的七个对象。另在【组】栏中,可以包含数据库中不同类型对象的快捷方式的列表,通过创建组,并将对象添加到组,从而创建了相关对象的快捷方式集合。
     
     
    Access 2003所提供的对象均存放在同一个数据库文件( .mdb)中。Access 2003中各对象的关系如下图所示。
     
     

     

     
     
     
     
     
     
     
     

    下面对Access 2003每一类对象进行简单介绍。
     
    1.
     
    表是Access 2003中所有其他对象的基础,因为表存储了其他对象用来在 Access 2003中执行任务和活动的数据。每个表由若干记录组成,每条记录都对应于一个实体,同一个表中的所有记录都具有相同的字段定义,每个字段存储着对应于实体的不同属性的数据信息。请看下图。
     
    每个表都必须有主关键字,其值能唯一标识一条记录的字段。以使记录唯一(记录不能重复,它与实体一一对应)。表可以建立索引,以加速数据查询。
    具有复杂结构的数据无法用一个表表示,可用多表表示。表与表之间可建立关联。
    每一个字段都包含某一类型的信息,如数据类型有文本、数字、日期、货币、 OLE对象(声音、图像)、超链接等。
    表的建立包括两部分,一部分是表的结构建立,另一部分是表的数据建立。
    数据库的每个对象都有两个视图,一个是设计视图,另一个是数据表对象视图。表的设计视图,可通过表设计器观察,它同时也是建立表结构的工具和方法。
     
    应当注意, Access 数据库只是数据库各个部分(表、查询、报表、模块、宏和指向Web HTML文档的数据访问页面)的一个完整的容器,而表是存储相关数据的实际容器。
     
    2. 查询
     
    数据库的主要目的是存储和提取信息,在输入数据后,信息可以立即从数据库中获取,也可以在以后再获取这些信息。查询成为了数据库操作的一个重要内容。
    Access 2003提供了三种查询方式。
     
    ⑴ 交叉数据表查询
    查询数据不仅要在数据表中找到特定的字段、记录,有时还需要对数据表进行统计、摘要。如求和、计数、求平均值等,这样就需要交叉数据表查询方式。请看下面的例子。
     
     
    SELECT 订单明细 .订单ID, 订单明细.产品ID, 产品.产品名称, 订单明细.单价,
    订单明细 .数量, 订单明细.折扣,
    CCur(订单明细 .单价*[数量]*(1-[折扣])/100)*100 AS 总价
    FROM   产品 INNER JOIN 订单明细 ON 产品.产品ID=订单明细.产品ID
    ORDER BY 订单明细 .订单ID;
     
    注:Ccur函数,返回一个转换为货币数据类型表达式的值。
     
    ⑵ 动作查询
    动作查询,也称为操作查询,可以运用一个动作同时修改多个记录,或者对数据表进行统一修改。动作查询有 4种,生成表、删除、添加和更新。
     
    ⑶ 参数查询
    参数即条件。参数查询是选择查询的一种,指从一张或多张表中查询那些符合条件的数据信息,并可以为他们设置查询条件。
     
    3. 窗体
     
    窗体向用户提供一个交互式的图形界面,用于进行数据的输入、显示及应用程序的执行控制。在窗体中可以运行宏和模块,以实现更加复杂的功能。在窗体中也可以进行打印。
    可以设置窗体所显示的内容,还可以添加筛选条件来决定窗体中所要显示的内容。窗体显示的内容可以来自一个表或多个表,也可以是查询的结果。还可以使用子窗体来显示多个数据表。
    4. 报表
     
    报表用来将选定的数据信息进行格式化显示和打印。报表可以基于某一数据表,也可以基于某一查询结果,这个查询结果可以是在多个表之间的关系查询结果集。报表在打印之前可以预览。另外,报表也可以进行计算,如求和、求平均值等。在报表中还可以加入图表。
     
     
    5.
     
    宏是若干个操作的集合,用来简化一些经常性的操作。用户可以设计一个宏来控制一系列的操作,当执行这个宏时,就会按这个宏的定义依次执行相应的操作。宏可以用来打开并执行查询、打开表、打开窗体、打印、显示报表、修改数据及统计信息、修改记录、修改数据表中的数据、插入记录、删除记录、关闭数据库等操作,也可以运行另一个宏或模块。
    宏没有具体的实际显示,只有一系列的操作。所以宏只能显示它本身的设计视图。
    宏有许多类型,它们之间的差别在于用户触发宏的方式。如果创建了一个 AutoKeys宏,用户可以通过按下一个键顺序地执行宏。如果创建了一个事件宏,当用户执行一个特定操作时,如双击一个控件或右击窗体的主体时,Access 2003就启动这个宏。如果创建了一个条件宏,当用户设置的条件得到满足时,条件宏就会运行。
     
    6. 模块
     
    模块是用 Access 2003所提供的VBA(Visual Basic for Application)语言编写的程序段。模块有两种基本类型:类模块和标准模块。模块中的每一个过程都可以是一个函数过程或一个子程序。模块可以与报表、窗体等对象结合使用,以建立完整的应用程序。VBA语言是VB的一个子集。
     
    VBA程序设计使用的是现在流行的面向对象的程序设计方法。另:宏可以转换为模块。
    7. Web
     
    Web页是 Access 2003提供的新功能,它使得Access 2003与Internet紧密结合起来。在Access 2003中用户可以直接建立Web页。通过Web页,用户可以方便、快捷地将所有文件作为Web发布程序存储到指定的文件夹,或将其复制到Web服务器上,以便在网络上发布信息。
    展开全文
  • 很多Access和SQL Server开发人员都经常面临着将一个Access数据库升级到SQL Server数据库的问题。由于存在现有的Access升级向导,这一转变的过程就会变得相当简单,尤其是当你建立一个与SQL Server数据相联系的...

    很多Access和SQL Server开发人员都经常面临着将一个Access数据库升级到SQL Server数据库的问题。由于存在现有的Access升级向导,这一转变的过程就会变得相当简单,尤其是当你建立一个与SQL Server数据相联系的ADP的时候。然而,向导并不是十全十美的,需要解决的问题还是大有存在。


    首先,有些对象并不是简单的升级,所以这时你不得不人为地处理。第二,很多Access特性──比如一些查询类型,对象,以及特定的数据类型在你没有做好升级之前的准备的情况下就会导致错误的产生。现在,让我们讨论一下在数据库升级过程中可能面临的问题,我将提供能够解决问题的一些通用的指导方法,最后,你必须花一定的时间和精力将这些知识应用到开发之中。

    哪些不能够升级?
    在处理实际的问题之前,让我们看看不能随意升级的对象,它们包括以下:

    交叉表查询
    包含SQL DISTINCTROW关键字的任何查询
    所有的隐藏对象
    作为参数的表格数据的查询(这些表格可以升级,但它们却不能正确的运行)
    Pass-Through查询
    SQL数据定义语言查询(比如CREATE TABLE, ALTER TABLE, 以及DROP语句)
    这些Access对象需要特定的处理。具体的,你将建立一个可比较的SQL Server对象,除此之外,SQL Server不支持Jet安全特性,所以你必须使用Windows认证和/或SQL Server安全机制。

    包括的问题点
    在数据库的升级之前,如果你已经知道哪些地方将可能导致错误并知道如何处理产生的错误,数据库升级过程中导致的错误的可能性将大大地减少。我能够提供的数据库升级的最好的建议是在开发之前做好最完整的计划。现在,我将列举数据库升级过程中可能会导致产生的问题──如果你没有做好计划之前的准备。

    不支持的日期
     
    关于日期,在Access和SQL Server之间都存在很大的差别。Access支持很大范围的日期,从100年1月1日到9999年12月31日。相反,SQL Server支持的日期从1753年1月1日到9999年12月31日。数据库的升级向导无法升级包含SQL Server不支持的日期的表格。这就意味着在升级之前你必须人工地处理这些日期。幸运的是,这一问题只影响少数的数据库。

    与表格控制相关的查询
    开发人员通常会使用表格控制的查询来限制或询问一个数据来源。一个表格可以提供将数据显示在一个特定报告中的多种选择。例如,SQL SELECT语句包含了用户的输入:

     SELECT Orders.RequiredDate, Orders.ShippedDate, Orders.Freight,
        Orders.ShipName, Orders.ShipAddress, Orders.OrderDate
    FROM Orders
    WHERE
     Orders.OrderDate Between [Forms]![DateFilter]![DateFrom] And [Forms]![DateFilter]![DateTo]));

    为了限定报告中的数据,用户可以输入一个开始和结束的日期到列表(DateFrom 和DateTo)。其他的代码可以打开并显示满足用户输入的两个日期之间的记录。

    因为这种查询方式被Jet处理,表格中产生的问题可以很快被解决。然而,当数据库升级时,SQL Server不会涉及到表格控制,结果通常为查询失败。为了修正这一查询方式,开发人员必须更改表格。我建议你使用输入参数属性,并将数值传递到SQL Server存储程序。

    交叉表查询
    SQL Server不支持Jet TRANSFORM语句──这一语句可以使一个交叉表查询成为可能。例如,数据库升级向导支持以下查询方式:

    TRANSFORM Sum(CCur([Order Details].UnitPrice*[Quantity]*(1-[Discount])/100)*100)
        AS ProductAmount
    SELECT Products.ProductName, Orders.CustomerID, Year([OrderDate]) AS OrderYear
    FROM Products INNER JOIN (Orders INNER JOIN [Order Details]
    ON Orders.OrderID = [Order Details].OrderID) ON Products.ProductID =
        [Order Details].ProductID
    WHERE Orders.OrderDate Between #1/1/1997# And #12/31/1997#
    GROUP BY Products.ProductName, Orders.CustomerID, Year([OrderDate])
    PIVOT "Qtr " & DatePart("q",[OrderDate],1,0) In ("Qtr 1","Qtr 2","Qtr 3","Qtr 4")

    还好,你无需在SQL Server中使用Transact-SQL (T-SQL) CASE关键词重新编写一个Access的交叉表查询。下面的SELECT语句描述了使用T-SQL方式重新建立一个交叉表查询的语法:

    SELECT Customers.CustomerID, Customers.CustomerName
        SUM (Case When Orders.Orderdate BETWEEN '01-Jan-1990' AND '31-Dec-1996'
        Then [UnitPrice]*[Quantity] Else 0 End) as 1997)
    FROM Customers INNER JOIN Orders
    ON CustomerID=Orders.CustomerID

    隐藏对象
    所有的隐藏对象在数据库升级过程中都被忽略。对此,你最好的处理方法是使用程序对象的GetHiddenAttribute属性检查对象。例如,以下代码使用这一方法决定对象是否被隐藏。
    Dim IsHidden As Boolean
    If Application.GetHiddenAttribute(objtype, objname) Then  
      IsHidden = True
    End If

    如果特定的对象被隐藏,IsHidden布尔变量将被为True。

    包含索引的表格
     
    数据库升级向导不支持没有索引或其他限制的表格。升级向导可以升级一个无索引的表格,但其转换之后只能成为一个只读的表格。幸运的是,解决这一问题很简单:添加一个索引到每一个没有索引的表格。一旦你已经完成升级数据库,请记住将添加的索引删除。

    数据库升级操作步骤
    一旦你已经做好一切准备,并确定操作可以开始。数据库升级向导可以为你提供三种选择:

    输出Access表格到SQL Server并链接到Access数据库
    使用Pass-Through查询与SQL Server的后台服务器的表格相互通讯
    将整个Access数据库移动到一个Access数据库工程(其只与SQL Server联系)
    为了启动数据库升级向导,先从工具菜单栏中选择数据库功能,然后从子菜单中选择升级向导。向导的第一个面板提供两种选择:你可以建立一个新的SQL Server 数据库来存放Access表格,如图A所示,或者你可以在一个现成的SQL Server数据库中添加表格。选择一个现成的SQL Server数据库将需要输入一个数据服务名称(DSN)。

    图 A

    选择建立一个新的数据库或者使用一个现成的数据库
     
    第二个面板要求获得SQL Server范例的信息。除此之外,你必须认证安全机制(如果存在)和为新的数据库提供一个缺省的名称,如图B所示。
    图B
    为一个新的数据库命名

    在这点上,你可以将需要的表格复制到SQL Server,你也可以指出完成的部分将成为一个完整的ADP或者一个被链接的表格,如图C所示。

    图 C

    指明一个ADP或者一个被链接的表格


    避开麻烦

    每一个开发人员都有不同的数据库升级操作的经验,所以无法保证第一次操作就能够达到成功。然而,如果你遵循本文中提供的有关规则,你应该遇到更少的错误,即使碰到,你也可以很容易地修正错误,并继续操作。

    展开全文
  • 2,按”添加“添加一个新的数据源,在选择栏里选“Driver do microsoft Access (*.mdb)”,完成后将出现一个框,在“数据库源”里面输入你想写的名称,我取名叫“ABC”,说明不需要填,接着,按下面的选择,寻找你
  • Access数据库及注入方法

    千次阅读 2019-01-14 18:46:30
    目录 Access数据库 Access数据库中的函数 ...Microsoft Office Access是微软把数据库引擎的图形用户界面和软件开发工具结合在一起的一个数据库管理系统。它是微软Office家族的一个成员。Acces...
  • 二、选项设置法 上述方法适用于偶尔以独占方式打开数据库,如果你经常要以独占方式打开数据库,那么请进行如下设置: 1.在“工具”菜单中,单击“选项”命令。 2.单击“高级”选项,在“默认打开模式”下,单击...
  • 很多Access和SQL Server开发人员都经常面临着将一个Access数据库升级到SQL Server数据库的问题。由于存在现有的Access升级向导,这一转变的过程就会变得相当简单,尤其是当你建立一个与SQL Server数据相联系的ADP的...
  • 很多朋友想用SQL2000数据库的编程方法,但是却又苦于自己是学ACCESS的,对SQL只是点点的了解而已,这里我给大家提供以下参考---将Access转化成SQL2000的方法和注意事项,首先,我说的是在Access2000,SQL2000...
  • 很多Access和SQL Server开发人员都经常面临着将一个Access数据库升级到SQL Server数据库的问题。由于存在现有的Access升级向导,这一转变的过程就会变得相当简单,尤其是当你建立一个与SQL Server数据相联系的ADP的...
  • MySQL是一个小型关系型数据库管理系统,开发者为瑞典MySQL AB公司。在2008年1月16号被Sun公司收购。目前MySQL被广泛地应用在Internet上的中小型网站中。由于其体积小、速度快、总体拥有成本低,尤其是开放源码这一...
  • ACCESS转成SQL数据库

    2012-04-06 10:30:04
    很多朋友想用SQL2000数据库的编程方法,但是却又苦于自己是学ACCESS的,对SQL只是点点的了解而已,这里我给大家提供以下参考---将ACCESS转化成SQL2000的方法和注意事项 ,首先,我说的是在ACCESS2000,SQL...
  • 次Delphi访问access数据库的总结

    千次阅读 2010-10-23 08:32:00
      由于项目需要写一个门禁接口,要使用Delphi访问access数据库一个表,不得已要使用以前都没用过的access数据库,现在接口写的差不多了,把自己在这当中学到的一些access记一下,以免到时候遗忘。...
  • ACCESS数据库批量替换

    千次阅读 2009-01-16 11:23:00
    对于ACCESS数据库发,如果想简单的批量替换数据库表中的内容,可以使用ACCESS自带的查找替换功能,但这功能只能用于一些不复杂的内容替换。想更快更准确的替换,还是得用到SQL执行语句。 方法之: 1 打开你的...
  • Asp.net项目用Sqlserver数据库正常,移植到Access就出现问题。其中:“Microsoft Jet 数据库引擎打不开文件'C:\***\*.mdb'。它已经被别的用户以独占方式打开,或没有查看数据的权限...”这错误我搞了半天才搞定...
  • 用VB生成DLL封装ASP代码一个例子:连接access数据库等 封装为dll会带来很多的好处,主要包括只是产权的保护,以及效率和安全性能的提升。这个例子中被封装的dll文件可以隐藏access数据库的实际路径。VB生成的DLL...
  • PowerDesigner生成Access数据库自从使用PD以来一直知道可以支持access但一直没有搞明白如何通过脚本来创建access数据表。在PD的tools里终于找到的答案,具体文件都在C:/Program Files/Sybase/PowerDesigner 12/Tools...
  • Excel VBA Sql 操作Access数据库

    千次阅读 热门讨论 2021-03-13 10:28:13
    主要介绍Excel与Access数据库的互连,及sql语句中的增、删、改的语法构造
  •  3 静态游标,只是数据的一个快照,用户对记录说做的修改,增加或删除记录都不会反映到记录集中。支持向前或向后移动  locktype  locktype为记录集的锁定类型,其取值为:  1 锁定类型,默认的,只读,...
  • Access数据库安全设置技巧

    千次阅读 2010-03-06 10:37:00
    部分论坛新手们没警惕自己论坛数据库存在的危险,所以还是 决定以Dvbbs7.0为例,介绍一下如何保护好你的Access...打开MicroSoft Access软件,是用独占方式打开你的DV论 坛数据库数据库默认位置为论坛根目录下的data/
  • ACCESS数据库程序设计

    千次阅读 2014-06-11 11:05:31
    节 基本概念 第二节 数据库的创建 第三节 数据查询 第四节 报表设计 第五节 窗体 第六节 宏 第七节 简单系统设计 练习   ACCESS数据库程序设计(教案)   ACCESS是Office自带的数据库工具,...
  • 关于远程连接access数据库问题

    千次阅读 2018-06-12 11:37:49
    关于远程连接access数据库的方法以及各个方法所存在的问题分析。1.Class.forName("com.hxtt.sql.access.AccessDriver");String strConnect = "jdbc:Access://///10.0.3.11/桌面/thjc.mdb";Jar:...
  • 很多朋友想用SQL2000数据库的编程方法,但是却又苦于自己是学ACCESS的,对SQL只是点点的了解而已,这里我给大家提供以下参考---将ACCESS转化成SQL2000的方法和注意事项 ,首先,我说的是在ACCESS2000,SQL...
  • 转自:http://iasp.bokee.com/ 笔名:iasp由于网络...Access数据库在使用过程中一般都会遇到这些问题,希望解决正在为此问题困惑的朋友的问题。-------------------------------------------以下是引用内容--------
  • 最近入侵了一个ACCESS的站,把得到的一些想法记录下来: 这个站设置很变态,什么都没有,连FSO都删了,好不容易找到一个宝贵的注入,点几经周折进了后台,看到可以更改上传类型,大喜,可是怎么改也改不了,最后发现上传类型...
  • ACCESS转成SQL数据库

    2007-05-10 21:04:00
    很多朋友想用SQL2000数据库的编程方法,但是却又苦于自己是学ACCESS的,对SQL只是点点的了解而已,这里我给大家提供以下参考---将ACCESS转化成SQL2000的方法和注意事项 ,首先,我说的是在ACCESS2000,SQL2000...
  • ACCESS转成SQL数据库

    千次阅读 2007-05-06 00:48:00
    很多朋友想用SQL2000数据库的编程方法,但是却又苦于自己是学ACCESS的,对SQL只是点点的了解而已,这里我给大家提供以下参考---将ACCESS转化成SQL2000的方法和注意事项 ,首先,我说的是在ACCESS2000,SQL2000...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 55,888
精华内容 22,355
关键字:

access只能打开一个数据库