GARANTIR DESCONTO

Fórum Exemplos de como Inserir, Editar, Excluir e Desfazer...IBX.. #53513

24/10/2005

0

Caros amigos foristas,

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

Alcantarus

Responder

Posts

24/10/2005

Afarias

|Eu usava Paradox, entao usava Table.Append, Table.Post, Table.Edit,
|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+


Responder

Gostei + 0

24/10/2005

Alcantarus

|Eu usava Paradox, entao usava Table.Append, Table.Post, Table.Edit, |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+



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;



Responder

Gostei + 0

24/10/2005

Afarias

// Botao Gravar

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+


Responder

Gostei + 0

24/10/2005

Numeros.info

Amigão é muito simples

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


Responder

Gostei + 0

24/10/2005

Paulo

Perdão numeros.info, mas responder via email, não seria justo, pois a pergunta veio pelo forum.


Responder

Gostei + 0

25/10/2005

Numeros.info

Quem deve pedir desculpas sou eu.

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


Responder

Gostei + 0

25/10/2005

Alcantarus

// Botao Gravar 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+



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.




Responder

Gostei + 0

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

Aceitar