当前位置: 首页 > 面试题库 >

在带有Microsoft OLE DB Provider for Jet 4.0的EXCEL中有关SQL的任何参考/手册?

丌官博文
2023-03-14
问题内容

与Jet的Microsoft OLE DB提供程序连接的 EXCEL中 是否有关于SQL语法的参考/手册?

例如,如何编写日期类型的常量?

有哪些关键字/功能/条款?


问题答案:

当使用Excel作为Jet 4.0数据源时,我所知道的最佳参考是:

如何将ADO与Visual
Basic或VBA中的Excel数据一起使用

特别重要的是,当现有列包含混合数据类型时,如何确定其总体数据类型。

关于用于Jet 4.0的Microsoft OLE DB提供程序,最相关的文章是这样的:

ADO提供程序属性和设置:Microsoft Jet 4.0提供程序属性

就是说,在早期的文章中可以更好地介绍Excel特定的细节。

使用Excel和SQL时应注意的一个重要陷阱:

BUG:当您通过使用ActiveX数据对象(ADO)查询打开的Excel工作表时,会发生内存泄漏

有哪些关键字/功能/条款?

关于使用Jet 4.0 SQL,这篇文章是我所发现的最好的:

中级Microsoft Jet 4.0 SQL

从理论上讲,“访问帮助”的“ SQL”部分应该是相关的,但是它的质量特别低,并且Jet
4.0的覆盖范围特别小。

同样,并非所有内容都可以直接在Excel中运行。例如,尽管您可以使用CREATE TABLESQL DDL创建新的工作表和工作簿,但是NOT NULL由于在物理上这是不可能的,因此您无法创建一个有能力的列。另外,Excel的数据类型不那么精细,例如大多数数字类型都映射到DOUBLE FLOAT

关于可以在SQL中使用的表达式,Jet 4.0表达式服务以某种方式使用了VBA表达式服务。广义上讲,Jet可以使用任何VBA 5.0(不是最新版本,即VBA
6.0)函数,该函数不是卷入值并返回返回值的方法,仅具有简单的固有数据类型(无数组,无对象等)。 )。我想说的是对的,Microsoft从未明确发布过Jet
4.0支持的VBA功能的权威列表。但是,我相信以下文章中的列表恰好与Jet 4.0中可用的VBA函数的列表完全一致:

如何配置Jet 4.0以防止在Access 2003中运行不安全的功能

(该列表在子标题“对Jet 4.0 Service Pack 3和更高版本使用沙箱模式操作”下的表格中。)

请注意,某些功能在Jet 4.0中的行为不同于在VBA中的行为。从我的头顶上,我可以想到两个。IIF()可以在Jet
4.0中快捷方式(未记录,AFIAK):在VBA中,将同时评估TRUEFALSE条件,在Jet
4.0中,仅评估匹配的条件。CDEC()(广播到DECIMAL)功能在Jet
4.0中已损坏。

如何编写日期类型的常量?我是说,用SQL表示2011.01.20(此常数)的方法,例如,我使用的是“
2011-01-20”或#2011-01-20#,还是其他?

我知道这是一种“文字价值”。

这与VBA相同,即#m/d/yyyy#今天是#1/20/2011#。但是,我更喜欢使用ISO
8601日期格式和单引号(出于可移植性),并且始终包含时间字段(因为Jet
4.0仅具有一种时态数据类型,即DATETIME),并且为了确保遵守区域设置,请使用CDATE()强制转换DATETIME功能例如今天的日期是CDATE('2011-01-20 00:00:00')

[最初认为OP的意思是“如何创建类型的列DATE?”]

您可以使用CREATE TABLEDDL例如

CREATE TABLE [Excel 8.0;DATABASE=C:\MyNewWorkbook.xls].MyTable 
(
 my_date_col DATETIME
);

请注意,虽然Jet
4.0将支持的数据类型DATETIME,但是在Excel中编辑工作簿时没有这样的约束:如果表Range被扩展并且添加了非临时数据,那么Jet
4.0可以看到的数据类型可能会更改为结果。



 类似资料:
  • 问题内容: 我正在学习如何在Excel驱动的SQL查询中使用参数(实际上,我仍在学习SQL),我想更进一步,并在Excel中提供一个参数来过滤结果。 这是我的查询: 我需要做的是允许团队中的人在excel工作表中运行此查询,并在第二个JOIN中为“ GROUP_NAME”提供其组名。不幸的是,我无法使用语法(在此处找到),因为我需要从MODULE_FUNCTION表中提取所有结果,并且仅在提供的组

  • 我正在使用Varnish cache 6.0。6.有时我需要基于URL忽略GET参数和任何标题使缓存无效。我为此使用命令。 获取用于检索内容的命令。他们得到的结果是不同的。 BAN命令禁止两个缓存。 清漆配置 但是,ban命令仅对第一个请求使缓存无效。第二个请求保持缓存状态。如何使以

  • 问题内容: 我正在寻找一种存储信息的函数应该使用的结构的方法。每个结构对应于某些数据库表。 我希望能够为表动态选择结构。 目标DRY(我大约有30张桌子,功能相同) 我努力了: 使用,但我不知道是否/如何使用它()定义新变量 定义带有每个ListOfTables条目的Record,并创建一个切片,例如和 搜索SO和godocs 在我看来,即使不是这样,也不愿意“得到” 。 更新: 我相信最大的区别

  • 问题内容: 我正在尝试测试将参数传递给sql.DB.Query方法的行为(使用database / sql包和github.com/lib/pq上的PostgreSQL驱动程序)。处理原始查询字符串以查看如何插入参数后,是否有任何方法可以获取原始查询字符串?例如,我正在考虑编写一个准备好的查询,然后检查结果语句。有任何想法吗?谢谢! 问题答案: 它看起来不像在查询本身中插入参数。它发送查询,然后等

  • 我在JDK11上有一个使用maven的spring-boot应用程序,具有以下liquibase依赖项: changelog主文件名为db.changelog.xml,位于ProiectTest\src\main\resources\db下,在Application.Properties上具有以下配置: 我是不是漏掉了什么?根据我的了解,application.properties上的属性是所需要

  • 问题内容: 我正在向数据库中插入大约500 000个对象,其中许多对象是相同的(数据库中具有相同的主键表示),但是其他字段可能不同,因此我使用的方法是“更新-如果没有受影响的行-插入”。问题在于,有时对象的某些字段设置为null(无法从文件读取),并且已经在数据库中设置了某些值,因此我将其更新为null =删除它。)如何实现方案,即只更新字段不为空? 这是我现在如何做的一个简单示例: 问题答案: