USUÁRIO:      SENHA:        SALVAR LOGIN ?    Adicione o VBWEB na sua lista de favoritos   Fale conosco 

 

  Fórum

  Visual Basic
Voltar
Autor Assunto:  Copiar uma tabela no access via comando SQL
M A R C I O
SÃO BERNARDO
SP - BRASIL
ENUNCIADA !
Postada em 29/02/2008 17:22 hs            
Ola pessoal... estou com mais um problema
 
eu gostaria de copiar uma tabela no access de modo que ela fique identica a uma tabela ja existente, eu sei que eu poderia criar a tabela citando campo por campo... mais eu vivo acrescentando campos nessa tabela.....
 
intão resumindo
 
se eu tenho uma tabela CLIENTE com Codigo, Nome, Endereco
 
eu quero dar um comando que crie uma tabela CLIENTE_TMP como os mesmo campos Codigo, Nome, Endereço... e com todos os registros q estavam na tabela CLIENTE
 
ai amanha ou depois se por algum motivo eu acrescentar na tabela CLIENTE algum campo novo... não vou precisar mexer nessa programação
 
não sei se isso é possivel... caso seja... agradeço a ajuda de vcs

M A R C I O
   
Martini
Pontos: 2843 Pontos: 2843
PAROBÉ
RS - BRASIL
ENUNCIADA !
Postada em 29/02/2008 18:45 hs         

olha se ajuda esta rotina para adaptar banco de dados:


Dim vgBcD As Database
Dim vgValorDefa As Variant
Dim vgTamaCpo As Integer
Dim vgTipoCpo  As Integer
Dim vgAtribCpo As Long
Dim vgTba As TableDef
Dim vgCpo As Field
Dim vgInd As Index
Dim vgRel As Relation


'cria a tabela
Set vgTba = vgBcD.CreateTableDef()          'cria uma nova tabela
vgTba.Name = "Tabela"

'cria o campo
Set vgCpo = vgTba.CreateField()
vgCpo.Name = "Campo"


'tipo do campo
              vgAtribCpo = dbUpdatableField                      'atributo do campo
              vgValorDefa = 0                                    'valor inicial do campo
              Select Case vgSimbolo$                             'qual o tipo do campo?
                Case "LONGO"                                     '* LONGO
                  vgTipoCpo = dbLong                             'numérico entre -2.147.483.648
                  vgTamaCpo = 4                                  'a 2.147.483.648 inclusive
                Case "LOGICO"                                    '* LóGICO
                  vgTipoCpo = dbBoolean                          'contém yes/no, true/false
                  vgTamaCpo = 1
                  vgValorDefa = False
                Case "BYTE"                                      '* BYTE
                  vgTipoCpo = dbByte                             'numérico entre 0 e 255
                  vgTamaCpo = 1
                Case "INTEIRO"                                   '* INTEIRO
                  vgTipoCpo = dbInteger                          'numérico entre -32768 a
                  vgTamaCpo = 2                                  '32767 inclusive
                Case "CONTADOR"                                  '* CONTADOR (longo)
                  vgTipoCpo = dbLong                             'campo long incrementado
                  vgTamaCpo = 4                                  'automaticamente
                  vgAtribCpo = vgAtribCpo + dbAutoIncrField
                Case "DINHEIRO"                                  '* DINHEIRO
                  vgTipoCpo = dbCurrency                         'numérico com até 11 dígitos
                  vgTamaCpo = 8
                Case "SIMPLES"                                   '* SIMPLES
                  vgTipoCpo = dbSingle                           'numérico com decimal
                  vgTamaCpo = 4                                  'armazenado em 4 byts
                Case "DUPLA"                                     '* DUPLA
                  vgTipoCpo = dbDouble                           'numérico
                  vgTamaCpo = 8                                  'armazenado em 8 bytes
                Case "DATA"                                      '* DATA
                  vgTipoCpo = dbDate                             'armazena data ou hora
                  vgTamaCpo = 8
                  vgValorDefa = Null
                Case "TEXTO"                                     '* TEXTO
                  vgTipoCpo = dbText                             'tipo caracter
                  vgIx = InStr(vgLinhaAtual$ + " ", " ")         'separa diretiva
                  vgTamaCpo = Val(Mid$(vgLinhaAtual$, vgIx))     'pega o tamanho do campo
                  i = i + Len(Str$(vgTamaCpo))                   'ajusta i para checar se há atributos
                  vgValorDefa = Chr$(34) + Chr$(34)              'default para o campo ""
                Case "IMAGEM"                                    '* IMAGEM
                  vgTipoCpo = dbLongBinary                       'sem limitação
                  vgTamaCpo = 0                                  'tamanho variado
                  vgAtribCpo = vgAtribCpo + dbVariableField
                  vgValorDefa = Null
                Case "MEMO"                                      '* MEMO
                  vgTipoCpo = dbMemo                             'texto de 1.2GB
                  vgTamaCpo = 0
                  vgValorDefa = Chr$(34) + Chr$(34)              'defautl ""
                Case Else
                  GoTo DeuErro                                   'campo indeterminado, cai fora...
              End Select
              With vgCpo                                         'salva a definição para este campo
                .Size = vgTamaCpo                                'tamanho
                .Type = vgTipoCpo                                'tipo
                .Attributes = vgAtribCpo                         'atributos
                If Not IsNull(vgValorDefa) And vgCpo.Name <> "Cod~lan" Then
                  .DefaultValue = vgValorDefa                    'tem valor default vamos passar para o BD
                End If
                If vgTipoCpo = dbText Or _
                   vgTipoCpo = dbMemo Then                       'campo texto e memo
                  .AllowZeroLength = True                        'vamos permitir ""
                End If
              End With
              vgTba.Fields.Append vgCpo                          'coloca o campo na tabela


