Ajuda para modificar tabela em execução
Eaeee pessoal.
Estou com mais um problema e uma duvida.
Estou desenvolvendo um programa de aluguel, só que tenho um problema, pois o aluguel pode ser feito com um número variável de produtos.
Como posso fazer para criar os campos onde vou salvar o código dos produtos na tabela aluguel ... se tiver que cadastrar 3 produtos no mesmo aluguel vou ter que criar 3 campos na tabela aluguel.
Alguem tem alguma ideia ou algum código que possa fazer isso?
Se alguem não entendeu direito é só falar que tiro alguma dúvida.
Desde já muito obrigado.
Estou com mais um problema e uma duvida.
Estou desenvolvendo um programa de aluguel, só que tenho um problema, pois o aluguel pode ser feito com um número variável de produtos.
Como posso fazer para criar os campos onde vou salvar o código dos produtos na tabela aluguel ... se tiver que cadastrar 3 produtos no mesmo aluguel vou ter que criar 3 campos na tabela aluguel.
Alguem tem alguma ideia ou algum código que possa fazer isso?
Se alguem não entendeu direito é só falar que tiro alguma dúvida.
Desde já muito obrigado.
Mano_froids
Curtidas 0
Respostas
Edilcimar
14/12/2007
Se entendi direito, vc deverá ter 3 tabelas 1 com os produtos, 1 com os clientes e outra com os produtos alugados, aí a cada produto que for alugado vc joga na tabela alugados o código do produto e o código da pessoa para quem for alugado
GOSTEI 0
Mano_froids
14/12/2007
Se entendi direito, vc deverá ter 3 tabelas 1 com os produtos, 1 com os clientes e outra com os produtos alugados, aí a cada produto que for alugado vc joga na tabela alugados o código do produto e o código da pessoa para quem for alugado
Isso mesmo, só que não sei a quantidade de produtos isso quem vai indicar é o usuário ... por isso não sei como fazer depois para incluir na tabela aluguel .... se crio por exemplo 10 campos para produtos na tabela aluguel ai um usuário precisa de 11 ou de 1 vai falta ou sobrar campos.
Tem alguma outra forma de fazer isso a não ser essa que falei acima?
GOSTEI 0
Edilcimar
14/12/2007
vc não cria 10 campos, faz um append para cada item
GOSTEI 0
Mano_froids
14/12/2007
vc não cria 10 campos, faz um append para cada item
Essa é uma opção.
mas queria saber se não tem alguma outra forma de fazer isso. Porque se crio 10 campos e o clente quer alugar 11 coisas, ai o programa já não funciona.
Então queria saber se poderia implementar de outra forma ... quem sabe criando outra tabela em modo de execução ou adicionar os campos a do aluguel mesmo.
Caso alguem tenha alguma idéia
GOSTEI 0
Mano_froids
14/12/2007
sobe
GOSTEI 0
Edilcimar
14/12/2007
a melhor idéia já forneci, do jeito que você pensou, sempre vai dar errado, além do problema de ficar com campos vazios quando a pessoa pegar menos objetos que a quantidade de campos da tabela
GOSTEI 0
Andersonscinfo
14/12/2007
ola..boa tarde...amigo faz assim que funciona...vc tem a tabela de aluguel e a tabela de clientes...então é só vc criar uma tabela produtos....esta tabela produtos não vai conter quantidades de produtos...funciona assim....
codigo, cod_aluguel, cod_cliente, cod_produto, descricao_produto, valor, data, ativo
ai vc pode criar quantos produtos vc quizer p/ cada aluguel, e pegar como referencia para saber de quem é cada produto os campos cod_aluguel, cod_cliente, e cod_produto....
entendeu??
codigo, cod_aluguel, cod_cliente, cod_produto, descricao_produto, valor, data, ativo
ai vc pode criar quantos produtos vc quizer p/ cada aluguel, e pegar como referencia para saber de quem é cada produto os campos cod_aluguel, cod_cliente, e cod_produto....
entendeu??
GOSTEI 0
Mano_froids
14/12/2007
ola..boa tarde...amigo faz assim que funciona...vc tem a tabela de aluguel e a tabela de clientes...então é só vc criar uma tabela produtos....esta tabela produtos não vai conter quantidades de produtos...funciona assim....
codigo, cod_aluguel, cod_cliente, cod_produto, descricao_produto, valor, data, ativo
ai vc pode criar quantos produtos vc quizer p/ cada aluguel, e pegar como referencia para saber de quem é cada produto os campos cod_aluguel, cod_cliente, e cod_produto....
entendeu??
Vamos ver se entendi, vou criar uma 3 tabela por exemplo produtos ... e cada registro vai ser 1 produto alugado.
Vou tentar fazer isso.
Muito obrigado pela ajuda
GOSTEI 0
Andersonscinfo
14/12/2007
isso mesmo...é tipo um modulo de orçamento, ou venda.... tem a tabela venda e dai tem a tabela itens_venda, itens venda é onde ficara os itens, os produtos daquela venda.....pode tentar que vc vai conceguir
GOSTEI 0
Mano_froids
14/12/2007
isso mesmo...é tipo um modulo de orçamento, ou venda.... tem a tabela venda e dai tem a tabela itens_venda, itens venda é onde ficara os itens, os produtos daquela venda.....pode tentar que vc vai conceguir
Criei a tabela ITENS, mas estou com problemas porque tenho que cadastrar os itens antés de confirmar o aluguel ... então pensei em fazer uma tabela temporária com os mesmos campos menos o código do aluguel e quando confirma o aluguel mandar os dados da tabela temporária + o código do aluguel para a tabela ITENS.
Tem alguma forma de fazer isso, ou outro tipo de fazer isso.
Desde já muito obrigado.
GOSTEI 0
Andersonscinfo
14/12/2007
sim....vc pode usar o clientedataset do proprio delphi.....salva apenas em memória e depois vc salva no banco...é bem simples...a metodologia é praticamente a mesma de um mestre detalhe de vendas, orçamentos ou algo assim...
entendeu?
entendeu?
GOSTEI 0
Mano_froids
14/12/2007
sim....vc pode usar o clientedataset do proprio delphi.....salva apenas em memória e depois vc salva no banco...é bem simples...a metodologia é praticamente a mesma de um mestre detalhe de vendas, orçamentos ou algo assim...
entendeu?
Estou tentando fazer com o clientedataset, mas não consegui muita coisa na Internet sobre o isso ... já criei a tabela só que ainda não consegui mandar para o banco de dados.
Se tiver algum site ou apostila sobre isso, ou se tiver algum exemplo também serve ..... coloque ai!!!
Muito obrigado
GOSTEI 0
Andersonscinfo
14/12/2007
vamos por partes...vc não ta conceguindo mandar para o banco?? qual banco de dados vc ta usando??? use o cliente dataset apenas pra salvar em memória...p/ mandar para o banco use uma query
GOSTEI 0
Mano_froids
14/12/2007
vamos por partes...vc não ta conceguindo mandar para o banco?? qual banco de dados vc ta usando??? use o cliente dataset apenas pra salvar em memória...p/ mandar para o banco use uma query
Estou usando PARADOX ... o que não consegui foi enviar para o banco de dados. Tem algum código para fazer isso?
GOSTEI 0
Andersonscinfo
14/12/2007
mas vc ta enviando direto do clientedataset?? ou ta usando um ttable??
vc preciza descrever melhor os passos que esta seguindo...pois sem mais informação não concigo te ajudar......
não concegue mandar p/ o banco?? porque?? qual erro da???como ta fazendo pra mandar p/ o banco??
vc preciza descrever melhor os passos que esta seguindo...pois sem mais informação não concigo te ajudar......
não concegue mandar p/ o banco?? porque?? qual erro da???como ta fazendo pra mandar p/ o banco??
GOSTEI 0
Mano_froids
14/12/2007
mas vc ta enviando direto do clientedataset?? ou ta usando um ttable??
vc preciza descrever melhor os passos que esta seguindo...pois sem mais informação não concigo te ajudar......
não concegue mandar p/ o banco?? porque?? qual erro da???como ta fazendo pra mandar p/ o banco??
Não tenho muita idéia de como fazer isso.
Consegui um código na Internet, mas usando outro banco de dados e não o PARADOX ao qual estou desenvolvendo o sistema.
Coloquei uma query e tentei modificar o código, vou colocar ai.
Coloquei 1 * na frente das linhas que eu não sei o que é e nem como mudar e muito obrigado pela ajuda.
Bastaria fazer um clone dos registros que estão na tabela provisória para a tabela no banco de dados que já ia funcionar porque as tabelas são iguais, mas também não sei como fazer isso.
{ Vamos para o 1o Registro. }
FmAluguel.ClientDataSet1.First;
* Query1.Transaction := IBDatabase.InternalTransaction;
{ Loop para percorrer os registros no ClientDataSet. }
while not FmAluguel.ClientDataSet1.Eof do
begin
Query1.Close;
Query1.SQL.Clear;
{ Informamos a Instrução SQL para inclusão dos registros. }
Query1.SQL.Add(´INSERT INTO TAB_CLIENTDATASET´);
Query1.SQL.Add(´ (Ite_alu_cod,´);
Query1.SQL.Add(´ (Ite_rou_cod,´);
Query1.SQL.Add(´ Ite_ace)´);
Query1.SQL.Add(´ Ite_val)´);
Query1.SQL.Add(´VALUES ´);
Query1.SQL.Add(´(:AHRIte_alu_cod,´);
Query1.SQL.Add(´ :AHRIte_rou_cod,´);
Query1.SQL.Add(´ :AHRIte_ace)´);
Query1.SQL.Add(´ :AHRIte_val)´);
{ Inicia a transação. }
* if not IBDatabase.InternalTransaction.InTransaction then
IBDatabase.InternalTransaction.StartTransaction;
Query1.Prepare;
{ Os parâmetros especificados acima. }
Query1.ParamByName(´AHRIte_alu_cod´).AsString := FmAluguel.ClientDataSet1Ite_alu_cod.AsString;
Query1.ParamByName(´AHRIte_rou_cod´).AsString := FmAluguel.ClientDataSet1Ite_rou_cod.AsString;
Query1.ParamByName(´AHRIte_ace´).AsString := FmAluguel.ClientDataSet1Ite_ace.AsString;
Query1.ParamByName(´AHRIte_val´).AsFloat := FmAluguel.ClientDataSet1Ite_val.AsFloat;
{ Executa a instrução SQL. }
Query1.ExecQuery;
try
{ Grava os dados na tabela e fecha a transação. }
* IBDatabase.InternalTransaction.Commit;
except
{ Ocorreu algum problema. Não gravamos nada e fechamos a transação. }
* IBDatabase.InternalTransaction.Rollback;
end;
{ Vamos para o próximo registro. }
FmAluguel.ClientDataSet1.Next;
end;
GOSTEI 0
Andersonscinfo
14/12/2007
amigo...pelo que percebi vc vai precizar de muita ajuda, notei que vc me parece ser bastante iniciante em delphi, este código que vc pegou não se aplica de maneira nenhuma a sua aplicação, pois são compontes para manipulação de dados do interbase/firebird, nem por mil anos vou conceguir te ajudar por aqui, tenho uma propósta pra vc, pega meu skype, e me adiciona, eu te dou uma introdução de como vai fazer, mas ja vou dizendo, não vo te dar nada pronto, vou te passar uma introdução e vc vai fazendo e aprende...se não logo mais vc vai ter outra duvida quase referente ao mesmo assunto....ai depois que vc resolver vc volta e resolve o tópico e posta sua esperiencia.....se concordar pega meu username do skype
andersonpgsql
andersonpgsql
GOSTEI 0
Mano_froids
14/12/2007
amigo...pelo que percebi vc vai precizar de muita ajuda, notei que vc me parece ser bastante iniciante em delphi, este código que vc pegou não se aplica de maneira nenhuma a sua aplicação, pois são compontes para manipulação de dados do interbase/firebird, nem por mil anos vou conceguir te ajudar por aqui, tenho uma propósta pra vc, pega meu skype, e me adiciona, eu te dou uma introdução de como vai fazer, mas ja vou dizendo, não vo te dar nada pronto, vou te passar uma introdução e vc vai fazendo e aprende...se não logo mais vc vai ter outra duvida quase referente ao mesmo assunto....ai depois que vc resolver vc volta e resolve o tópico e posta sua esperiencia.....se concordar pega meu username do skype
andersonpgsql
Eu quero uma ajuda sim, mesmo porque se você fosse fazer pra mim essa aplicação eu teria que pagar para fazer isso, vou colocar no meu skype e conversamos.
GOSTEI 0
Mano_froids
14/12/2007
Queria primeiramente agradecer a todos que tentaram me ajudar e em especial ao Adriano... Valeu mesmo.
Vou colocar o código como está por enquanto para tranferir os registros do clientdataset para o banco de dados, no meu caso o PARADOX.
var
cod_alu : String;
begin
with modcadastro do
begin
modcadastro.TbAluguel.Open;
modcadastro.TbAluguel.Append;
modcadastro.TbAluguelValor_cobrado.Text := LabeledEdit4.Text;
modcadastro.TbAluguelObservacoes.Text := LabeledEdit5.Text;
modcadastro.TbAluguelData_alu.Text := MaskEdit1.Text;
modcadastro.TbAluguelData_pre_dev.Text := MaskEdit2.Text;
// transforma e atribui alu_cod
modcadastro.TbAluguel.Post;
cod_alu := modcadastro.TbAluguelAlu_cod.text;
modcadastro.TbAluguel.Close;
FmAluguel.Clientdataset1.first;
modcadastro.TbItens.Open;
while not (clientdataset1.eof) do
begin
TbItens.append;
TbItensIte_alu_cod.value:=cod_alu;
TbItensIte_rou_cod.value:=clientdataset1Ite_rou_cod.Value;
TbItensIte_ace.Value:=clientdataset1Ite_ace.Value;
TbItensIte_val.Value:=Clientdataset1Ite_val.value;
TbItens.post;
Clientdataset1.next;
end;
end;
Está ai é só modificar dependendo de sua aplicação.
Vou colocar o código como está por enquanto para tranferir os registros do clientdataset para o banco de dados, no meu caso o PARADOX.
var
cod_alu : String;
begin
with modcadastro do
begin
modcadastro.TbAluguel.Open;
modcadastro.TbAluguel.Append;
modcadastro.TbAluguelValor_cobrado.Text := LabeledEdit4.Text;
modcadastro.TbAluguelObservacoes.Text := LabeledEdit5.Text;
modcadastro.TbAluguelData_alu.Text := MaskEdit1.Text;
modcadastro.TbAluguelData_pre_dev.Text := MaskEdit2.Text;
// transforma e atribui alu_cod
modcadastro.TbAluguel.Post;
cod_alu := modcadastro.TbAluguelAlu_cod.text;
modcadastro.TbAluguel.Close;
FmAluguel.Clientdataset1.first;
modcadastro.TbItens.Open;
while not (clientdataset1.eof) do
begin
TbItens.append;
TbItensIte_alu_cod.value:=cod_alu;
TbItensIte_rou_cod.value:=clientdataset1Ite_rou_cod.Value;
TbItensIte_ace.Value:=clientdataset1Ite_ace.Value;
TbItensIte_val.Value:=Clientdataset1Ite_val.value;
TbItens.post;
Clientdataset1.next;
end;
end;
Está ai é só modificar dependendo de sua aplicação.
GOSTEI 0