SQL Server의 getdate()
함수를 사용하는 MS Access의 연결된 테이블에 대한 쿼리가 있습니다. 기능MS Access에서 SQL Server의 연결된 테이블 전달 쿼리
가 어떻게 SQL 서버 T-SQL 구문의 사용을 허용 연결된 테이블을 만들려면 어떻게해야합니까에서
정의되지 않은 함수에 GetDate : 나는 쿼리를 실행하려고 할 때 그러나, 나는이 오류가? 나는 이것이
pass through query
라고하지만, 어떻게 통과 쿼리로 연결 테이블에 연결을 사용하도록 설정 해야할지 모르겠 참조하십시오.현재 액세스 2010을 사용하여 쿼리는이 :
Function LinkTable(LinkedTableAlias As String, Server As String, Database As String, SourceTableName As String, OverwriteIfExists As Boolean, Username As String, Password As String) 'This method will also update the link if the underlying table definition has been modified. If (InStr(1, LinkedTableAlias, "MSys") > 0) Then Log "Skipping " & LinkedTableAlias Exit Function End If 'The overwrite parameter will cause it to re-map/refresh the link for LinktedTable Alias, but only if it was already a linked table. ' it will not overwrite an existing query or local table with the name specified in LinkedTableAlias. 'Links to a SQL Server table without the need to set up a DSN in the ODBC Console. Dim tdfLinked As DAO.TableDef ' Open a database to which a linked table can be appended. Dim dbsCurrent As Database Set dbsCurrent = CurrentDb() 'Check for and deal with the scenario ofthe table alias already existing If TableNameInUse(LinkedTableAlias) Then 'If InStr(dbsCurrent.TableDefs(LinkedTableAlias).Connect, "AccessBackup") Then ' Exit Function 'End If If (Not OverwriteIfExists) Then Log "Can't use name '" + LinkedTableAlias + "' because it would overwrite existing table." Exit Function End If 'delete existing table, but only if it is a linked table 'If IsLinkedTable(LinkedTableAlias) Then dbsCurrent.TableDefs.Delete LinkedTableAlias dbsCurrent.TableDefs.Refresh 'Else ' Log "Can't use name '" + LinkedTableAlias + "' because it would overwrite an existing query or local table." ' Exit Function 'End If End If 'Create a linked table Set tdfLinked = dbsCurrent.CreateTableDef(LinkedTableAlias) tdfLinked.SourceTableName = SourceTableName tdfLinked.Connect = "ODBC;DRIVER={SQL Server};SERVER=" & Server & ";DATABASE=" & Database & ";UID=" & Username & ";PWD=" & Password & ";" On Error Resume Next dbsCurrent.TableDefs.Append tdfLinked If (err.Number = 3626) Then 'too many indexes on source table for Access err.Clear On Error GoTo 0 If LinkTable(LinkedTableAlias, Server, Database, "vw" & SourceTableName, OverwriteIfExists, Username, Password) Then Log "Can't link directly to table '" + SourceTableName + "' because it contains too many indexes for Access to handle. Linked to view '" & "vw" & SourceTableName & "' instead." LinkTable = True Else Log "Can't link table '" + SourceTableName + "' because it contains too many indexes for Access to handle. Create a view named '" & "vw" & SourceTableName & "' that selects all rows/columns from '" & SourceTableName & "' and try again to circumvent this." LinkTable = False End If Exit Function End If On Error GoTo 0 '** Turn on error handling On Error GoTo ErrorHandler: tdfLinked.RefreshLink LinkTable = True Exit Function ErrorHandler: Log "refreshlink failed for " & tdfLinked.Name LinkTable = True
'getdate()'는 ms-sql 서버 인 data-source의 함수입니다. 연결된 테이블이있을 때 액세스가 자동으로 t-sql로 변환됩니까? – SumGuy
@SumGuy : getdate()는 MSAccess가 아닌 MSSQL의 함수이며 그 때문에 오류가 발생합니다. –
나는 그것을 이해하지만, 내 질문이 아니에요, 어떻게 그것을 링크 된 데이터 소스를 사용하고 원본 데이터베이스에서 쿼리를 통해 통과합니까? 원래의 질문을 업데이트했습니다. 지금까지 도와 주셔서 감사합니다 – SumGuy