MS Access:如果不存在则添加列(或 try/catch 它)
MS Access: adding column if not exist (or try/catch it)
这是一个简单的问题,但我找不到答案...
我必须检查一列是否存在,如果测试是否定的则添加它。我如何只使用 sql 代码?
这是 SQL 服务器的语法:
IF NOT EXISTS (
SELECT *
FROM sys.columns
WHERE object_id = OBJECT_ID(N'[dbo].[Person]')
AND name = 'ColumnName'
)
BEGIN
--STUFF HERE
END
对于 MS Access,仅使用 SQL 代码...正确的语法是什么?
UPDATE:还有一种方法可以执行 try cath 语句,我只需要在不存在的情况下不添加任何内容...所以,还有一个try catch 没问题,我想。 try catch 也很容易在 sql 服务器中使用...并用于访问?
更新 2:我已经这样做了:
If Not Exists (Select Column_Name
From INFORMATION_SCHEMA.COLUMNS
Where Table_Name = 'TabTessereVeicoli'
And Column_Name = 'TAGA')
begin
ALTER TABLE TabTessereVeicoli ADD TAGA text(25) NULL;
end
但我收到错误消息“SQL 语句无效。应为 DELETE、INSERT、PROCEDURE、SELECT 或 UPDATE。”为什么?我怎样才能在 IF 之后做一个改变 table?
您不能在 Access SQL 中执行此操作。
您可以 运行 这个:
ALTER TABLE TabTessereVeicoli ADD TAGA text(25) NULL;
并忽略错误,或者您可以使用 VBA 打开 TableDef 并进行修改。
合并(并测试)VBA 其他人的片段,以检查 Microsoft Access 中是否存在字段,并将字段添加到 table。 (我想我会重新陈述它们,部分是为了我自己参考!)
检查字段是否存在于 table:
Function DoesFieldExist(sTable As String, sField As String) As Boolean
Err.Clear
On Error GoTo setfalse:
If (DCount(sField, sTable) = 0) And Err Then _
DoesFieldExist = False Else DoesFieldExist = True
setfalse:
End Function
向 table 添加新字段:
Sub AddFieldToTable(sTable As String, sField As String, sType As String)
On Error GoTo sError
CurrentProject.Connection.Execute "ALTER TABLE " & sTable & _
" ADD " & sField & " " & sType & ";"
Debug.Print "Added field [" & sField & "]"
Exit Sub
sError:
Debug.Print "Error adding field: " & Err, Err.Description
Stop
End Sub
当然,如有必要,它们可以很容易地合并为一个功能。
这是一个简单的问题,但我找不到答案...
我必须检查一列是否存在,如果测试是否定的则添加它。我如何只使用 sql 代码?
这是 SQL 服务器的语法:
IF NOT EXISTS (
SELECT *
FROM sys.columns
WHERE object_id = OBJECT_ID(N'[dbo].[Person]')
AND name = 'ColumnName'
)
BEGIN
--STUFF HERE
END
对于 MS Access,仅使用 SQL 代码...正确的语法是什么?
UPDATE:还有一种方法可以执行 try cath 语句,我只需要在不存在的情况下不添加任何内容...所以,还有一个try catch 没问题,我想。 try catch 也很容易在 sql 服务器中使用...并用于访问?
更新 2:我已经这样做了:
If Not Exists (Select Column_Name
From INFORMATION_SCHEMA.COLUMNS
Where Table_Name = 'TabTessereVeicoli'
And Column_Name = 'TAGA')
begin
ALTER TABLE TabTessereVeicoli ADD TAGA text(25) NULL;
end
但我收到错误消息“SQL 语句无效。应为 DELETE、INSERT、PROCEDURE、SELECT 或 UPDATE。”为什么?我怎样才能在 IF 之后做一个改变 table?
您不能在 Access SQL 中执行此操作。 您可以 运行 这个:
ALTER TABLE TabTessereVeicoli ADD TAGA text(25) NULL;
并忽略错误,或者您可以使用 VBA 打开 TableDef 并进行修改。
合并(并测试)VBA 其他人的片段,以检查 Microsoft Access 中是否存在字段,并将字段添加到 table。 (我想我会重新陈述它们,部分是为了我自己参考!)
检查字段是否存在于 table:
Function DoesFieldExist(sTable As String, sField As String) As Boolean
Err.Clear
On Error GoTo setfalse:
If (DCount(sField, sTable) = 0) And Err Then _
DoesFieldExist = False Else DoesFieldExist = True
setfalse:
End Function
向 table 添加新字段:
Sub AddFieldToTable(sTable As String, sField As String, sType As String)
On Error GoTo sError
CurrentProject.Connection.Execute "ALTER TABLE " & sTable & _
" ADD " & sField & " " & sType & ";"
Debug.Print "Added field [" & sField & "]"
Exit Sub
sError:
Debug.Print "Error adding field: " & Err, Err.Description
Stop
End Sub
当然,如有必要,它们可以很容易地合并为一个功能。