Fórum gravar 2 tabelas #256589
29/10/2004
0
Alguem poderia informar qual a melhor maneira de se fazer a gravação de 2 tabelas ?
Tipo: Tabela de Pedidos + Itens do Pedido ! pois se a primeira falhar a gravação da segunda não deve acontecer (lógico) e tambem no caso de uma regravação..., como proceder ?
Alguem tem alguma apostila q ensine isso.., ou algum lugar onde procurar ?
Desde já agradeço
Gabeloni :?
Tipo: Tabela de Pedidos + Itens do Pedido ! pois se a primeira falhar a gravação da segunda não deve acontecer (lógico) e tambem no caso de uma regravação..., como proceder ?
Alguem tem alguma apostila q ensine isso.., ou algum lugar onde procurar ?
Desde já agradeço
Gabeloni :?
Gabeloni
Curtir tópico
+ 0
Responder
Posts
29/10/2004
Michaell
Já experimentou utilizar transações?
Se é que você está utilizando algum SGBD, e LÓGICO, que este SGBD suporte transações...
E mais... a implementação no Delphi vai variar de acordo com os componentes que você está utilizando para conexão com o ´suposto´ Banco...
Se for DBExpress (SQLConnection) vai um exemplo do próprio Help do Delphi:
P.S: Colega, vai uma dica: Seja mais claro e específico possível nas perguntas... Creio que você conseguirá respostas mais objetivas para sua dúvida, ok? :)
[]´s
Se é que você está utilizando algum SGBD, e LÓGICO, que este SGBD suporte transações...
E mais... a implementação no Delphi vai variar de acordo com os componentes que você está utilizando para conexão com o ´suposto´ Banco...
Se for DBExpress (SQLConnection) vai um exemplo do próprio Help do Delphi:
procedure TForm1.TransferButtonClick(Sender: TObject);
var
Amt: Integer;
TD: TTransactionDesc;
begin
if not SQLConnection1.InTransaction then
begin
TD.TransactionID := 1;
TD.IsolationLevel := xilREADCOMMITTED;
SQLConnection1.StartTransaction(TD);
try
Amt := StrToInt(AmtEdit.Text);
Debit.Params.ParamValues[´Amount´] := Amt;
Credit.Params.ParamValues[´Amount´] := Amt;
SQLConnection1.Commit(TD); {on success, commit the changes};
except
SQLConnection1.Rollback(TD); {on failure, undo the changes};
end;
end;
end;
P.S: Colega, vai uma dica: Seja mais claro e específico possível nas perguntas... Creio que você conseguirá respostas mais objetivas para sua dúvida, ok? :)
[]´s
Responder
Gostei + 0
30/10/2004
Gabeloni
Primeiramente agradeço a resposta !
Realmente não fui muito feliz na formulação da pergunta, sem dizer como foi generica demais. Peço desculpas.
Então complementando: Estou usando o Interbase 6.5 e Delphi 7 e os componentes da Palheta Interbase (IBDatabase, IBTransaction, IBDataSet), até agora consegui montar apenas formularios q necessitem de 1 Tabela, então a minha duvida é qual o melhor procedimento a ser adotado no caso de se trabalhar com 2 ou mais tabelas (Pedido + itens + atualiza estoque, etc).
Conheço um pouco sobre o Exception. Olhando o exemplo sugerido o q percebi q poderia ser feito é: gravação/alteração da tabela pedido, seguido pela gravação/alteração dos itens, tento comitar, se houver falha então o exception ira tratar com um rollback ??!!
Bem..., espero ter sido mais claro desta vez...,
Agradeço a atenção....
Realmente não fui muito feliz na formulação da pergunta, sem dizer como foi generica demais. Peço desculpas.
Então complementando: Estou usando o Interbase 6.5 e Delphi 7 e os componentes da Palheta Interbase (IBDatabase, IBTransaction, IBDataSet), até agora consegui montar apenas formularios q necessitem de 1 Tabela, então a minha duvida é qual o melhor procedimento a ser adotado no caso de se trabalhar com 2 ou mais tabelas (Pedido + itens + atualiza estoque, etc).
Conheço um pouco sobre o Exception. Olhando o exemplo sugerido o q percebi q poderia ser feito é: gravação/alteração da tabela pedido, seguido pela gravação/alteração dos itens, tento comitar, se houver falha então o exception ira tratar com um rollback ??!!
Bem..., espero ter sido mais claro desta vez...,
Agradeço a atenção....
Responder
Gostei + 0
Clique aqui para fazer login e interagir na Comunidade :)