VBA Access - Criando tabelas temporárias no Banco de dados MS Access - Creating temporary tables in MS Access DB

Não é raro necessitarmos de tabelas temporárias para fazermos testes, mas como criá-las?


SELECT * INTO tempTable FROM myTable WHERE myTable.id_MyTable IS NULL

       

INSERT INTO myTable SELECT * FROM tempTable

DROP temptable

       

SELECT "X" AS MyId, 1 AS F1, 1 AS f2 INTO MyTempTable

Para simular os demais testes abaixo, certifique-se de abrir o Northwind, nosso banco de dados de exemplo.

Este exemplo cria uma nova tabela chamada 'ThisTable' com 2 campos texto.

Sub CreateTableX1()
    Dim dbs As Database

    ' Modifique este linha para incluir o path do Northwind no seu computador.
    Set dbs = OpenDatabase("Northwind.mdb")

    ' Cria uma tabela com 2 campos texto.
    dbs.Execute "CREATE TABLE ThisTable " _
        & "(FirstName CHAR, LastName CHAR);"

    dbs.Close
End Sub


O exemplo abaixo cria uma nova tabela chamada 'MyTable' com 2 campos texto, um campo Date/Time, e um único índice para os três campos.

Sub CreateTableX2()
    Dim dbs As Database


    ' Modifique este linha para incluir o path do Northwind no seu computador.

    Set dbs = OpenDatabase("Northwind.mdb")

    ' Cria uma tabela com três campos e u múnico índice para os três.
    dbs.Execute "CREATE TABLE MyTable " _
        & "(FirstName CHAR, LastName CHAR, " _
        & "DateOfBirth DATETIME, " _
        & "CONSTRAINT MyTableConstraint UNIQUE " _
        & "(FirstName, LastName, DateOfBirth));"

    dbs.Close
End Sub


O exemplo abaixo cria uma nova tabela chamada 'MyTable' com 2 campos texto e um campo Integer. O campo 'SSN' contém a chave primária (primary key).


Sub CreateTableX3()
     Dim dbs As Database

    ' Modifique este linha para incluir o path do Northwind no seu computador.
    Set dbs = OpenDatabase("Northwind.mdb")

    ' Cria uam tabela com três campo e uma chave primária (primary key).
    dbs.Execute "CREATE TABLE NewTable " _
        & "(FirstName CHAR, LastName CHAR, " _
        & "SSN INTEGER CONSTRAINT MyFieldConstraint " _
        & "PRIMARY KEY);"

    dbs.Close
End Sub

Também poderíamos criar um função que copiasse uma tabela sem os seus registros.


Public Sub subCreateTableCopy(strTableName As String)

' Cria a cópia temporária de uma tabela com o prefixo 'temp'

Dim dbs As Database

Dim tdf As TableDef

Dim strTempTable As String



On Error GoTo Error_subCreateTableCopy



Set dbs = CurrentDb



Let strTempTable = "temp" & strTableName 



' Checa se a tabela existe e deleta-a

For Each tdf In dbs.TableDefs

    If tdf.Name = strTempTable Then

        DoCmd.DeleteObject acTable, strTempTable

        GoTo DeletedTable

    End If

Next



' Cria a cópia da tabela antes de atualizá-la.

DeletedTable:

DoCmd.CopyObject , strTempTable, acTable, strTableName ' Create the copy



Exit_subCreateTableCopy:

Exit Sub



Error_subCreateTableCopy:

MsgBox "Erro " & Err.Number & " - " & Err.Description

Resume Exit_subCreateTableCopy

End Sub


Reference::
http://msdn.microsoft.com/en-us/library/bb177893(v=office.12).aspx


Tags: SQL, Access, create, select, UDF, Statement, Table, 





Nenhum comentário:

Postar um comentário

diHITT - Notícias