Private Declare Function GetUserName Lib "advapi32.dll" Alias _"GetUserNameA" (ByVal lpBuffer As String, nSize As Long) As Long

✔ Programação GLOBAL® - Quaisquer soluções e/ou desenvolvimento de aplicações pessoais, ou da empresa, que não constem neste Blog devem ser tratados como consultoria freelance. Queiram contatar-nos: brazilsalesforceeffectiveness@gmail.com | ESTE BLOG NÃO SE RESPONSABILIZA POR QUAISQUER DANOS PROVENIENTES DO USO DOS CÓDIGOS AQUI POSTADOS EM APLICAÇÕES PESSOAIS OU DE TERCEIROS.
Private Declare Function GetUserName Lib "advapi32.dll" Alias _"GetUserNameA" (ByVal lpBuffer As String, nSize As Long) As Long
Objeto Tipo Tabela 1 Query 5 Tabela Conectada 4, 6, or 8 Formulário -32768 Relatório -32764 Módulo -32761
Poderá listar os objetos na base de dados Access como abaixo:SELECT MSysObjects.Type, MSysObjects.Name FROM MSysObjects WHERE MSysObjects.Name Not Like "~*" ORDER BY MSysObjects.Type, MSysObjects.Name;Onde Type poderá colocar um dos valores da tabela acima. (Infelizmente, o modo provido pelo DML não é o caminho mais fácil para se ler os nomes dos campos nas tabelas.)
Similarmente, você pode aplicar o comandos CREATE/ALTER/DROP em outras coisas tais como índices, constraints, views e procedures (queries), usuário e grupos (segurança.)
Enquanto o DDL é importante para algumas bases de dados enormes, ele é limitado no uso com o MS Access. Você pode criar um campo Texto, mas não pode configurá-lo com a propriedade Largura Diferente de Zero, ou características similares. Pode criar um campo Yes/No, mas não pode dizer que o dataentry ocorrerá por meio de um text box, ou um check box. Também poderá criar um campo Date/Time, mas não poderá configurar a sua propriedade Format. DDL não pode criar campos Hyperlink, ou campos Attachment.
Poderá executar uma query DDL sob o DAO ou ADO.
Parar DAO, use: dbEngine(0)(0).Execute strSql, dbFailOnErrorParar ADO, use: CurrentProject.Connection.Execute strSql
Índice das Funções
|
Descrição
|
CreateTableDDL()
|
Cria duas tabelas, seus índices e relacionamentos, ilustrando os diferentes tipos de campos suas propriedades configuradas.
|
CreateFieldDDL()
|
Ilustra como adicionar um campo para uma tabela.
|
CreateFieldDDL2()
|
Adiciona um campo a uma tabela em outra base de dados.
|
CreateViewDDL()
|
Cria uma nova query.
|
DropFieldDDL()
|
Deleta o campo de uma tabela.
|
ModifyFieldDDL()
|
Muda o tipo ou tamanho de um campo. (Este é o mais comum uso do DDL.)
|
AdjustAutoNum()
|
Configura o start da AutoNumeração.
|
DefaultZLS()
|
Cria um campo que tem por default ser uma stringque não suporta ficar vazia.
|
Option Compare Database
Option Explicit
Sub CreateTableDDL()
Dim cmd As New ADODB.Command
Dim strSql As String
Let cmd.ActiveConnection = CurrentProject.Connection
'Cria o "Contractor" na tabela.
Let strSql = "CREATE TABLE tblDdlContractor " & _ "(ContractorID COUNTER CONSTRAINT PrimaryKey PRIMARY KEY, " & _ "Surname TEXT(30) WITH COMP NOT NULL, " & _ "FirstName TEXT(20) WITH COMP, " & _ "Inactive YESNO, " & _ "HourlyFee CURRENCY DEFAULT 0, " & _ "PenaltyRate DOUBLE, " & _ "BirthDate DATE, " & _ "EnteredOn DATE DEFAULT Now(), " & _ "Notes MEMO, " & _ "CONSTRAINT FullName UNIQUE (Surname, FirstName));"
"(ContractorID COUNTER CONSTRAINT PrimaryKey PRIMARY KEY, " & _
"Surname TEXT(30) WITH COMP NOT NULL, " & _
"FirstName TEXT(20) WITH COMP, " & _
"Inactive YESNO, " & _
"HourlyFee CURRENCY DEFAULT 0, " & _
"PenaltyRate DOUBLE, " & _
"BirthDate DATE, " & _
"EnteredOn DATE DEFAULT Now(), " & _
"Notes MEMO, " & _
"CONSTRAINT FullName UNIQUE (Surname, FirstName));"
Let cmd.CommandText = strSql cmd.Execute Debug.Print "tblDdlContractor criada." 'Cria a tabela de Booking.
cmd.Execute
Debug.Print "tblDdlContractor criada."
'Cria a tabela de Booking.
Let strSql = "CREATE TABLE tblDdlBooking " & _ "(BookingID COUNTER CONSTRAINT PrimaryKey PRIMARY KEY, " & _ "BookingDate DATE CONSTRAINT BookingDate UNIQUE, " & _ "ContractorID LONG REFERENCES tblDdlContractor (ContractorID) " & _ "ON DELETE SET NULL, " & _ "BookingFee CURRENCY, " & _ "BookingNote TEXT (255) WITH COMP NOT NULL);"
"(BookingID COUNTER CONSTRAINT PrimaryKey PRIMARY KEY, " & _
"BookingDate DATE CONSTRAINT BookingDate UNIQUE, " & _
"ContractorID LONG REFERENCES tblDdlContractor (ContractorID) " & _
"ON DELETE SET NULL, " & _
"BookingFee CURRENCY, " & _
"BookingNote TEXT (255) WITH COMP NOT NULL);"
Let cmd.CommandText = strSql cmd.Execute Debug.Print "tblDdlBooking criado." End Sub Sub CreateFieldDDL() Dim strSql As String Dim db As DAO.Database
cmd.Execute
Debug.Print "tblDdlBooking criado."
End Sub
Sub CreateFieldDDL()
Dim strSql As String
Dim db As DAO.Database
Let Set db = CurrentDb()
Let strSql = "ALTER TABLE MyTable ADD COLUMN MyNewTextField TEXT (5);" db.Execute strSql, dbFailOnError Set db = Nothing Debug.Print "MyNewTextField adicionado para MyTable" End Sub Function CreateFieldDDL2() Dim strSql As String Dim db As DAO.Database Set db = CurrentDb()
db.Execute strSql, dbFailOnError
Set db = Nothing
Debug.Print "MyNewTextField adicionado para MyTable"
End Sub
Function CreateFieldDDL2()
Dim strSql As String
Dim db As DAO.Database
Set db = CurrentDb()
Let strSql = "ALTER TABLE Table IN 'C:\A&A\Junkki.mdb' ADD COLUMN MyNewField TEXT (5);" db.Execute strSql, dbFailOnError Set db = Nothing Debug.Print "MyNewField Adicionado!" End Function Function CreateViewDDL() Dim strSql As String
db.Execute strSql, dbFailOnError
Set db = Nothing
Debug.Print "MyNewField Adicionado!"
End Function
Function CreateViewDDL()
Dim strSql As String
Let strSql = "CREATE VIEW qry1 as SELECT tblInvoice.* from tblInvoice;" CurrentProject.Connection.Execute strSql End Function Sub DropFieldDDL() Dim strSql As String
CurrentProject.Connection.Execute strSql
End Function
Sub DropFieldDDL()
Dim strSql As String
Let strSql = "ALTER TABLE [MyTable] DROP COLUMN [DeleteMe];" DBEngine(0)(0).Execute strSql, dbFailOnError End Sub Sub ModifyFieldDDL() Dim strSql As String
DBEngine(0)(0).Execute strSql, dbFailOnError
End Sub
Sub ModifyFieldDDL()
Dim strSql As String
Let strSql = "ALTER TABLE MyTable ALTER COLUMN MyText2Change TEXT(100);" DBEngine(0)(0).Execute strSql, dbFailOnError End Sub Function AdjustAutoNum() Dim strSql As String
DBEngine(0)(0).Execute strSql, dbFailOnError
End Sub
Function AdjustAutoNum()
Dim strSql As String
Let strSql = "ALTER TABLE MyTable ALTER COLUMN ID COUNTER (1000,1);" CurrentProject.Connection.Execute strSql End Function Function DefaultZLS() Dim strSql As String
CurrentProject.Connection.Execute strSql
End Function
Function DefaultZLS()
Dim strSql As String
Let strSql = "ALTER TABLE MyTable ADD COLUMN MyZLSfield TEXT (100) DEFAULT """";" CurrentProject.Connection.Execute strSql End Function
CurrentProject.Connection.Execute strSql
End Function
Sub addUser()Dim myConnection As ADOX.CatalogDim newUser As ADOX.UserDim userName As StringDim newPassword As StringSet myConnection = New ADOX.Catalog
myConnection.ActiveConnection = _"Provider = Microsoft.Jet.OLEDB.4.0;" & _"Data Source=C:\r.mdb;" & _"Jet OLEDB:System database=C:\Bernardess\r.mdw;" & _"User id=john;Password=;"
Set newUser = New ADOX.User
newUser.Name = userName
myConnection.Users.Append newUsermyConnection.Users(newUser.Name).changePassword "", newPasswordEnd Sub
Este exemplo de código, aplicado ao Microsoft Visual Basic for Applications usa a função WNetGetUser (Função API do Windows no arquivo MPR.dll) para recuperar o nome de usuário usado para estabelecer uma conexão de rede.' Declare for call to mpr.dll.Declare Function WNetGetUser Lib "mpr.dll" _Alias "WNetGetUserA" (ByVal lpName As String, _ByVal lpUserName As String, lpnLength As Long) As LongConst NoError = 0 'The Function call was successfulSub GetUserName()' Buffer size for the return string.Const lpnLength As Integer = 255' Get return buffer space.Dim status As Integer' For getting user information.Dim lpName, lpUserName As String' Assign the buffer size constant to lpUserName.lpUserName = Space$(lpnLength + 1)' Get the log-on name of the person using product.status = WNetGetUser(lpName, lpUserName, lpnLength)' See whether error occurred.If status = NoError Then' This line removes the null character. Strings in C are null-' terminated. Strings in Visual Basic are not null-terminated.' The null character must be removed from the C strings to be used' cleanly in Visual Basic.lpUserName = Left$(lpUserName, InStr(lpUserName, Chr(0)) - 1)Else' An error occurred.MsgBox "Unable to get the name."EndEnd If' Display the name of the person logged on to the machine.MsgBox "The person logged on this machine is: " & lpUserNameEnd SubReference:Tags: VBA, Excel, API, MPR.dll, WNetGetUser, user, name, nome, usuário,
Objeto Tipo Tabela 1 Query 5 Tabela Conectada 4, 6, or 8 Formulário -32768 Relatório -32764 Módulo -32761
Poderá listar os objetos na base de dados Access como abaixo:SELECT MSysObjects.Type, MSysObjects.Name FROM MSysObjects WHERE MSysObjects.Name Not Like "~*" ORDER BY MSysObjects.Type, MSysObjects.Name;Onde Type poderá colocar um dos valores da tabela acima. (Infelizmente, o modo provido pelo DML não é o caminho mais fácil para se ler os nomes dos campos nas tabelas.)
Similarmente, você pode aplicar o comandos CREATE/ALTER/DROP em outras coisas tais como índices, constraints, views e procedures (queries), usuário e grupos (segurança.)
Enquanto o DDL é importante para algumas bases de dados enormes, ele é limitado no uso com o MS Access. Você pode criar um campo Texto, mas não pode configurá-lo com a propriedade Largura Diferente de Zero, ou características similares. Pode criar um campo Yes/No, mas não pode dizer que o dataentry ocorrerá por meio de um text box, ou um check box. Também poderá criar um campo Date/Time, mas não poderá configurar a sua propriedade Format. DDL não pode criar campos Hyperlink, ou campos Attachment.
Poderá executar uma query DDL sob o DAO ou ADO.
Parar DAO, use: dbEngine(0)(0).Execute strSql, dbFailOnErrorParar ADO, use: CurrentProject.Connection.Execute strSql
Índice das Funções | Descrição |
CreateTableDDL() | Cria duas tabelas, seus índices e relacionamentos, ilustrando os diferentes tipos de campos suas propriedades configuradas. |
CreateFieldDDL() | Ilustra como adicionar um campo para uma tabela. |
CreateFieldDDL2() | Adiciona um campo a uma tabela em outra base de dados. |
CreateViewDDL() | Cria uma nova query. |
DropFieldDDL() | Deleta o campo de uma tabela. |
ModifyFieldDDL() | Muda o tipo ou tamanho de um campo. (Este é o mais comum uso do DDL.) |
AdjustAutoNum() | Configura o start da AutoNumeração. |
DefaultZLS() | Cria um campo que tem por default ser uma stringque não suporta ficar vazia. |
15.01.2025
Option Compare Database
Option Explicit
' Função para criar a tabela tblDdlContractor
Sub CreateTableDDL()
' Declaração das variáveis necessárias
Dim cmd As New ADODB.Command
Dim strSql As String
' Define a conexão ativa para o comando
Let cmd.ActiveConnection = CurrentProject.Connection
' Cria a tabela tblDdlContractor com seus campos e restrições
strSql = "CREATE TABLE tblDdlContractor " & _
"(ContractorID COUNTER CONSTRAINT PrimaryKey PRIMARY KEY, " & _
"Surname TEXT(30) WITH COMP NOT NULL, " & _
"FirstName TEXT(20) WITH COMP, " & _
"Inactive YESNO, " & _
"HourlyFee CURRENCY DEFAULT 0, " & _
"PenaltyRate DOUBLE, " & _
"BirthDate DATE, " & _
"EnteredOn DATE DEFAULT Now(), " & _
"Notes MEMO, " & _
"CONSTRAINT FullName UNIQUE (Surname, FirstName));"
' Executa o comando SQL para criar a tabela
Let cmd.CommandText = strSql
cmd.Execute
' Imprime mensagem de sucesso
Debug.Print "tblDdlContractor criada."
' Cria a tabela tblDdlBooking
strSql = "CREATE TABLE tblDdlBooking " & _
"(BookingID COUNTER CONSTRAINT PrimaryKey PRIMARY KEY, " & _
"BookingDate DATE CONSTRAINT BookingDate UNIQUE, " & _
"ContractorID LONG REFERENCES tblDdlContractor (ContractorID) " & _
"ON DELETE SET NULL, " & _
"BookingFee CURRENCY, " & _
"BookingNote TEXT(255) WITH COMP NOT NULL);"
' Executa o comando SQL para criar a tabela
cmd.CommandText = strSql
cmd.Execute
' Imprime mensagem de sucesso
Debug.Print "tblDdlBooking criada."
End Sub
' Função para adicionar um novo campo à tabela MyTable
Sub CreateFieldDDL()
' Declaração das variáveis necessárias
Dim strSql As String
Dim db As DAO.Database
' Inicializa a conexão com o banco de dados
Set db = CurrentDb()
' SQL para adicionar o novo campo à tabela
strSql = "ALTER TABLE MyTable ADD COLUMN MyNewTextField TEXT(5);"
' Executa o comando SQL para adicionar o campo
db.Execute strSql, dbFailOnError
' Libera recursos
Set db = Nothing
' Imprime mensagem de sucesso
Debug.Print "MyNewTextField adicionado para MyTable"
End Sub
' Função para adicionar um campo à tabela de um banco de dados externo
Function CreateFieldDDL2()
' Declaração das variáveis necessárias
Dim strSql As String
Dim db As DAO.Database
' Inicializa a conexão com o banco de dados
Set db = CurrentDb()
' SQL para adicionar o novo campo à tabela no banco de dados externo
strSql = "ALTER TABLE Table IN 'C:\A&A\Junkki.mdb' ADD COLUMN MyNewField TEXT(5);"
' Executa o comando SQL para adicionar o campo
db.Execute strSql, dbFailOnError
' Libera recursos
Set db = Nothing
' Imprime mensagem de sucesso
Debug.Print "MyNewField Adicionado!"
End Function
' Função para criar uma visualização (VIEW)
Function CreateViewDDL()
' Declaração da variável para o comando SQL
Dim strSql As String
' SQL para criar a visualização (VIEW)
strSql = "CREATE VIEW qry1 AS SELECT tblInvoice.* FROM tblInvoice;"
' Executa o comando SQL para criar a visualização
CurrentProject.Connection.Execute strSql
' Imprime mensagem de sucesso
Debug.Print "Visualização qry1 criada."
End Function
' Função para excluir um campo de uma tabela
Sub DropFieldDDL()
' Declaração da variável para o comando SQL
Dim strSql As String
' SQL para excluir o campo da tabela
strSql = "ALTER TABLE [MyTable] DROP COLUMN [DeleteMe];"
' Executa o comando SQL para excluir o campo
DBEngine(0)(0).Execute strSql, dbFailOnError
' Imprime mensagem de sucesso
Debug.Print "Campo DeleteMe excluído da tabela MyTable."
End Sub
' Função para modificar um campo de uma tabela
Sub ModifyFieldDDL()
' Declaração da variável para o comando SQL
Dim strSql As String
' SQL para alterar o tipo de um campo (alterando o tamanho do campo MyText2Change)
strSql = "ALTER TABLE MyTable ALTER COLUMN MyText2Change TEXT(100);"
' Executa o comando SQL para modificar o campo
DBEngine(0)(0).Execute strSql, dbFailOnError
' Imprime mensagem de sucesso
Debug.Print "Campo MyText2Change alterado para TEXT(100)."
End Sub
' Função para ajustar a configuração do tipo de campo COUNTER
Function AdjustAutoNum()
' Declaração da variável para o comando SQL
Dim strSql As String
' SQL para ajustar o valor inicial do campo COUNTER
strSql = "ALTER TABLE MyTable ALTER COLUMN ID COUNTER(1000,1);"
' Executa o comando SQL para ajustar o campo COUNTER
CurrentProject.Connection.Execute strSql
' Imprime mensagem de sucesso
Debug.Print "Campo COUNTER ID ajustado para iniciar em 1000."
End Function
' Função para adicionar um campo com valor padrão (ZLS)
Function DefaultZLS()
' Declaração da variável para o comando SQL
Dim strSql As String
' SQL para adicionar um campo com valor padrão vazio (ZLS)
strSql = "ALTER TABLE MyTable ADD COLUMN MyZLSfield TEXT(100) DEFAULT ' ';"
' Executa o comando SQL para adicionar o campo
CurrentProject.Connection.Execute strSql
' Imprime mensagem de sucesso
Debug.Print "Campo MyZLSfield adicionado com valor padrão."
End Function
Clique aqui e nos contate via What's App para avaliarmos seus projetos
PUDIM PROJECT