Fórum problemas com banco de dados(Imp!!!) #227816

23/04/2004

0

- Seguinte, em meu sistema existe uma rotina onde o usuario cria um novo banco(paradox) em tempo de execuçao em um diretório que ele escolhe, a cada projeto que ele vai começar(como se fosse o menu ´novo´ desses softwares que vemos no mercado, com a diferenca de, o meu, estar trabalhando com banco de dados e nao com arquivos).
- O problema é o seguinte:

- nao sei como fazer para o meu sistema entender qual é o banco e o diretório que esse banco se encontra, uma vez que nao será trabalhado com alias pré-definidos por mim, na hora de salvar o projeto...

- nao sei tambem como fazer para o sistema abrir as informações daquele banco quando o usuario o quiser fazer...

Ex. o usuario criou um novo projeto(novo banco), entao ele começa atrabalhar nele, desenvolver calculos, etc....
quando o usuario clica no botao salvar, o sistema tem que entender que é para salvar o projéto la naquele banco ´C:\temp\banco.db´.
e que quando ele queira abri-lo o sistema tambem entenda a mesma coisa.

- Sem + agradeço desde ja e Obrigado...
:wink:


Mahdak

Mahdak

Responder

Posts

23/04/2004

Nigro

Tente criar e gravar alias em tempo de execução


Responder

Gostei + 0

26/04/2004

Mahdak

sobe
------
pois éh, criar alias em tempo de execussao eu to ligado, mas o probleminha é + em baixo.
- quando crio um banco, o sistema tem que saber que aquele será o banco a ser trabalhado.
- quando abro um banco, o sistema tem que entender o mesmo.... que esse banco aberto tem que ser trabalhado.
- Isso tudo por que a cada vez que o usuario entrar no sistema, ele terá que criar um banco ou abrir um banco existente para trabalhar.

- nao sei se daria certo só criando um alias, pois o sistema teria que saber a cada momento, a cada formulario aberto que o banco que ele está conversando é ´tal´....
- acho que teria que definir alguma variavel em algum lugar para isso ficar armazenado na memória, mas o meu problema é justamente esse.
nao sei como fazer isso...

Valleu galera!!!


Responder

Gostei + 0

26/04/2004

Mahdak

sobe
-----
pessoal, isso é importante...


Responder

Gostei + 0

26/04/2004

Gandalf.nho

Crie uma variável global em algum formulário que fique sempre aberto ou armazene o banco usado no registro ou num arquivo INI


Responder

Gostei + 0

26/04/2004

Mahdak

sobe
-----
Sim, é justamente isso que nao estou atinando fazer. desculpe minha ignorancia, mas é que se trata da primeira vez que tenho que trabalhar com tal fato entao estou meio perdido.
Se alguem puder me dar um exemplo, ficarei muito grato :!: :!:

:roll:

[]´s


Responder

Gostei + 0

27/04/2004

Bacalhau

Eu resolvi a questão da seguinte maneira: eu tenho programas que rodam em rede e têm diversos bancos (que é o teu caso) num servidor.

No caso, cada banco corresponde a uma empresa (é um software multi-empresa)

O que faço é acompanhar em todos os clientes uma pequena tabela que contém não só o nome da aplicação, bem como o caminho que o cliente deverá seguir para chegar à base de dados.

Quando um programa arranca, a primeira coisa que pergunta é qual a empresa que vai trabalhar. Quando a empresa é escolhida, é registado nessa pequena tabela.

Finalmente, todas as chamadas a tabelas são feitas dinamicamente. Elas verificam qual a empresa activa, seguem esse caminho e, VOILÁ!!, acedo a tudo o que quero só com essa tabelazinha. Inclusivé, as tabelas do banco de dados podem estar em servidores diferentes.

Claro que não precisas obrigatoriamente de uma tabela. Um pequeno arquivo TXT, também faz o trabalho.

Com este procedimento, evito os malditos alias (pessoalmente, odeio...) e facilmente registo novas empresas no sistema. Basta ter um pequeno software de servidor que replica uma base de dados original e gere os clientes.

Se fui confuso nesta explicação, diz, que tentarei explicar melhor.

abraço
bacalhau


Responder

Gostei + 0

27/04/2004

Mahdak

sim, acho essa sua idéia eficiente, mas me diga uma coisa:
- como voce sabe, além de ter a opçao de escolha de qual empresa o usuário irá trabalhar, o sistema tambem a opçao de criar uma nova empresa(nova tabela), entao;
- assim que o cliente escolhe com qual empresa(banco) ele quer trabalhar, que está contido naquela tabela adicional que voce disse, os dados do tipo (diretório onde o banco de dados foi criado que servirao como um alias), estao junto em um campo tipo string nessa tabela adicional, e dai o sistema verifica esse diretório e manda abrir o banco?
- até ai ta tudo ok, mas como estaremos trabalhando com duas tabelas, uma a ´adicional´ que servirá para o sistema fazer a checagem de que empresa(tabela) que estaremos inserindo e editando dados, e outra a propria empresa, como ficaria o código por exemplo de um botao salvar, que teria que fazer essas duas checagem??
- estou acostumado a usar um codigo simples do tipo:

var
a:string;
begin
a:=edit1.text;
table2.insert;
a:= table2.fieldbyname(´codigo´).asstring;
table1.post;
end;

- vamos ver se entendi entao, coloco dois componentes Ttable no meu projeto, um deles servira para a tabela adicional(table1) e o outro servirá para a empresa(table2), sendo que entao pegos os dados dos campos da table1 e jogo para as propriedades da table2, tipo:

table2.databasename := table1.fieldbyname(´diretório da tabela´).asstring;

é isso?? qualquer coisa, postem aqui...
valleu :!: :!:


Responder

Gostei + 0

27/04/2004

Mahdak

sobe
-----
ow duvida eterna... :oops:


Responder

Gostei + 0

29/04/2004

Bacalhau

Calma, vamos por partes.

Primeiro: toda a gestão das empresas (criar, modificar, torná-la visivel ou invisivel, etc) é feita no servidor. Os clientes só utilizam o que estiver definido no servidor, não têm qualquer interferência neste processo.

Segundo: eu utilizo outro processo que consiste em dar uma referência (na realidade, um alias) a todas as tabelas de um banco de dados. Toda a informação de todas as tabelas (localização, indexes, chaves primárias, etc) está numa tabela local. Esta tabela, junto com a das empresas, é que comanda todo o redireccionamento de informação.

A tua ideia parece-me correcta. É isso: a propriedade ´databasename´ é o que estiver guardado na tal tabela local. Eu não utilizo exactamente esse método (é mais complexo e com mais variantes), mas a ideia base é essa - guardar tudo numa pequena tabela e redireccionar tudo a partir daí.

Outra coisa: eu não tenho limites, quanto ao número de tabelas abertas. Só defino no projecto que existe uma tabela local (a dos alias das outras tabelas) e o resto é comandado por esta. Se alguma tabela não existir, crio na hora.

Espero ter ajudado


Responder

Gostei + 0

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar