Database Excel可以将自己用作数据库吗?
我在MSDN上找到了一个,上面写着: ADO可以将Excel工作簿视为数据库 那么,Excel工作簿是否可以连接到自身,并将其中一个工作表视为数据库表并对其执行查询这可以通过VBA编程实现吗 Excel可以将自己用作RDBMS吗 不,但您可以将其用作没有关系特性的DBMS 那么Excel工作簿是否可以将自身用作数据库 不涉及设计、DRI、BCP、HA等。。。2个主要街区: 行限制 文件被独占锁定,没有共享,所以只有一个用户 评论后: 它是否支持关系模型无关紧要,它没有RDBMS所期望的特性:PKs、FKs、触发器、约束、默认值等 在此基础上,如何唯一标识一行 行号不是:代理项键仍然需要Excel不支持的唯一约束,以确保自然键是唯一的 Excel可以将自己用作RDBMS吗 不,但您可以将其用作没有关系特性的DBMS 那么Excel工作簿是否可以将自身用作数据库 不涉及设计、DRI、BCP、HA等。。。2个主要街区: 行限制 文件被独占锁定,没有共享,所以只有一个用户 评论后: 它是否支持关系模型无关紧要,它没有RDBMS所期望的特性:PKs、FKs、触发器、约束、默认值等 在此基础上,如何唯一标识一行Database Excel可以将自己用作数据库吗?,database,excel,excel-2007,ado,rdbms,Database,Excel,Excel 2007,Ado,Rdbms,我在MSDN上找到了一个,上面写着: ADO可以将Excel工作簿视为数据库 那么,Excel工作簿是否可以连接到自身,并将其中一个工作表视为数据库表并对其执行查询这可以通过VBA编程实现吗 Excel可以将自己用作RDBMS吗 不,但您可以将其用作没有关系特性的DBMS 那么Excel工作簿是否可以将自身用作数据库 不涉及设计、DRI、BCP、HA等。。。2个主要街区: 行限制 文件被独占锁定,没有共享,所以只有一个用户 评论后: 它是否支持关系模型无关紧要,它没有RDBMS所期望的特性:PK
行号不支持:代理键仍然需要Excel中不支持的唯一约束,以确保自然键是唯一的。是的,您可以从VBA中使用DAO或ADO连接到Excel文件。有时这是一个有用的把戏。例如,我将摘要报告分发给几个用户,使用此技巧,我可以在单独的工作表中提供事务数据,并使用VBA提供从摘要到细节的深入分析 有一些Microsoft支持页面向您展示了如何执行此操作 您的链接显示了ADO的基本功能。就是我用过的那个 这是我使用DAO的示例中的代码。您可以看到它是如何连接的,以及组装查询的示例
Dim mPath As String
Dim mName As String
Dim ColcnT As Long
Dim C As Long
Dim RecCnt As Long
Dim mPeriod As String
mPath = ActiveWorkbook.Path
mName = ActiveWorkbook.Name
mPeriod = Range("mperiod")
Dim dbtmp As dao.Database
Dim tblobj As dao.TableDef
Dim rs As Recordset
Dim qd As dao.QueryDef
Set dbtmp = OpenDatabase(mPath & "\" & mName, False, True, "Excel 8.0;")
DoEvents
If PeriodType = 1 Then Set qd = dbtmp.CreateQueryDef("", "SELECT * FROM mDrillDATA WHERE (((SubOwner1)=[msubowner]) AND ((ACC)=[mACC]) AND ((period)=[mperiod]))")
If PeriodType = 2 Then Set qd = dbtmp.CreateQueryDef("", "SELECT * FROM mDrillDATA WHERE (((SubOwner1)=[msubowner]) AND ((ACC)=[mACC]))")
qd.Parameters("msubowner") = mOwner
qd.Parameters("mACC") = mACC
If PeriodType = 1 Then qd.Parameters("mperiod") = mPeriod
Set rs = qd.OpenRecordset(dbOpenDynaset)
是的,您可以从VBA中使用DAO或ADO连接到excel文件。有时这是一个有用的把戏。例如,我将摘要报告分发给几个用户,使用此技巧,我可以在单独的工作表中提供事务数据,并使用VBA提供从摘要到细节的深入分析 有一些Microsoft支持页面向您展示了如何执行此操作 您的链接显示了ADO的基本功能。就是我用过的那个 这是我使用DAO的示例中的代码。您可以看到它是如何连接的,以及组装查询的示例
Dim mPath As String
Dim mName As String
Dim ColcnT As Long
Dim C As Long
Dim RecCnt As Long
Dim mPeriod As String
mPath = ActiveWorkbook.Path
mName = ActiveWorkbook.Name
mPeriod = Range("mperiod")
Dim dbtmp As dao.Database
Dim tblobj As dao.TableDef
Dim rs As Recordset
Dim qd As dao.QueryDef
Set dbtmp = OpenDatabase(mPath & "\" & mName, False, True, "Excel 8.0;")
DoEvents
If PeriodType = 1 Then Set qd = dbtmp.CreateQueryDef("", "SELECT * FROM mDrillDATA WHERE (((SubOwner1)=[msubowner]) AND ((ACC)=[mACC]) AND ((period)=[mperiod]))")
If PeriodType = 2 Then Set qd = dbtmp.CreateQueryDef("", "SELECT * FROM mDrillDATA WHERE (((SubOwner1)=[msubowner]) AND ((ACC)=[mACC]))")
qd.Parameters("msubowner") = mOwner
qd.Parameters("mACC") = mACC
If PeriodType = 1 Then qd.Parameters("mperiod") = mPeriod
Set rs = qd.OpenRecordset(dbOpenDynaset)
这是可能的,但这将是一个非常糟糕的主意!如果需要数据库,应该使用真实的数据库。您需要数据类型和索引、PK/FK约束以及轻松查询和限制放置在数据库中的信息类型的能力。我还从来没有见过Excel电子表格对数据有这样的限制,你需要真实的数据库信息来保证数据的完整性。这是可能的,但这将是一个非常糟糕的主意!如果需要数据库,应该使用真实的数据库。您需要数据类型和索引、PK/FK约束以及轻松查询和限制放置在数据库中的信息类型的能力。我从未见过Excel电子表格对真实数据库信息具有数据完整性所需的数据有各种限制。对于现在所有可用的免费真实数据库,仅仅因为你可以,并不意味着你应该……Excel不是一个数据库。我花了太多的时间把excel数据库变成真实的数据库。请不要这样对待它。对于现在所有可用的免费真实数据库,仅仅因为你可以,并不意味着你应该…Excel不是一个数据库。我花了太多的时间把excel数据库变成真实的数据库。请不要那样对待它。更正我的问题标题以反映。谢谢。为什么不能是RDBMS呢?例如,我可以有一张客户表、一张订单表和一张产品表,这些表都有适当的id值来支持这些关系。不切实际但很有可能。Excel支持关系表/工作表、属性列和元组行。。。这符合RDBMS的定义,RDBMS是一种可以将数据视为行和列的集合的DBMS。更正了我的问题标题以反映。谢谢。为什么不能是RDBMS呢?例如,我可以有一张客户表、一张订单表和一张产品表,这些表都有适当的id值来支持这些关系。不切实际但很有可能。Excel支持关系表/工作表、属性列和元组行。。。哪个f
这是RDBMS的定义,一种可以将数据视为行和列的集合的DBMS。您能否将我们链接到一些页面,向您展示如何做到这一点?或者它只是一个简单的ADO/DAO连接,使用Excel引擎而不是{DB engine}连接到Excel文件?您可以将我们链接到一些页面,向您展示如何实现这一点吗?或者它只是使用Excel引擎而不是{DB engine}与Excel文件的简单ADO/DAO连接??