Fórum TEdit ou TDBEdit #320493

03/05/2006

0

Caros colegas....

- minha aplicação está funcionando em rede... qual componente seria o mais indicado pra eu usar nos meus formularios? TEdit ou TDBEdit ??

- Pergunto isso pelo fato do meu sistema trabalhar com TEdit nos formularios e de ter observado que quando dois usuarios estao incluindo um registro de mesmo nome, ao mesmo tempo, o sistema nao acusa que o registro ja existe - ´uma vez que o meu sistema checa se o registro ja existe no Evento OnExit do Componente TEdit´.

- Se eu trabalhasse com o componente TDBEdit quando eu digitasse o nome de um registro, teoricamente ele ja estaria inserido no campo da tabela para a checagem ou ainda precisaria comitar ele para ele estar disponivel para a checagem???


Mahdak

Mahdak

Responder

Posts

03/05/2006

Rodc

Qual banco de dados você usa?


Responder

Gostei + 0

03/05/2006

Mahdak

Qual banco de dados você usa?


- FireBird 1.5 ´.FDB´
- Delphi 7


Responder

Gostei + 0

03/05/2006

Sremulador

- minha aplicação está funcionando em rede... qual componente seria o mais indicado pra eu usar nos meus formularios? TEdit ou TDBEdit ??


Pode ser os dois, dependendo do caso.

- Pergunto isso pelo fato do meu sistema trabalhar com TEdit nos formularios e de ter observado que quando dois usuarios estao incluindo um registro de mesmo nome, ao mesmo tempo, o sistema nao acusa que o registro ja existe - ´uma vez que o meu sistema checa se o registro ja existe no Evento OnExit do Componente TEdit´.


você tera que fazer isto antes de inserir o registro ou ao inserir caso contrario você podera ter um grande perda de perfomance

- Se eu trabalhasse com o componente TDBEdit quando eu digitasse o nome de um registro, teoricamente ele ja estaria inserido no campo da tabela para a checagem ou ainda precisaria comitar ele para ele estar disponivel para a checagem???


Sim tem que comitar para gravar no db


Responder

Gostei + 0

03/05/2006

Mahdak

minha aplicação está funcionando em rede... qual componente seria o mais indicado pra eu usar nos meus formularios? TEdit ou TDBEdit ?? Pode ser os dois, dependendo do caso.


como assim?

- Pergunto isso pelo fato do meu sistema trabalhar com TEdit nos formularios e de ter observado que quando dois usuarios estao incluindo um registro de mesmo nome, ao mesmo tempo, o sistema nao acusa que o registro ja existe - ´uma vez que o meu sistema checa se o registro ja existe no Evento OnExit do Componente TEdit´. você tera que fazer isto antes de inserir o registro ou ao inserir caso contrario você podera ter um grande perda de perfomance


bom a checagem se o registro ja existe acontece da seguinte forma:

1. o usuario clica no botao ´novo´, para colocar a tabela em modo de Inserção e para gerar um código pro usuario ver...

2. o foco passa para o componente ´TEdit´ responsavel pelo registro que to querendo fazer a checagem... o usuario digita o que ele quer ali e entao ao sair do componente o sistema faz a checagem, atravez de um código tipo esse:

procedure TEstado.Edit_NomeExit(Sender: TObject);
var
zera : Integer;
begin
    //verifica se o registro ja existe ao cadastra-lo
    DM.Tbl_UF_.Close;
    DM.Tbl_UF_.SelectSQL.Clear;
    DM.Tbl_UF_.SelectSQL.Add(´Select * From ESTADO Where Nome = :Consulta ´);
    DM.Tbl_UF_.Params[0].AsString;
    DM.Tbl_UF_.ParamByName(´Consulta´).AsString:=Estado.Edit_Nome.Text;
    DM.Tbl_UF_.Open;
    If Estado.Edit_nome.Text = ´´ then
    begin
        // evita de dar a mensagem quando nao tem nada escrito no edit
    end
    else
        if Estado.Edit_nome.Text = DM.Tbl_UF_NOME.AsString then
        begin
            Zera := Application.MessageBox(´O Registro ja existe, deseja cadastra-lo mesmo assim?´, ´CONFIRME´, mb_yesno);
            if zera = IDYES Then
            begin

            end
                else
                    begin
                        Estado.Edit_nome.Clear;
                        Estado.Edit_nome.SetFocus;
                        Estado.Btn_Editar.Enabled := false;
                        Estado.Btn_Salvar.Enabled := true;
                        Estado.Btn_Up.Enabled     := false;
                        Estado.Btn_Down.Enabled   := false;
                    end;
        end;
