1
下面的代码的开始应该获取窗体上的文本框中的文件名的BaseName并将它设置为一个字符串“tblnewbid”。 Debug.Print tblnew bid会正确打印正确的表名称。我验证了字符完全匹配,并且有一个与该名称匹配的实际表。字符串不工作作为表名称 - 访问VBA -
当我运行代码时出现错误:找不到表或约束。如果我手动将tblnew更改为实际的表名,代码运行良好。难道我需要将tblnewbid设置为字符串以外的其他字符?
Private Sub btnInsertRegions_Click()
DoCmd.Hourglass True ' turn on Hourglass
Dim db As Database
Dim rs As Recordset
Dim strSQL As String
Dim FSO As New FileSystemObject
Dim tblnewbid As String
Set db = CurrentDb
tblnewbid = FSO.GetBaseName(Me.txtFileName)
Debug.Print tblnewbid
db.Execute "ALTER TABLE tblnewbid ADD COLUMN O_StateRegion CHAR", dbFailOnError
db.Execute "ALTER TABLE tblnewbid ADD COLUMN D_StateRegion CHAR", dbFailOnError
Set rs = db.OpenRecordset("Select [OriginState] from [tblnewbid];")
rs.MoveFirst
strSQL = "UPDATE [tblnewbid] INNER JOIN [tblStates]"
strSQL = strSQL & " ON [tblStates].[StateAbbrev] = [tblnewbid].[OriginState]"
strSQL = strSQL & " SET [tblnewbid].[O_StateRegion]=[tblStates].[StateRegion]"
db.Execute (strSQL), dbFailOnError
rs.MoveFirst
strSQL = "UPDATE [tblnewbid] INNER JOIN [tblStates]"
strSQL = strSQL & " ON [tblStates].[StateAbbrev] = [tblnewbid].[DestinationState]"
strSQL = strSQL & " SET [tblnewbid].[D_StateRegion]=[tblStates].[StateRegion]"
db.Execute (strSQL), dbFailOnError
rs.Close
Set rs = Nothing
那肯定让我失去了那个错误。非常感谢你。但是,一旦我阅读了你的答案,就有必要在整个代码中做这件事。 (见本评论的结尾)但是当我这样做时,我得到和下一行中的错误,说:太少的参数。预计1.'设置rs = db.OpenRecordset(“从”&tblnewbid & " ;“选择[OriginState])'任何想法? –
Nevermind。我发现实际表中的错误。字段名称不正确。但我确信它可以正常工作 –
它确实运行得非常好,谢谢! –