Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/ms-access/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql server 更改VC++;6从SQL Server访问应用程序数据库-我可以使用链接表吗? 我们有一个Visual C++ 6应用程序,它使用DAO在Access数据库中存储数据。数据库类是使用ClassWizard创建的,基于CDaoRecordset_Sql Server_Ms Access_Visual C++ - Fatal编程技术网

Sql server 更改VC++;6从SQL Server访问应用程序数据库-我可以使用链接表吗? 我们有一个Visual C++ 6应用程序,它使用DAO在Access数据库中存储数据。数据库类是使用ClassWizard创建的,基于CDaoRecordset

Sql server 更改VC++;6从SQL Server访问应用程序数据库-我可以使用链接表吗? 我们有一个Visual C++ 6应用程序,它使用DAO在Access数据库中存储数据。数据库类是使用ClassWizard创建的,基于CDaoRecordset,sql-server,ms-access,visual-c++,Sql Server,Ms Access,Visual C++,我们需要从访问转移到SQL Server,因为有些客户端有巨大的(1.5Gb+)数据库,运行报告的速度非常慢(使用Crystal reports和其他应用程序) 我们并不太担心这个VC++应用程序的性能——它正在从数据记录器下载数据并将其放入数据库 我使用“Microsoft SQL Server Migration Assistant 2008 for Access”将我的数据库从Access迁移到SQL Server,然后它链接了原始Access数据库中的表。如果打开Access数据库,则可

我们需要从访问转移到SQL Server,因为有些客户端有巨大的(1.5Gb+)数据库,运行报告的速度非常慢(使用Crystal reports和其他应用程序)

我们并不太担心这个VC++应用程序的性能——它正在从数据记录器下载数据并将其放入数据库

我使用“Microsoft SQL Server Migration Assistant 2008 for Access”将我的数据库从Access迁移到SQL Server,然后它链接了原始Access数据库中的表。如果打开Access数据库,则可以浏览SQL Server数据库中的数据

然后,我尝试在我的应用程序中使用该数据库,并不断遇到问题

我已将所有记录集更改为
dbOpenDynaset
,而不是
dbOpenTable
。我还将
myrecordsetptr->open()
调用更改为
myrecordsetptr->open(dbOpenDynaset,NULL,dbSeeChanges)
,这样就不会出现异常

但是。。。现在,当我尝试使用
myrecordsetptr->->->SetCurrentIndex(_T(“PrimaryKey”))设置当前索引时,我遇到了一个异常3251-“此类型对象不支持操作”的问题

在不重写所有数据库访问代码的情况下,让链接表工作有什么诀窍吗


[更新17/7/09-谢谢提示-我会将所有
Seek()
引用更改为
FindFirst()
/
FindNext()
,并根据我的方式进行更新]

是的,但我认为您无法设置/更改记录集中链接表的索引,因此您必须相应地更改代码


例如:如果您的代码希望设置索引和调用seek,则基本上必须使用Find方法来重写它。

当您将表从Access移动到SQL Server时,为什么要使用SetCurrentIndex?
我的意思是-您仅对链接表使用Access


另外,如第页所示,它说明SetCurrentIndex可用于表类型记录集。

在什么上下文中使用命令SetCurrentIndex?如果它是使用SEEK的子例程,则不能将其用于链接表

而且,它是Jet专用的,如果使用不同的后端,它将不会有任何价值

我建议不要使用SEEK(即使是在使用Jet表的访问中),除非在最不寻常的情况下,您需要在一个循环中在一个表上跳上千次。在所有其他DAO环境中,您应该使用限制性WHERE子句来检索有限数量的记录(如果您使用SEEK来获取单个记录),或者应该使用.FindFirst/FindNext。是的,后两者在比例上比SEEK慢得多,但它们更易于移植,而且绝对性能差异只有在执行数千次时才有意义


此外,如果搜索位于有序字段上,则可以通过检查搜索的值是否大于或小于当前记录的值,并相应地选择.FindPrevious或.FindNext(因为DAO记录集的查找操作是按顺序通过索引进行的)。

那么,问题是什么?引发“操作不受支持”的代码行是什么?