我正在将MS Access前端/后端应用程序移植到MS Access前端/ sql server后端。
此应用程序的一部分(以原始格式)使用VB将CSV文件导入前端的表中,然后运行各种SQL语句以将此表的内容合并到一些后端表中。
我认为在新环境中,因为在存储过程中执行合并过程效率更高,我的策略应该是
我认为我成功地执行了第1步和第2步,但我不确定。我可以在SQL Server Management Studio中看到临时表,但是尝试打开列失败并显示错误(当我使用Management Studio创建临时表时,它也会失败并出现相同的错误,所以我认为这是一个Management Studio问题)
我正在使用相同的代码执行第3步,因为我在启动应用程序时用于链接所有永久表,但它的这一点不起作用。最后,我已经通过对非临时表运行它来证明第5步有效。
我用于此的代码如下
Set conn = New ADODB.Connection
conn.Open getStrConn
'First create a temporary table on the server for the web site leads
SQL = "CREATE TABLE [dbo].[#WebSiteLeads]("
SQL = SQL & "[leadID] [int] IDENTITY(1,1) PRIMARY KEY CLUSTERED,[Title] [nvarchar](255) NULL,[Firstname] [nvarchar](50) NULL,"
SQL = SQL & "[Lastname] [nvarchar](50) NULL,[Sex] [nvarchar](10) NULL,[House] [nvarchar](50) NULL,"
SQL = SQL & "[Address1] [nvarchar](50) NULL,[Address2] [nvarchar](50) NULL,[Street] [nvarchar](50) NULL,"
SQL = SQL & "[Town_City] [nvarchar](50) NULL,[County] [nvarchar](50) NULL,[Postcode] [nvarchar](10) NULL,"
SQL = SQL & "[Email] [nvarchar](50) NULL,[Allow_email] [nvarchar](5) NULL,[Telephone] [nvarchar](20) NULL,"
SQL = SQL & "[Allow_tel] [nvarchar](5) NULL,[Cons_period] [nvarchar](20) NULL,[When] [nvarchar](20) NULL,"
SQL = SQL & "[Procedure] [nvarchar](20) NULL,[Consultation] [nvarchar](10) NULL,[Info_pack] [nvarchar](10) NULL,"
SQL = SQL & "[Source] [nvarchar](20) NULL,[Further_info] [nvarchar](255) NULL,[Callback] [nvarchar](50) NULL,"
SQL = SQL & "[Date_added] [nvarchar](30) NULL,[Date_added_dt] [datetime] NULL,[Callback_range] [tinyint] NULL,"
SQL = SQL & "[UcFname] [nvarchar](1) NULL,[UcLname] [nvarchar](50) NULL,[UcPcode] [nvarchar](10) NULL);"
conn.Execute SQL
For Each td In CurrentDb.TableDefs
If td.name = "WebsiteLeads" Then
CurrentDb.TableDefs.Delete "WebsiteLeads"
End If
Next
'link to the table just created
Set td = CurrentDb.CreateTableDef("WebsiteLeads",dbAttachSavePWD , "[dbo].[#WebSiteLeads]", getStrConn)
CurrentDb.TableDefs.Append td
importProgress = 0.1 'Update Progress bar
DoEvents
'Import our text file
DoCmd.TransferText acImportDelim, "Leads Import v2", "WebsiteLeads", txtFileName
importProgress = 0.3 'Update Progress bar
DoEvents
'We are going to do the rest as Access stored procedure
Set leadsRS = conn.Execute("EXEC dbo.LeadsImport;")
importProgress = 0.9 'Update Progress bar
DoEvents
但它在
失败了 CurrentDb.TableDefs.Append td
错误消息“无法找到可安装的ISAM”。
这是什么错误消息,为什么我得到它
答案 0 :(得分:1)
另一种选择是根本不使用链接表,而是使用返回临时表的直通查询。您可能需要动态编写它,但一旦它返回正确的临时表,它就可以用作表单或报告的记录源。
我不经常创建替换链接表的已保存查询,但我从未使用连接到临时表的直通来完成它。