asp 往 Access 日期时间类型字段写入值时 或查询值时 类型不匹配的问题
广告投放★自助友情CMS落伍广告联盟晒乐广告联盟脉动广告联盟品味广告联盟
广告位可自定样式联系QQ:38355018个文字广告月20元广告联系QQ:3835501广告位可自定样式
8个文字广告月20元黄金广告位每月20元广告位可自定样式联系QQ:3835501广告位可自定样式
左旋肉碱、全国包邮
买二送一、无效退款

文章浏览→编程相关Asp编程→asp 往 Access 日期时间类型字段写入值时 或查询值时 类型不匹配的问题

asp 往 Access 日期时间类型字段写入值时 或查询值时 类型不匹配的问题
asp 往 Access 日期时间类型字段写入值时 或查询值时 类型不匹配的问题
 

概要
当您从 Active Server Page (ASP) 中使用 Now 、 Date 或 Time函数时,时间和日期的格式根据模拟用户、身份验证用户、登录用户以及服务器上操作系统版本等参数的不同而有所不同。

备注:除非您特地模拟某一用户,否则模拟用户与身份验证用户相同。此外,登录用户是指登录服务器的用户。
 回到顶端

更多信息
根据客户要求,从系统中读取区域设置的方式(主要是日期/时间格式)已经在操作系统的最近版本中做出更改,以便为开发人员提供对此功能的更多控制。

虽然区域设置在上述的各个操作系统(除 WindowsNT 4.0之外)中的功能有所不同,但它们具有一项共同的行为特征:当没有人实际登录系统时,区域设置在所有操作系统版本中具有相同的功能。
 回到顶端

从 ASP 中访问时的日期/时间格式化方式
IIS 4.0 (Windows NT 4.0)
当没有人实际登录服务器时,IIS 从系统默认设置中(尤其是从 Locale.nls文件中)读取日期/时间格式(和其他区域设置)。您可以在"控制面板"的"区域设置"部分更改此设置,更改之后必须重新启动计算机。

当有人登录计算机时,IIS会读取登录用户的区域设置。这些设置从 HKEY_CURRENT_USER/ControlPanel/International注册表配置单元中的用户配置文件设置中读取。您可以在"控制面板"的"区域设置"部分更改此设置,更改之后必须重新启动计算机。
IIS 5.0(Windows 2000 和 Windows 2000 Service Pack 1)
在操作系统安装过程中,将在系统注册表的 HKEY_USERS/.Default/ControlPanel/International 配置单元中指定并写入区域设置选项。

通常,当显示日期/时间的 ASP 页得到请求时,IIS将首先确定注册表中是否已加载身份验证用户的配置文件。如果已加载,IIS将读取该用户配置文件的区域设置 ID,然后在 IIS高速缓存中进行查找(如果此区域设置的区域设置已缓存)。如果被缓存,IIS将用缓存的格式为请求提供服务。如果没有在缓存值中找到该区域设置,则从HKEY_CURRENT_USER/Control Panel/International注册表配置单元中该用户的配置文件设置中读取日期/时间格式。信息随即被缓存,而IIS 将显示具有所缓存日期/时间格式的 ASP 页。

如果身份验证用户没有用户配置文件,IIS将从系统默认设置中读取区域设置ID,然后在缓存的区域设置中查找该区域设置。如果找到缓存值,IIS将用缓存的格式为请求提供服务;否则,IIS 将从HKEY_USERS/.Default/Control Panel/International注册表配置单元中的系统默认设置中读取该格式。信息随即被缓存,而 IIS将显示具有所缓存日期/时间格式的 ASP 页。

但是,此逻辑存在问题。对于每一个请求,IIS将检查是否为结果区域设置 ID 缓存了日期/时间格式。如果 IIS找到缓存的格式,就会使用它。如果首次浏览到该页的用户的区域设置 ID与要用于 ASP 页的预期区域设置 ID 相同,但它们的日期格式不同于要用于ASP 页的预期日期格式,则会出现问题。在这种情况下,该区域设置 ID的缓存日期格式具有错误的格式,并且将向请求该页的其余用户提供。

当没有用户实际登录服务器时,IIS将从上述注册表位置读取日期/时间格式以及其他区域设置,而不像在Windows NT 4.0 中一样从 Locale.nls 文件中读取。
IIS 5.0(Windows 2000 Service Pack 2 和更高版本)
在 Windows 2000 Service Pack 2 (SP2)中,默认行为如以上所述。但是,您也可以自定义设置:您可以更改基OLEAUT 组件,也可以更改 IIS 使其允许在 OLEAUT中进行此更改。

