Important:

Quaisquer soluções e/ou desenvolvimento de aplicações pessoais, ou da empresa, que não constem neste Blog podem ser tratados como consultoria freelance.

Views

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, 

Inline image 1

LinkWithinBrazilVBAAccessSpecialist

Related Posts Plugin for WordPress, Blogger...

Vitrine