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

 

  Fórum

  Visual Basic
Voltar
Autor Assunto:  Alter Table
ADRIANO2605
CAMPO GRANDE
MS - BRASIL
ENUNCIADA !
Postada em 07/11/2008 20:14 hs            
Ola pessoal, seguinte tenho de fazer uma atualização no meu programa e quero fazer as alterações do banco de dados access 2000 via código!
Porem andei pesquisando até aqui mesmo e achei varias formas de criar uma tabela e até mesmo criar banco! Porem não descobri uma forma de alterar ou inserir campos em uma tabela!

A pergunta é existe uma forma de fazer isto, se tem como que se faz!

Até mais e desde ja muito obrigado!
   
ADRIANO2605
CAMPO GRANDE
MS - BRASIL
ENUNCIADA !
Postada em 10/11/2008 12:44 hs            
Olá andei pesquisando sobre o tabledef e funcionou legal, com algumas alterações que tive de fazer na pressa pois nao tive tempo de procurar o que estava gerando o erro
Bom vou postar aqui o codigo, para ajudar nas retiradas de duvidas e claro se alguem souber o motivo q esta gerando os erros e puder ajudar fico grato.
 
Bom os campos que eu precisava inserir eram os Campos:
Banco
Agencia
Conta
O campo PrvErro foi uma forma que achei de forçar o erro 13 e pular para a proxima linha do codigo com o resume next, pois quando eu utilizei a declaração dim field(3) as field para indicar que eram 3 campos q eu ia criar ela dava o erro 13 então preferi nao trabalhar com matrizes e declarar kda campo, para mim funcionou prq eram poucos campos agora qdo forem varios vai ficar complicado ai vou ter de pesquisar o que esta gerando este erro 13.
Bom mas enfim, funcionou as outras prevenções de erro são o 3420 que é continuação do erro 13 na linha do append e o 3191 que ele verifica que ja existem os campos e cancela a instrução. enfim apesar de ficar um pouco extenso o codigo ficou bom pelo fato de realizar o que eu quero sem ter de acessar a maquina do cliente.
 
Até mais!!!
 
Public Sub AlteraTabela()
On Error GoTo TRATAERRO
'na declaração:
    Dim db As Database
    Dim td As TableDef
   
    'exemplo da  função:
    'AQUI NO "fields(2)", 2 É A QUANTIDADE DE CAMPOS.
   
    'Dim fields(0 To 2) As Field
    Dim NomBanco, NomAgencia, NomConta, PrvErro As Field
    Set db = DBEngine.Workspaces(0).OpenDatabase(banco)
    'AQUI DIGA QUAL É A TABELA.
    Set td = db.TableDefs("usuario")
    'CRIA OS CAMPOS NA TABELA EXISTENTE SEM MUDAR OS DADOS QUE CONTEM .
        Set NomBanco = td.CreateField("BANCO", dbText, 100)
        Set NomAgencia = td.CreateField("AGENCIA", dbText, 20)
        Set NomConta = td.CreateField("CONTA", dbText, 20)
        Set PrvErro = td.CreateField("prv", dbText, 20) 'este campo aqui é só pra gerar um erro e parar a instrução
        td.fields.Append NomBanco
        td.fields.Append NomAgencia
        td.fields.Append NomConta
        td.fields.Append PrvErro
TRATAERRO:
Select Case Err.Number
Case Is = 0
Case Is = 13 'erro na crição do campo prv campo q não existe é só para parar a instrução
Resume Next
Case Is = 3420 'erro do append pra para a instrução
Exit Sub
Case Is = 3191 'campos ja criados ele para a instruação
Exit Sub
Case Else
MsgBox "INFORME O CÓDIGO " & Err.Number & " - " & Err.Description & " AO ADMINISTRADOR DO SISTEMA!", vbInformation, "ALTERAR BD"
Exit Sub
End Select
End Sub
   
ADRIANO2605
CAMPO GRANDE
MS - BRASIL
ENUNCIADA !
Postada em 10/11/2008 16:02 hs            
Taí pra quem precisa alterar uma tabela via codigo no visual basic
 
Olha só fuçando mais um poco no super poderoso google achei mais esta maravilha de código q fez eu economizar muita gasolina de ir até o cliente para fazer a atualização no bd
e de quebra economizou varias linhas de código!
kraks eu achei muito fino, e espero q ajudem outros com a mesma duvida da uma olhada ai!
Primeiro eu declado o cnn num vai esquecer de ir la em referencs e markr a opção Microsft Activex Data Objects 2.8 Library
marcando ela vc declara o cnn assim
 
Public Cnn As New ADODB.Connection 'UTILIZADA NA FUNÇÃO ABRECONEXAO
Depois no evento desejado, pode ser um form load ou um clic enfim vc escolhe tu faz isto aqui
Cnn.Open "provider = microsoft.jet.oledb.4.0;persist security info=false;data source = " & CAMINHO DO SEU BANCO DE DADOS.MDB & ";Jet OLEDB:Database Password=SUASENHADOBANCODEDADOS;admin"
'AQUI EU VOU ALTERAR UM CAMPO EXISTENTE NA MINHA TABELA E AUMENTAR O TAMANHO DELE
Cnn.Execute "ALTER TABLE [" & "NOMEDASUATABELA" & "] ALTER COLUMN [" & "NOMEDOCAMPOASERALTERADO" & "] Text(" &TAMANHANOVODOCAMPO & ")"
'AQUI EU VOU CRIAR EM OUTRA TABELA OS CAMPOS NOS RESPECTIVOS TAMANHOS
Cnn.Execute "ALTER TABLE [" & "NOMEDASUATABELA" & "] ADD COLUMN [" & "NOMEDOCAMPOASERALTERADO" & "] Text(" &TAMANHANOVODOCAMPO & ")"
 
BOM KLKER DUVIDA POSTA AI ESPERO TER AJUDADO AQUELES Q ESTAVAM COM A MESMA DUVIDA QUE EU
Até mais
   
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