Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sqlite/3.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
Ms access 如何在ODBC连接中结束文件上的Windows锁定?_Ms Access_Sqlite_Linked List_Odbc_Dsn - Fatal编程技术网

Ms access 如何在ODBC连接中结束文件上的Windows锁定?

Ms access 如何在ODBC连接中结束文件上的Windows锁定?,ms-access,sqlite,linked-list,odbc,dsn,Ms Access,Sqlite,Linked List,Odbc,Dsn,我使用Access从一系列结构相同的SQLite 3数据库导入数据。我有一个“Import.db”的系统/用户DSN。My Access DB已将表链接到Import.DB中的表 我的目标是通过链接表将数据导入Access表,然后删除import.db,然后将下一个SQLite3 db复制到同一位置,并将其命名为import.db,然后继续重复该过程,直到导入所有数据 我采用这种方法是因为我不知道如何动态创建DSN和SQLite3数据库的链接表。SQL Server,是的,但不是SQLite3。

我使用Access从一系列结构相同的SQLite 3数据库导入数据。我有一个“Import.db”的系统/用户DSN。My Access DB已将表链接到Import.DB中的表

我的目标是通过链接表将数据导入Access表,然后删除import.db,然后将下一个SQLite3 db复制到同一位置,并将其命名为import.db,然后继续重复该过程,直到导入所有数据

我采用这种方法是因为我不知道如何动态创建DSN和SQLite3数据库的链接表。SQL Server,是的,但不是SQLite3。所以我想,只要使用相同的DSN,但改变实际的文件

问题是,在打开my Access DB并打开链接表后,Access会在Import.DB上创建一个Windows文件锁。所以我不能删除和替换它。相反,我可以导入一个,然后关闭Access,重新打开Access,然后重复。没那么热


建议?

您可以通过以下方式获取链接表的连接字符串:

Debug.Print CurrentDb.TableDefs("MyLinkedTable").Connect
现在,您已经获得了创建在不使用链接表的情况下导入的查询所需的信息

您可能会得到这样的结果:

ODBC;DSN=SQLite3;Database=Z:\Docs\Import.db;StepAPI=0;SyncPragma=NORMAL;
NoTXN=0;Timeout=;ShortNames=0;LongNames=0;NoCreat=0;NoWCHAR=0;
FKSupport=0;JournalMode=;OEMCP=0;LoadExt=;BigInt=0;
但您可能不需要大部分,因此:

sODBC = "[ODBC;DSN=SQLite3;Database=Z:\Docs\Import.db;]"
''Create table query, but append and update are also easy enough
sSQL = "SELECT * INTO SQLite_Import FROM " & sODBC & ".SQLiteTableNameHere"

CurrentDb.Execute sSQL, dbFailOnError