end;



- Se eu trabalhasse com o componente TDBEdit quando eu digitasse o nome de um registro, teoricamente ele ja estaria inserido no campo da tabela para a checagem ou ainda precisaria comitar ele para ele estar disponivel para a checagem???


Sim tem que comitar para gravar no db


- o problema é o seguinte: o sistema checa tudo certinho... porem fiz o teste como se dois usuarios estivessem incluindo o mesmo registro ao mesmo tempo... o resultado foi que o sistema cadastrou os dois registros.

OBS: nao estou falando de chave primária, falo de um campo qualquer da tabela que preciso fazer a checagem

- entao eu deduzi que isso aconteceu pelo fato do componente ´TEdit´ nao inserir o registro na tabela antes de dar um post...

- teoricamente o componente TEdit faria isso pelo fato de eu ter dado um insert e de ele ser linkado diretamente com o campo da tabela ??

- é justamente essa a minha duvida....

espero ter conseguido me expressar....

Abraços! :lol:
[/code]


Responder

Gostei + 0

04/05/2006

Camilo

no meu caso, mando todas as atualizações e cadastramento de novos registros via sql, naum uso como o japa tá fazendo, assim eu tenho certeza de q eu mandar um insert posso definir no banco o q vai poder se repetir ou ñ em algum campo da tabela, e gostaria de saber dos colegas jah aproveitando q eh o mesmo assunto, se isso causa alguma lentidão ou ñ no sistema, pois em um .insert e .post estaria fazendo isso em cache e no banco cm o commit, assim naum precisando mandar um novo select pra da um refresh nos dados de um grid por exemplo... existe alguma maneira de atualizar os dados quando mando um insert na tabela e q essa tabela estou mostrando no grid algum comando q atualize a tela sem um novo comando select...??


Responder

Gostei + 0

04/05/2006

Sremulador

no caso de seu exemplo não averia necessidade de fazer um check poderia fazer uma chave unica pois ao inserir o item o for verificado a sua existencia ele vai te retornar um erro...


Responder

Gostei + 0

05/05/2006

Mahdak

- to dando uma olhada num livro aqui... será que o formulário de reconciliação de erros do delphi nao seria uma boa opção para o meu caso??
- ja tentei usar ele aqui da seguinte maneira:

procedure TDM.CDS_LoginReconcileError(DataSet: TCustomClientDataSet;
  E: EReconcileError; UpdateKind: TUpdateKind;
  var Action: TReconcileAction);
begin
    action := HandleReconcilieError(Tbl_Login, UpdateKind, E);
end;


Erro gerado: [b:19a88df7c8] [Error] U_DM.pas(229): Undeclared identifier: ´HandleReconcilieError´ [/b:19a88df7c8]


Obs: ja inclui ele na clausula uses do meu data module
uses U_reconciliacao;


Alguem poderia me ajudar com isso???

abração


Responder

Gostei + 0

05/05/2006

Rjun

Você usa TTable para trabalhar com seus dados?


Responder

Gostei + 0

05/05/2006

Mahdak

Você usa TTable para trabalhar com seus dados?


Rogério, utilizo os componentes da paleta Interbase, TIBDataSet, TIBTransaction, TIBDatabase, TDataSource... dae acrescentei mais um TClientDataSet e um TDataProvider pra manipular a reconciliação... ta uma pilha de componente pra trabalhar uahuaha...

o problema eh que to meio perdido com a manipulação desse formulario, segundo o erro que descrevi no post anterior.. aquilo eu tirei de um exemplo de um livro...

abração


Responder

Gostei + 0

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

Aceitar