您可以在全局设置 OLEAUT的注册表项。这不会重写通过使用公开的调用来显式设置该选项的进程。因此,如果您设置以下IIS 值,则将重写 OLEAUT 设置。
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\OLEAUT
VarConversionLocaleSetting = 0,1,2 (DWORD)
备注:OLEAUT项可能不存在。如果它不存在,则必须先创建该项。

您也可以设置 IIS 的值,它也会重写 OLEAUT的任何全局设置。此外,无论是否设置该注册表项,IIS 都将调用此 OLEAUT应用程序编程接口 (API)。
HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\InetInfo\Parameters
SetVarConversionLocaleSetting = 0,1,2 (DWORD)
值 0、1 和 2 对于 OLEAUT 和 IIS 都相同,其定义如下: ? 0 -默认行为,如以上所述。此格式完全是随机的。它基于设置高速缓存的最后用户或进程。
? 1 - 此格式基于请求这些值(调用 OLEAUT32.dll文件)的线程的当前标识。在 IIS中,这是身份验证用户配置文件设置,因为 IIS在默认情况下模拟身份验证用户。如果身份验证用户的配置文件不存在或者未加载到注册表中,它将默认为HKEY_USERS\.default\Control Panel\International注册表配置单元中的系统默认设置。

您可以如此配置 Web应用程序:请求这些格式的线程上的模拟用户可以始终是相同的用户;这样,您可以建立一致的格式。例如,如果您在ASP页上使用模拟访问,则无论谁登录系统,也无论哪一个实际用户请求该页,都将返回相同的日期格式。
? 2 -此格式强制为使用系统默认的区域设置。系统默认设置在重新启动时为计算机设置。若要修改默认系统设置,请选择新的区域设置,然后单击控制面板上的"区域设置"工具中的设置默认值。您必须重新启动计算机,以使此更改生效。在这种情况下,日期格式不是从注册表中读取的,而是从该区域设置的Locale.nls 文件中读取的。

备注:当更改默认区域设置时,将更改所有区域设置(货币、时间、日期等)。无法修改区域设置中的特定设置。

IIS 5.0 (ASP.NET)
基本行为和基本原则在 ASP.NET 中保持不变。例如,对Response.Write(Now()) 和 Response.Write(Date())函数的调用仍像在该操作系统的传统 ASP 中一样工作。但是,ASP.NET中有特殊的格式函数来格式化日期/时间和其他区域性信息。有关更多信息,请参见CultureInfo、RegionInfo 和 System.Globalization 命名空间的 MSDN文档。
 回到顶端

相关信息
如果您需要的区域设置日期/时间格式不同于系统默认区域设置,则最好在ASP 页中使用以下代码来设置格式:
<%   Session.LCID=2058
'OR use the VBScript SetLocale function to set the locale.
Response.Write FormatDateTime( Now(), 2)
'The Constant 2 is for obtaining the vbShortDate.
%>本文主要侧重于日期/时间格式。由于 IIS缓存日期/时间格式的方式,区域设置的其余部分可能与日期/时间格式表现出不同的行为。例如,货币格式也取决于区域设置,但遵循用"IIS5.0(Windows 2000 Service Pack 2 和更高版本"节中的设置 1所指定的逻辑。

从服务(如 Internet 信息服务(IIS))访问日期/时间格式的方式不同于其他独立进程(非服务)访问日期/时间格式的方式。通常,独立程序的区域设置从应用程序启动用户的用户配置文件中进行访问,该用户通常与登录用户具有相同的帐户。

由于服务甚至在没有人登录计算机时也会运行,因此必须通过某种方式在没有用户登录计算机时检索区域设置。HKEY_USERS/.Default/ControlPanel/International注册表配置单元中的系统默认设置可以检索区域设置。

访问这些区域设置的方式在有人登录系统时取决于某些参数,而这些行为对于不同的操作系统将有所不同。

 

-----------------------------------------------------------

以前都是MSsql 很少用ac的库 即使用也是在Server系统下!

这次在xp系统下,遇到了很多没遇到的问题!

 

一句话:解决方法用到日期时间的地方 格式化时间FormatDateTime( now(), 2)

所属分类:编程相关Asp编程    作者:新浪博客    时间:2010-11-20 0:00:00

文章导航