Programando Delphi/Interbase em Rede
Tenho as seguintes procedures: mas estou com seguinte problema
e o problema que a estacao A grava o id = 90 se a estacao B aperta o botao
incluir ao mesmo tempo
vai ficar com id=91,ate ai tudo normal, mas quando a estacao A digita
alguma coisa no campo
NOme e aperta o botao salvar, nao aparece para a Estacao B se fazer uma
pesquisa (no grido)
Esta ai minha procedure
procedure Tffuncionario.spIncluiClick(Sender: TObject);
var
qryinclui : TIBQuery;
begin
contador:=´´;
pnlAtrib.Enabled := true;
qryinclui := TIBQuery.Create(nil);
qryinclui.Database:=dmmenu.IBDatabase1;
with qryauxiliar, sql do
begin
close;
clear;
add(´select max(idfunc)+1 as codigo from funcionario´);
open;
if fieldbyname(´codigo´).asstring = ´´ then
contador:=´1´
else
contador := qryauxiliar.fieldbyname(´codigo´).AsString;
end;
with qryinclui,sql do begin
close;
clear;
add(´insert into funcionario(idfunc)´);
add(´values(´´´+contador+´´´)´);
execsql;
add(´commit´);
end;
with qry do begin
sql.Text := ´select * from funcionario where idfunc = ´´´+contador+´´´´;
open;
qry.Edit;
end;
end;
procedure salvar
begin
if MessageDlg(´Deseja Salvar:´ + edtKey.Text + ´?´, mtConfirmation,
[mbYes, mbCancel], 0) = mrCancel then exit;
try
dmmenu.IBTransaction1.StartTransaction;
Qry.Post;
Qry.ApplyUpdates;
qry.SQL.add(´commit´);
dmmenu.IBTransaction1.CommitRetaining;
end;
e o problema que a estacao A grava o id = 90 se a estacao B aperta o botao
incluir ao mesmo tempo
vai ficar com id=91,ate ai tudo normal, mas quando a estacao A digita
alguma coisa no campo
NOme e aperta o botao salvar, nao aparece para a Estacao B se fazer uma
pesquisa (no grido)
Esta ai minha procedure
procedure Tffuncionario.spIncluiClick(Sender: TObject);
var
qryinclui : TIBQuery;
begin
contador:=´´;
pnlAtrib.Enabled := true;
qryinclui := TIBQuery.Create(nil);
qryinclui.Database:=dmmenu.IBDatabase1;
with qryauxiliar, sql do
begin
close;
clear;
add(´select max(idfunc)+1 as codigo from funcionario´);
open;
if fieldbyname(´codigo´).asstring = ´´ then
contador:=´1´
else
contador := qryauxiliar.fieldbyname(´codigo´).AsString;
end;
with qryinclui,sql do begin
close;
clear;
add(´insert into funcionario(idfunc)´);
add(´values(´´´+contador+´´´)´);
execsql;
add(´commit´);
end;
with qry do begin
sql.Text := ´select * from funcionario where idfunc = ´´´+contador+´´´´;
open;
qry.Edit;
end;
end;
procedure salvar
begin
if MessageDlg(´Deseja Salvar:´ + edtKey.Text + ´?´, mtConfirmation,
[mbYes, mbCancel], 0) = mrCancel then exit;
try
dmmenu.IBTransaction1.StartTransaction;
Qry.Post;
Qry.ApplyUpdates;
qry.SQL.add(´commit´);
dmmenu.IBTransaction1.CommitRetaining;
end;
Evandro_araujo
Curtidas 0
Respostas
Xisto
09/06/2004
Pra dizer a verdade nao sei se entendi bem seu codigo, mas tente fazer estas alteracoes e teste.
with qryauxiliar, sql do begin close; clear; add(´select max(idfunc)+1 as codigo from funcionario´); open; if fieldbyname(´codigo´).asstring = ´´ then contador:=´1´ else contador := qryauxiliar.fieldbyname(´codigo´).AsString; end; with qryinclui,sql do begin close; clear; add(´insert into funcionario(idfunc)´); add(´values(´´´+contador+´´´)´); execsql; add(´commit´); ExecSql; //Aqui end; with qry do begin sql.Text := ´select * from funcionario where idfunc = ´´´+contador+´´´´; open; qry.Edit; end; end; procedure salvar begin if MessageDlg(´Deseja Salvar:´ + edtKey.Text + ´?´, mtConfirmation, [mbYes, mbCancel], 0) = mrCancel then exit; try dmmenu.IBTransaction1.StartTransaction; qry.SQL.add(´commit´); // Aqui qry.ExecSql; // Aqui Qry.Post; Qry.ApplyUpdates; dmmenu.IBTransaction1.CommitRetaining; end;
GOSTEI 0