问题描述:
在Delphi7下用dbExpress控件(TSimpleDataSet)访问SQL Server 2000自带数据库Pubs,有些表能读出,有些表读不出,并报错:'Operation not applicable'。环境描述:
(1) 操作系统为简体中文版Windows 2000 Server, 版本为5.00.2195
(即Build 2195 Service Pack 3)。
(2) SQL Server 2000中文标准版,版本为8.00.760 SP3。
(3) Delphi 7 的版本为Version 7.0 (Build 4.453)
(4) dbExpress驱动程序(dbexpmss.dll)已换成:2002-10-10,7:01:00
128,000字节 版本。
(5) 上述环境集中在一台计算机上。问题详述:
在上述环境中,用TSQLConnection + TSimpleDataSet + TDataSource + TDbGrid 显示SQL Server 2000自带数据库的数据,发现有三个表不能访问:
Sales, Titles, Employee
出现错误信息: "Operation not applicable"
其它表的内容则可以显示。本人之所以作上述测试,就是在开发时偶尔发现上述问题,遂拿SQL的例子数据库作试验,不想锁定了上述三个目标,
请问各位大侠,是什么原因造成的?相关支撑软件有没有更新的版本??相关控件的属性设置:TSQLConnection :
ConnectionName = 'pubs' //自已定义的连接名
DriverName = 'MSSQL'
GetDriverFunc = 'getSQLDriverMSSQL'
LibraryName = 'dbexpmss.dll'
LoginPrompt = False
Params.Strings = (
'DriverName=MSSQL'
'HostName=desktop' // 这是本人的机器名
'DataBase=pubs'
'User_Name=sa'
'Password='
'BlobSize=-1'
'ErrorResourceFile='
'LocaleCode=0000'
'MSSQL TransIsolation=ReadCommited'
'OS Authentication=False')
VendorLib = 'oledb'
TSimpleDataSet:
Aggregates = <>
Connection = scDemo // 就是上述TSQLConnection的Name,就算用TSimpleDataSet自带的连接,也有同样问题的。
DataSet.SchemaName = 'dbo' // 写不写,一样的出错现象. 写上时,可以列出表名,不写时,列不出
DataSet.CommandText = 'sales' //这里只有sales,titles,employee三表有上述现象,其它表时表现良好
DataSet.CommandType = ctTable //如果改成ctQuery, CommendText改成:select * from Sales|titles|employee问题同样
DataSet.MaxBlobSize = -1
DataSet.Params = <>
Params = <>
在Delphi7下用dbExpress控件(TSimpleDataSet)访问SQL Server 2000自带数据库Pubs,有些表能读出,有些表读不出,并报错:'Operation not applicable'。环境描述:
(1) 操作系统为简体中文版Windows 2000 Server, 版本为5.00.2195
(即Build 2195 Service Pack 3)。
(2) SQL Server 2000中文标准版,版本为8.00.760 SP3。
(3) Delphi 7 的版本为Version 7.0 (Build 4.453)
(4) dbExpress驱动程序(dbexpmss.dll)已换成:2002-10-10,7:01:00
128,000字节 版本。
(5) 上述环境集中在一台计算机上。问题详述:
在上述环境中,用TSQLConnection + TSimpleDataSet + TDataSource + TDbGrid 显示SQL Server 2000自带数据库的数据,发现有三个表不能访问:
Sales, Titles, Employee
出现错误信息: "Operation not applicable"
其它表的内容则可以显示。本人之所以作上述测试,就是在开发时偶尔发现上述问题,遂拿SQL的例子数据库作试验,不想锁定了上述三个目标,
请问各位大侠,是什么原因造成的?相关支撑软件有没有更新的版本??相关控件的属性设置:TSQLConnection :
ConnectionName = 'pubs' //自已定义的连接名
DriverName = 'MSSQL'
GetDriverFunc = 'getSQLDriverMSSQL'
LibraryName = 'dbexpmss.dll'
LoginPrompt = False
Params.Strings = (
'DriverName=MSSQL'
'HostName=desktop' // 这是本人的机器名
'DataBase=pubs'
'User_Name=sa'
'Password='
'BlobSize=-1'
'ErrorResourceFile='
'LocaleCode=0000'
'MSSQL TransIsolation=ReadCommited'
'OS Authentication=False')
VendorLib = 'oledb'
TSimpleDataSet:
Aggregates = <>
Connection = scDemo // 就是上述TSQLConnection的Name,就算用TSimpleDataSet自带的连接,也有同样问题的。
DataSet.SchemaName = 'dbo' // 写不写,一样的出错现象. 写上时,可以列出表名,不写时,列不出
DataSet.CommandText = 'sales' //这里只有sales,titles,employee三表有上述现象,其它表时表现良好
DataSet.CommandType = ctTable //如果改成ctQuery, CommendText改成:select * from Sales|titles|employee问题同样
DataSet.MaxBlobSize = -1
DataSet.Params = <>
Params = <>
本人经进一步的研究发现,后台数据库已经准备接受到取数据的命令(select * from ...),问题一定出在Delphi 7及dbExpress的处理上。
更进一步的研究发现,只要SQL的表中出现Datatime类型的列,就一定会出现上述
的错误。难道这是dbExpress的BUG???? 有没有解决该问题的新版本? 不要告诉我用TSQLDataSet啊(好象用TSQLDataSet没有上述问题)。
咱们就是要探讨"这个"问题如何解决。
咱的可是已经升级过一次的。有没有更成熟一点的dbExpress?
三个表我都试过没问题呀!TSQLConnection + TSimpleDataSet + TDataSource + TDbGrid XP+MSDE
我应该怎样做啊???
SQLConnection1+SQLDataSet1+DataSetProvider1,SocketConnection1+ClientDataSet1
晚上回到家里,果然发现,家中的机器没有这个现象,难怪在办公室里,经常发生怪怪的现象,看来是有些不同。
家里的SQL是SP2。其它的都一样(可是咱用SQL SP2的SSNETLIB.DLL/DBNETLIB.DLL在办公室里试过,好象问题依然出现,我只替换上述两个DLL文件)。
各位大侠,大家一起想想,问题可能出在哪里?
SAMLLDATATIME
http://www.1931-9-18.org/baodiao/20040324.htm抵制日货
打倒小日本