problemas com banco de dados(Imp!!!)
- 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:
- 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
Curtidas 0
Respostas
Nigro
23/04/2004
Tente criar e gravar alias em tempo de execução
GOSTEI 0
Mahdak
23/04/2004
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!!!
------
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!!!
GOSTEI 0
Mahdak
23/04/2004
sobe
-----
pessoal, isso é importante...
-----
pessoal, isso é importante...
GOSTEI 0
Gandalf.nho
23/04/2004
Crie uma variável global em algum formulário que fique sempre aberto ou armazene o banco usado no registro ou num arquivo INI
GOSTEI 0
Mahdak
23/04/2004
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
-----
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
GOSTEI 0
Bacalhau
23/04/2004
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
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
GOSTEI 0
Mahdak
23/04/2004
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 :!: :!:
- 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 :!: :!:
GOSTEI 0
Mahdak
23/04/2004
sobe
-----
ow duvida eterna... :oops:
-----
ow duvida eterna... :oops:
GOSTEI 0
Bacalhau
23/04/2004
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
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
GOSTEI 0