Can you give an MS Access equivalent to MySQL 'CREATE TABLE IF NOT EXISTS ...'?
Update
Something like this
IF <no such table>
CREATE TABLE history(<fields>)
would be suitable as well
Can you give an MS Access equivalent to MySQL 'CREATE TABLE IF NOT EXISTS ...'?
Update
Something like this
IF <no such table>
CREATE TABLE history(<fields>)
would be suitable as well
if not exists (select * from sysobjects where id = object_id(N'[TABLENAME]') and OBJECTPROPERTY(id, N'IsUserTable') = 1)
For SQL DDL code the answer is no. ACE/Jet SQL does not have any control-of-flow syntax and a ACE/Jet PROCEDURE
can only execute one SQL statement. Yes, that's right: an ACE/Jet PROCEDURE
does not support procedural code :(
Here is how to do it via VBA:
Sub ViaVBA()
Const strSQLCreateFoo_c As String = _
"CREATE TABLE Foo" & _
"(" & _
"MyField1 INTEGER," & _
"MyField2 Text(10)" & _
");"
Const strSQLAppendBs_c As String = _
"INSERT INTO Foo (MyField1, MyField2) " & _
"SELECT Bar.MyField1, Bar.MyField2 " & _
"FROM Bar " & _
"WHERE Bar.MyField2 Like 'B*';"
If Not TableExists("foo") Then
CurrentDb.Execute strSQLCreateFoo_c
End If
CurrentDb.Execute strSQLAppendBs_c
End Sub
Private Function TableExists(ByVal name As String) As Boolean
On Error Resume Next
TableExists = LenB(CurrentDb.TableDefs(name).name)
End Function
Why would you want to create a table? If it's for temporary data storage then that's fine otherwise that's usuaally not required.
See the TempTables.MDB page at my website which illustrates how to use a temporary MDB in your app. http://www.granite.ab.ca/access/temptables.htm