AJUDA COM COMANDOS DIRETO NO BD

SACOFRITO 19/07/2011 17:06:51
#379563
Boa tarde pessoal.
Seguinte, como comentei no outro tópico, estou criando um pequeno exe para criar campos no banco de dados sem precisar parar o sistema em todas as máquinas.

Mas nao sei direito como implementar isso.
Preciso de uma rotina para verificar e listar num combobox as tabelas ja existentes no banco de dados.
Algo para verificar se o campo já existe, e como passar o parametro da propriedade do campo.
Já aprendi criar o campo e passar o tipo. Agora preciso dessas outras funcionalidades.

E tem como tambem alterar o t ipo de um campo já existente?

Sei que parece muita coisa mas preciso mesmo disso.

Quando terminar disponibilizarei aqui para quem quiser baixar.

Segue em anexo minha idéia com as propriedades que usamos aqui na empresa
MARCOSLING 19/07/2011 17:43:58
#379565
Se você for alterar a estrutura do banco, você vai ter que parar o sistema.
Você não irá conseguir alterar a estrutura se houver alguém usando a tabela que você quer alterar.
SACOFRITO 19/07/2011 17:49:00
#379567
MARCOSLING nao entendi perfeitamente oque voce quis dizer com alterar a estrutura?
Ontem criei um campo novo em uma tabela e o sistema em outras máquinas continuaram rodando.

Pode me explicar?
SACOFRITO 19/07/2011 17:57:02
#379569
Bom encontrar todas tabelas achei um exemplo em VBA na net e deu certo pra mim. Ja listei todas as tabelas em uma combobox.
Fazendo isto ja vou estar fazendo a verificação se a tabela existe. Serão tecnicos que usarão o sisteminha entao isto nao será problema.

E GOODSPEAKERS, nao entendi bem como sua rotina vai verificar os campos da tabela?
Pensei em fazer tipo no lostfocus, cois abem simples avisando que o campo já existe, se deseja alterar as propriedades ou o tipo do campo.
MARCOSLING 19/07/2011 18:20:48
#379572
Citação:

:
fica tranquilo que roda sim
pode criar os campos nas tabelas



Esse código só vai rodar se for SqlServer....
MARCOSLING 19/07/2011 18:26:15
#379573
Citação:

:
MARCOSLING nao entendi perfeitamente oque voce quis dizer com alterar a estrutura?
Ontem criei um campo novo em uma tabela e o sistema em outras máquinas continuaram rodando.

Pode me explicar?



Estamos falando de banco de dados, certo?
Todos os objetos do banco fazem parte da estrutura do banco.
Todos atributos fazem parte da estrutura de uma tabela.
Não é aconselhável alterar os atributos de uma tabela, com mesma em uso.
SACOFRITO 20/07/2011 08:09:24
#379590
Ah sim, desculpe entendi errado sua colocação. No caso a tabela em que criei o novo campo nao estava em uso em nenhum terminal. Esta parte de alterar a estrutura nao poder estar usando a tabela é até intuitivo.
O que achei que voce tinha falado era parar totalmente o sistema em todas as máquinas. Obrigado.
MGALDINO 20/07/2011 08:39:09
#379592
Bom dia a todos...

SACOFRITO O MARCOSLING esta correto...

Como voce utiliza banco de dados em ACCESS quando voce estiver com uma tabela aberta nao poderá alterar a estrutura do banco de dados.

Então todas as vezes que voce for alterar o estrutura do banco de dados, Criar Campo, Criar Tabela, Alterar Tipo de dados etc...
tera que pedir para que todos parem de utilizar o sistema.

Aconselho voce a começar a procurar MYSQL SQL Server.
Com esses exemplos passados nao acontece isso.

Para Consistir se campo ou tabela existe normalmente no SQL Server antes da instrução de criação ou alteração colocamos.

CREATE TABLE [IF NOT EXISTS] nome_tabela

Nao sei se no ACCESS funciona... mais tenta criar uma tabela que ja existe vai gerar codigo de erro.
Trata o Erro dando que tabela ou campo ja existe e da um resume.next

Qualquer coisa manda esse projetinho no meu email e mostro para voce minha ideia.

Abraços boa sorte!









SACOFRITO 20/07/2011 09:09:38
#379594
If cmbTabelas <> [Ô][Ô] Then
On Error GoTo erro
db.Execute [Ô]CREATE TABLE [Ô] & cmbTabelas.Text
erro:
If Err.Number = (3010) Then
MsgBox [Ô]A tabela [Ô] & cmbTabelas & [Ô] já existe![Ô], vbCritical
Err.Clear
End If

End If

Tratei assim se a tabela ja existir. Nao sei se é a forma mais correta, mas funcionou.

E com relação a alterar a propriedade do campo? Direto precisamos passar para indexado [Ô]sim[Ô] para conseguir relacionar no CR 8.
Alguem pode me ajudar?

E obrigado mesmo a quem esta passando as dicas.

E MGALDINO, no caso eu preciso parar de utilizar apenas a tabela que vou alterar correto? Como disse logo acima, criei um campo em tabela X enquanto o sistema operava em outrs 3 máquinas em 3 tabelas diferentes.


Tópico encerrado , respostas não são mais permitidas