Fórum Exemplos de como Inserir, Editar, Excluir e Desfazer...IBX.. #53513
24/10/2005
0
Eu venho por meio deste, para vcs poderem me dar alguns exemplos de codigos, de como inserir, editar, excluir e desfazer, usando IBX...
Tipo: Quando clicar no botao Novo, o q faz? No botao Editar, qual o codigo? No botao Desfazer, qual o codigo, e no botao Excluir, qual o codigo?
Agradeceria muito se pudesse ter variacoes diversas de codigos,
Grato,
Alcantarus.
PS: Estou pedindo isso, pois estou iniciando a programacao em IBX, tentei iniciar com DBX, porem, nao conseguir... quem sabe mais pra frente... Eu usava Paradox, entao usava Table.Append, Table.Post, Table.Edit, Table.Delete, etc...
Agradeco, e aguardo as manifestacoes dos mais experientes: AFarias, Vinicius2K, etc...
Alcantarus
Curtir tópico
+ 0Posts
24/10/2005
Afarias
|Table.Delete, etc
com IBX vc pode trabalhar praticamente da mesma forma. Só mude os Tables por IBDataSets (ou IBQuerys + IBUpdateSQL)
tb veja o tópico:
http://forum.clubedelphi.net/viewtopic.php?t=30575
T+
Gostei + 0
24/10/2005
Alcantarus
Caro AFarias,
Seria algo nesse nivel...
// Botao Incluir ibdsCli.Append; ibdsCli.FieldByName(´nomcli´).AsString := edNomcli.Text; // Botao Editar ibdsCli.Edit; ibdsCli.FieldByName(´nomcli´).AsString := edNomcli.Text; // Botao Gravar try if not ibTransaction.InTransaction then begin ibTransaction.StartTransaction; ibTransaction.Commit; end; except ibTransaction.RollBack; end; // Botao Desfazer try if ibTransaction.InTransaction then begin ibdsCli.Cancel; ibTransaction.RollBack; end; except end;
Gostei + 0
24/10/2005
Afarias
para gravar (enviar os comandos ao banco) vc usa o Post ::
IBDataSet.Post;
para confirmar a gravação (e tornar disponível para todos na rede) então vc tem q dar um Commit.
O código q vc colocou não faz sentido visto q:
1) vc já deve ter uma transação aberta (ou não teria como trabalhar com os dados, e tb não teria o q comitar)
2) startar uma transação e commitar sem fazer nada entre 1 e outro não faz exatamente nada.
seu código deveria ser algo como:
with IBDataSet1 do try if State in [dsEdit,dsInsert] then Post; Transaction.Commit; except // trata o erro, dependendo do caso, faz um rollback end;
se vc for trabalhar com algum processamento ou atualizações a partir de tabelas em memória e tals ... dai o código é mais parecido com o q vc colocou, ficando::
try
if not ibTransaction.InTransaction then
ibTransaction.StartTransaction;
{ ...aqui vc faz os updates/inserts/deletes... }
ibTransaction.Commit;
except
ibTransaction.RollBack;
end;
// Botao Desfazer
with IBDataSet1 do try if State in [dsEdit,dsInsert] then Cancel; Transaction.Rollback; except // trata o erro end;
T+
Gostei + 0
24/10/2005
Numeros.info
me manda o seu e-mail q te mando um exemplo comentado
Tadeu
Números Informática
www.numerosinformatica.com.br
sistemas@numerosinformatica.com.br
Gostei + 0
24/10/2005
Paulo
Gostei + 0
25/10/2005
Numeros.info
Assim que tiver uma chance me comprometo a construir um exemplo usando ibx todo comentado e colocar aqui no forum a disposição de todos, aguardem em breve
Tadeu
Números Informática
www.numerosinformatica.com.br
sistemas@numerosinformatica.com.br
Gostei + 0
25/10/2005
Alcantarus
with IBDataSet1 do try if State in [dsEdit,dsInsert] then Post; Transaction.Commit; except // trata o erro, dependendo do caso, faz um rollback end;
try
if not ibTransaction.InTransaction then
ibTransaction.StartTransaction;
{ ...aqui vc faz os updates/inserts/deletes... }
ibTransaction.Commit;
except
ibTransaction.RollBack;
end;
with IBDataSet1 do try if State in [dsEdit,dsInsert] then Cancel; Transaction.Rollback; except // trata o erro end;
Caros, gostaria que avaliassem o codigo abaixo e postassem algo que seria de acordo com o que eu estava precisando.
Agradeco a disposicao de todos.
Grato e no aguardo de uma solucao,
Alcantarus.
procedure TfmClientes.BotoesOn; begin sbIncluir.Enabled := True; sbPesquisar.Enabled := True; sbFechar.Enabled := True; sbEditar.Enabled := False; sbDesativar.Enabled := False; sbGravar.Enabled := False; sbDesfazer.Enabled := False; end; procedure TfmClientes.sbEditarClick(Sender: TObject); begin try begin dm.IBTransaction.StartTransaction; with dm.IBQuery do begin SQL.Clear; SQL.Add(´update it_cli set nomcli = :nomcli, numdoc = :numdoc where codcli <> ´ + QuotedStr(´000001´)); ParamByName(´nomcli´).AsString := edNomcli.Text; ParamByName(´numdoc´).AsString := edNumdoc.Text; ExecSQL; end; dm.IBTransaction.Commit; sMsg := ´Registro alterado com sucesso!´; Beep; MessageDlg(sMsg, mtInformation, [mbOK], 0); end; except on E: Exception do begin dm.IBTransaction.Rollback; sMsg := ´Registro não alterado!´; Beep; MessageDlg(sMsg, mtError, [mbOK], 0); end; end; end; procedure TfmClientes.sbGravarClick(Sender: TObject); begin try begin dm.ibCli.Post; dm.IBTransaction.Commit; sMsg := ´Registro incluído com sucesso!´; Beep; MessageDlg(sMsg, mtInformation, [mbOK], 0); end; except on E: Exception do begin dm.ibCli.Cancel; dm.IBTransaction.Rollback; sMsg := ´Registro não incluído!´; Beep; MessageDlg(sMsg, mtError, [mbOK], 0); end; end; end; procedure TfmClientes.sbDesfazerClick(Sender: TObject); begin dm.ibCli.Cancel; dm.IBTransaction.Rollback; sMsg := ´Operação desfeita!´; Beep; MessageDlg(sMsg, mtError, [mbOK], 0); end; procedure TfmClientes.sbIncluirClick(Sender: TObject); begin try begin dm.IBTransaction.StartTransaction; with dm.ibCli do begin Open; Insert; FieldByName(´codcli´).AsString := Copy(fmPrincipal.Sequencial(dm.IBQrSequencial,´IT_CLI´,´CODCLI´,´DIGCLI´),1,6); FieldByName(´digcli´).AsString := Copy(fmPrincipal.Sequencial(dm.IBQrSequencial,´IT_CLI´,´CODCLI´,´DIGCLI´),7,1); FieldByName(´nomcli´).AsString := edNomcli.Text; FieldByName(´numdoc´).AsString := edNumdoc.Text; end; end; except end; end; end.
Gostei + 0
Clique aqui para fazer login e interagir na Comunidade :)