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

 

  Fórum

  Visual Basic
Voltar
Autor Assunto:  BD (Criar, Alterar Estrutura de Tabelas)
LCRamos
Pontos: 2843
GOIANIA
GO - BRASIL
ENUNCIADA !
Postada em 31/01/2008 10:37 hs            
Amigos, como posso atualizar o BD, verificando com o VB6, se existe uma Tabela, se não existir criar esta tabela e os campos, exisitindo a Tabela, conferir campo por campo, não exisitindo criar este campo, existindo, altero os campos.
 
vlu//
   
Tiranossauro
DOIS IRMÃOS
RS - BRASIL
Postada em 31/01/2008 11:16 hs            
Veja na sessão dicas deste site tem algo parecido com isto.
 
  Dim ADOXCat As New ADOX.Catalog
  ADOXCat.ActiveConnection = "PROVIDER=Microsoft.Jet." & _
                             "OLEDB.4.0;Data Source=" & _
                             "NomedoBanco.mdb;"
  For i = 0 To ADOXCat.Tables.Count - 1
    If ADOXCat.Tables.Item(i).Name = "NomeDaTabela" Then
       For j = 0 To ADOXCat.Tables(i).Columns.Count - 1
         msgbox = ADOXCat.Tables(i).Columns(j).Name & "Nome do campo"
       Next
    End If
  Next i
 
A partir dai vc pode implementar as opções de CREATE TABLE, ALTER TABLE ... DO SQL
 
 
     
Martini
Pontos: 2843 Pontos: 2843
PAROBÉ
RS - BRASIL
ENUNCIADA !
Postada em 31/01/2008 15:57 hs         
dá uma olhada neste código!!!

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
 
 
   
LCRamos
Pontos: 2843
GOIANIA
GO - BRASIL
ENUNCIADA !
Postada em 31/01/2008 17:25 hs            
Amigos, Obrigado, vou olhar a sessão de dicas, e vou testar este código, aliás, me parece bem completo.
Viva este Fórum.
 
vlu//
   
Página(s): 1/1    


Seu Nome:

Seu eMail:

ALTERAR PARA MODO HTML
Mensagem:

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

HTML DESLIGADO

     
 VOLTAR

  



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