VERIFICAR SE EXISTE CAMPO EM TABELA E CRIAR
Olá!!!
Eu de novo...
Bom, a dúvida é a seguinte:
Tenho um sistema instalado em diversas cidades, e agora eu tive que inserir mais um campo nos bancos de dados e fica inviável viajar para 4 estados diferentes para acertar o BD na unha. Tambem pensei na possibilidade de meus clientes me enviarem os BDÂÂÂ's via internet para eu consertar e depois mandar de volta, mas esta tática mostrou-se desastrosa da ultima vez que eu a utilizei. A utilização de "controle-remotos" (pcanyware por exemplo) depende MUITO do material humano do outro lado da conexao ( e isso dispensa maiores comentarios, não é???)
A melhor saÃda ao meu ver, seria implementar uma rotina de verificação no inicio do sistema e quando enviar a nova versão, junto já vai a solução para criar este novo campo no banco de dados já existente.
Conclusão:
Tenho um um arquivo denominado CLIENTES.MDB;
Dentro deste arquivo tenho várias tabelas e uma delas é denominada de CLIENTES
Preciso (Via código) verificar se existe dentro da tabela CLIENTES um campo doniminado EQUIPAMENTOS.
Se existir tudo bem, saia da rotina e continue normalmente.
Caso não exista, preciso criar este campo denominado EQUIPAMENTOS dentro da tabela CLIENTES que esta dentro do arquivo CLIENTES.MDB, este
campo será no formato TEXTO(Type=text) e terá tamanho(size) 10, Este campo aceitará valores nulos (AllowZeroLenght=TRUE), as propriedades fixedlenght, autoincrement e required serão FALSE e a propriedade variablelenghth será TRUE.
se houver alguma forma de na hora de criar o campo, já por um caractere válido nele ("." "_" "," etc) seria ótima, mas caso não seja possivel eu crio um loop para depois de criado o campo no Bd, eu preencho ele com caracteres válidos.
Obrigado. mais uma vez...
Obs. NotÃcias do Professor e do Joba???
Eu de novo...
Bom, a dúvida é a seguinte:
Tenho um sistema instalado em diversas cidades, e agora eu tive que inserir mais um campo nos bancos de dados e fica inviável viajar para 4 estados diferentes para acertar o BD na unha. Tambem pensei na possibilidade de meus clientes me enviarem os BDÂÂÂ's via internet para eu consertar e depois mandar de volta, mas esta tática mostrou-se desastrosa da ultima vez que eu a utilizei. A utilização de "controle-remotos" (pcanyware por exemplo) depende MUITO do material humano do outro lado da conexao ( e isso dispensa maiores comentarios, não é???)
A melhor saÃda ao meu ver, seria implementar uma rotina de verificação no inicio do sistema e quando enviar a nova versão, junto já vai a solução para criar este novo campo no banco de dados já existente.
Conclusão:
Tenho um um arquivo denominado CLIENTES.MDB;
Dentro deste arquivo tenho várias tabelas e uma delas é denominada de CLIENTES
Preciso (Via código) verificar se existe dentro da tabela CLIENTES um campo doniminado EQUIPAMENTOS.
Se existir tudo bem, saia da rotina e continue normalmente.
Caso não exista, preciso criar este campo denominado EQUIPAMENTOS dentro da tabela CLIENTES que esta dentro do arquivo CLIENTES.MDB, este
campo será no formato TEXTO(Type=text) e terá tamanho(size) 10, Este campo aceitará valores nulos (AllowZeroLenght=TRUE), as propriedades fixedlenght, autoincrement e required serão FALSE e a propriedade variablelenghth será TRUE.
se houver alguma forma de na hora de criar o campo, já por um caractere válido nele ("." "_" "," etc) seria ótima, mas caso não seja possivel eu crio um loop para depois de criado o campo no Bd, eu preencho ele com caracteres válidos.
Obrigado. mais uma vez...
Obs. NotÃcias do Professor e do Joba???
Marcelo, vou tentar te ajudar na medida que posso
Essa rotina verifica se o campo "Equipamentos" existe e depois atualiza todos os que estiverem am branco para "AAA"
Para criar um campo, deve usar o rs.Fields.Append, mas ainda não sei a maneira correta.
Até mais
Essa rotina verifica se o campo "Equipamentos" existe e depois atualiza todos os que estiverem am branco para "AAA"
Private Sub VerificarCampo()
Dim DB As DAO.Database, Campo As Field, rs As DAO.Recordset
Dim CampoExiste As Boolean
BancoDados = App.Path & "\Clientes.mdb"
Set DB = DBEngine.OpenDatabase(BancoDados)
Set rs = DB.OpenRecordset("CadClientes")
CampoExiste = False
For Each Campo In rs.Fields
If Campo.Name = "Equipamentos" Then
CampoExiste = True
End If
Next
If CampoExiste = True Then
Exit Sub
Else
'Criar campo (Vou pesquisar ainda)
End If
'Atualizar para "AAA" todos os equipamentos cujo valor é ""
DB.Execute ("Update Clientes Set Equipamentos = '---' where equipamentos =''")
End SubPara criar um campo, deve usar o rs.Fields.Append, mas ainda não sei a maneira correta.
Até mais
Marcelo, vai aà agora a rotina completa e testada...
Até logo... [S71]
Private Sub VerificarCampo()
Dim DB As DAO.Database, Campo As Field, rs As DAO.Recordset
Dim CampoExiste As Boolean, NovoCampo As New DAO.Field
Dim tb As DAO.TableDef
BancoDados = App.Path & "\Clientes.mdb"
Set DB = DBEngine.OpenDatabase(BancoDados)
Set rs = DB.OpenRecordset("Clientes")
CampoExiste = False
For Each Campo In rs.Fields
Debug.Print Campo.Size
If Campo.Name = "Equipamentos" Then
CampoExiste = True
End If
Next
rs.Close
Set rs = Nothing
If CampoExiste = True Then
Exit Sub
Else
NovoCampo.Name = "Equipamentos"
NovoCampo.Type = 10
NovoCampo.Size = 50
Set tb = DB.TableDefs("Clientes")
tb.Fields.Append NovoCampo
End If
DB.Close
Set tb = Nothing
Set DB = Nothing
'Atualizar para "AAA" todos os equipamentos cujo valor é ""
DB.Execute ("Update Clientes Set Equipamentos = '---' where equipamentos =''")
End SubAté logo... [S71]
Desculpe a falta de QI, mas...
eu devo ignorar o primeiro exemplo e me ater apenas ao segundo???
e onde voce pos o AAA ???? (pergunto isso, pois vou querer por um pont (.) no lugar do AAA... seria o ÂÂÂ'---ÂÂÂ' ????
SOLUÇÃO!!!! teu nome é Thiago Cesar...
eu devo ignorar o primeiro exemplo e me ater apenas ao segundo???
e onde voce pos o AAA ???? (pergunto isso, pois vou querer por um pont (.) no lugar do AAA... seria o ÂÂÂ'---ÂÂÂ' ????
SOLUÇÃO!!!! teu nome é Thiago Cesar...
Ignore o primeiro (é que eu tinha colocado até onde eu sabia, depois eu pesquisei e postei na Ãntegra no segundo)
Onde eu coloquei "AAA" você substitua por qualquer coisa para não deixar os campos em branco, ou seja "." ou "---".
Na linha
NovoCampo.Size = 50
Coloque 10, eu coloquei 50 para os meus testes aqui, mas vi que quer 10.
Consulte também as outras propriedades do "NovoCampo", para personalizar ainda mais.
Quanto ao seu comentário final[S66]... Todo dia eu levo uma surra do VB, um dia ou outro posso ajudar alguém...[S20]
Onde eu coloquei "AAA" você substitua por qualquer coisa para não deixar os campos em branco, ou seja "." ou "---".
Na linha
NovoCampo.Size = 50
Coloque 10, eu coloquei 50 para os meus testes aqui, mas vi que quer 10.
Consulte também as outras propriedades do "NovoCampo", para personalizar ainda mais.
Quanto ao seu comentário final[S66]... Todo dia eu levo uma surra do VB, um dia ou outro posso ajudar alguém...[S20]
THIAGO CESAR!!!!!!!
foi DEZ!!!!!!
valeu MESMO!!!!!!
foi DEZ!!!!!!
valeu MESMO!!!!!!
Tópico encerrado , respostas não são mais permitidas