'cria um índice
Set vgInd = vgTba.CreateIndex()
vgInd.Name = "nome do indice"

'definições do índice
With vgInd
  .Primary = True                                     'se é primária obrigatoriamente
  .Unique = True                                      'tem que ser única
End With

'campos que compoe o indice
vgInd.Fields = "Codigo_do_associado; Codigo_do_servico"

'propriedades para deixar entrar indice nulo
vgInd.Required = False                               
vgInd.IgnoreNulls = True                             

vgTba.Indexes.Append vgInd                              'anexa o indice na tabela

vgBcD.TableDefs.Append vgTba                                'adiciona a tabela ao banco de dados

 

'relacionamentos
Set vgRel = vgBcD.CreateRelation("nome da relacao")

vgRel.Table = "tabelabase"
vgRel.ForeignTable = "tabelaestrangeira"

'tipo
Case "UNICO"                                        'um a um
  vgAtribCpo = vgAtribCpo + dbRelationUnique
Case "SEM INTEGRIDADE"                              'sem integridade referencial
  vgAtribCpo = vgAtribCpo + dbRelationDontEnforce
Case "INHERITED"                                    'com integridade referencial
  vgAtribCpo = vgAtribCpo + dbRelationInherited
Case "ATUALIZA CASCATA"                             'atualiza a tabela relacionada
  vgAtribCpo = vgAtribCpo + dbRelationUpdateCascade
Case "EXCLUI CASCATA"                               'exclui registro relacionado
  vgAtribCpo = vgAtribCpo + dbRelationDeleteCascade
Case "ESQUERDA"                                     'não exige que o reg estrangeiro exista
  vgAtribCpo = vgAtribCpo + dbRelationLeft
Case "DIREITA"                                      'pode ter reg estrangeiros sem referência na base
  vgAtribCpo = vgAtribCpo + dbRelationRight


vgRel.Attributes = vgAtribCpo                           'anexa o relacionamento na tabela

Set vgCpo = vgRel.CreateField("campotabbase")
vgCpo.ForeignName = "campotabestrangeira"
vgRel.Fields.Append vgCpo                               'coloca campo no relacionamento

vgBcD.Relations.Append vgRel                                'anexa relacionamento ao BD

 

 
   
Vilmar Brazão
Pontos: 2843
SAO PAULO
SP - BRASIL
ENUNCIADA !
Postada em 29/02/2008 18:56 hs         
   
Página(s): 1/1    


Seu Nome:

Seu eMail:

ALTERAR PARA MODO HTML
Mensagem:

[:)] = 
[:P] = 
[:(] = 
[;)] = 

HTML DESLIGADO

     
 VOLTAR

  



CyberWEB Network Ltda.    © Copyright 2000-2024   -   Todos os direitos reservados.
Powered by HostingZone - A melhor hospedagem para seu site
Topo da página