Fórum Salvando e carregando?? #354271
24/02/2008
0
eu usso o seguinte codigo e ele sempre carrega o 1 registro que tah no banco =//// tudo errado!
storedProcedure.ParamByName(´operacao´).AsString := ´I´;
try
storedProcedure.ExecProc;
TstoredProcedure.Commit;
MessageDlgPos(´INCLUSÃO EFETUADA COM SUCESSO!´,mtInformation,[mbOk], 0, 400, 50);
dm.qaluno.Close;
dm.qaluno.Open; //atualizando a consulta
[b:dd13aeda27]ecodigo.Text:= dm.qaluno.fieldbyname(´codigo´).AsString;[/b:dd13aeda27]
aqui esta a fotu do 1 registro!!! que salvei! blz agora se eu for cadastrar outro ele vai carrregar o codigo do anterior salvo(1 no banco)
[img:dd13aeda27]http://images.cjb.net/3ca6d.jpg[/img:dd13aeda27]
aqui o segundo registro! carrego o mesmo codigo do 1 registro!( o certo erra ele ter carregado o codigo 55!)
[img:dd13aeda27]http://images.cjb.net/7f35f.jpg[/img:dd13aeda27]
e aqui a fotu do banco!
[img:dd13aeda27]http://images.cjb.net/e61b9.jpg[/img:dd13aeda27]
ajudem por favor[/list][/b]
Nilodp
Curtir tópico
+ 0Posts
24/02/2008
Marco Salles
dm.qaluno.Close;
dm.qaluno.Open; //atualizando a consulta
do seu código...
Gostei + 0
24/02/2008
Nilodp
tipo tava pensando aqui que tem um jeito se no banco o codigo fosse ordenado por ordem descrecente!
assim
70
69
68
67
assim o ultimo registro é o ultimo a ser salvo!
ficando no topo do BANCO!
o proximo ficaria
71
70
69
68
teria como? fazer isso no sql! order by codigo(descrecente)
Gostei + 0
24/02/2008
Jpauloss
Não se ClientDataSet, se usar poderia dar um Next.
ClientDataSet.close;
ClientDataSet.Open;
ClientDataSet.Next;
Gostei + 0
24/02/2008
Marco Salles
Mas o
EdtCodigo pega os Dados de dm.qaluno.fieldbyname(´codigo´).AsString;
e os outros controles pega os Dados de Quem ?????
Gostei + 0
24/02/2008
Nilodp
fiz com que no banco o ultimo registro que foi salvo ficasse na linha 1!
assim ORDER BY CODIDO DESC!
esse comando sql ordena em ordem descrecente no banco de dados!
70 fulano
69 paulo
78 teste
......
e o codigo que usso pega sempre o registro que tah na 1 linha!
e como o ultimo registro se encrontra na 1 linha ele carrega corretamente!
Gostei + 0
24/02/2008
Nilodp
ops
70
69
68
ihihih errei
Gostei + 0
24/02/2008
Marco Salles
Fazer
Claro que vai dar certo ... Mas pergunto é a melhor Solução ????
Eu particularmente não concordo em vc usar um Sql , trafegando todas
essas informaçoes na Rede para pegar apenas um Valor ... Ou Seja
o Ultimo Codigo Cliente Cadastrado
Ha outras maneiras de se Fazer isto com memlhor performace e escalabilidade .
So que na postagem da sua dúvida , faltou dados concretos para serem analizados . Tecnologia de Acesso , Banco De Dados , se o Campo Codigo é Auto incrementado , Se trabalha Desconectado , se o Aplicativo é Desktop ou se usara em Rede...
Gostei + 0
24/02/2008
Jpauloss
Fazer
Claro que vai dar certo ... Mas pergunto é a melhor Solução ????
Eu particularmente não concordo em vc usar um Sql , trafegando todas
essas informaçoes na Rede para pegar apenas um Valor ... Ou Seja
o Ultimo Codigo Cliente Cadastrado
Ha outras maneiras de se Fazer isto com memlhor performace e escalabilidade .
So que na postagem da sua dúvida , faltou dados concretos para serem analizados . Tecnologia de Acesso , Banco De Dados , se o Campo Codigo é Auto incrementado , Se trabalha Desconectado , se o Aplicativo é Desktop ou se usara em Rede...[/quote:55fccc09e5]
É verdade, as vezes achamos soluções que ao decorrer do tempo veremos que não foi uma boa solução, e quando o banco estiver com milhares de dados??? O que fazer???
Gostei + 0
24/02/2008
Nilodp
vo posta o resto do codigo que usso no botao [b:8a054c18eb]SALVAR![/b:8a054c18eb]
segue:
if (enome.Text= ´´)then
begin
showmessage(´CAMPO OBRIGATORIO´);
enome.SetFocus;
abort;
end;
//verificando se é inclusão
if ecodigo.Text = ´´ then
begin //pergunta os parametros da procedure
if MessageDlgPos(´CONFIRMA INCLUSÃO?´, mtConfirmation,[mbyes,mbno], 0, 400, 50) = 6 then
begin // passa os parametros da procedure
storedProcedure.Close;
storedProcedure.ParamByName(´codigo´).AsInteger := 0;
storedProcedure.ParamByName(´nome´).AsString :=enome.text;
storedProcedure.ParamByName(´sexo´).AsString :=esexo.text;
storedProcedure.ParamByName(´cpf´).AsString :=ecpf.text;
storedProcedure.ParamByName(´rg´).AsString :=erg.text;
storedProcedure.ParamByName(´emissor´).AsString :=eemissor.text;
storedProcedure.ParamByName(´uf´).AsString :=euf.text;
storedProcedure.ParamByName(´nascimento´).AsString :=enascimento.text;
storedProcedure.ParamByName(´endereco´).AsString :=eendereco.text;
storedProcedure.ParamByName(´bairro´).AsString :=ebairro.text;
storedProcedure.ParamByName(´cidade´).AsString :=ecidade.text;
storedProcedure.ParamByName(´residencial´).AsString :=efone.text;
storedProcedure.ParamByName(´movel´).AsString :=ecelular.text;
storedProcedure.ParamByName(´recado´).AsString :=erecado.text;
storedProcedure.ParamByName(´pai´).AsString :=epai.text;
storedProcedure.ParamByName(´mae´).AsString :=emae.text;
storedProcedure.ParamByName(´responsavel´).AsString :=eresponsavel.text;
storedProcedure.ParamByName(´obs´).AsString :=eobservacoes.text;
storedProcedure.ParamByName(´serie´).AsString :=eano.text;
storedProcedure.ParamByName(´operacao´).AsString := ´I´;
try
storedProcedure.ExecProc;
TstoredProcedure.Commit;
MessageDlgPos(´INCLUSÃO EFETUADA COM SUCESSO!´,mtInformation,[mbOk], 0, 400, 50);
dm.qaluno.Close;
dm.qaluno.Open; //atualizando a consulta
ecodigo.Text:= dm.qaluno.fieldbyname(´codigo´).AsString;
bsalvar2.Click;
except
on E: Exception do
begin
MessageDlg(E.Message, mterror, [mbOk], 0);
abort;
end;
end;
end;
end
else
begin
if messagedlgpos(´Confirma Alteração?´,mtconfirmation,[mbyes,mbno],0,400,50)=6 then
begin
storedprocedure.close;
storedprocedure.ParamByName(´codigo´).AsInteger:=strtoint(ecodigo.Text);
storedProcedure.ParamByName(´nome´).AsString :=enome.text;
storedProcedure.ParamByName(´sexo´).AsString :=esexo.text;
storedProcedure.ParamByName(´cpf´).AsString :=ecpf.text;
storedProcedure.ParamByName(´rg´).AsString :=erg.text;
storedProcedure.ParamByName(´emissor´).AsString :=eemissor.text;
storedProcedure.ParamByName(´uf´).AsString :=euf.text;
storedProcedure.ParamByName(´nascimento´).AsString :=enascimento.text;
storedProcedure.ParamByName(´endereco´).AsString :=eendereco.text;
storedProcedure.ParamByName(´bairro´).AsString :=ebairro.text;
storedProcedure.ParamByName(´cidade´).AsString :=ecidade.text;
storedProcedure.ParamByName(´residencial´).AsString :=efone.text;
storedProcedure.ParamByName(´movel´).AsString :=ecelular.text;
storedProcedure.ParamByName(´recado´).AsString :=erecado.text;
storedProcedure.ParamByName(´pai´).AsString :=epai.text;
storedProcedure.ParamByName(´mae´).AsString :=emae.text;
storedProcedure.ParamByName(´responsavel´).AsString :=eresponsavel.text;
storedProcedure.ParamByName(´obs´).AsString :=eobservacoes.text;
storedProcedure.ParamByName(´serie´).AsString :=eano.text;
storedprocedure.ParamByName(´operacao´).AsString:=´A´;
try
storedprocedure.ExecProc;
tstoredprocedure.Commit;
messagedlgpos(´Alteração Efetuada com sucesso´,mtconfirmation,[mbok],0,400,50);
dm.qaluno.close;
dm.qaluno.Open;
except
on E: exception do
begin
messagedlg(E.Message, mterror,[mbok],0);
abort;
end;
end;
end;
end;
end;[/b]
Gostei + 0
25/02/2008
Marco Salles
So que é necessário saber se o campo codigo é auto incrementado ou não
Caso ele seje Auto Incrementado , podemos obter este codigo, com uma instrução Sql , ´performizada´ para este propósito
Mas para isto é nescessário saber qual é O banco de Dados que voce esta Utilizando ... Depedendo do Banco e tb da sua versão pode haver
diferenças nas instruçoes
Qual a tecnologia de acesso a este Banco ... Quem é este storedProcedure e dm.qaluno por exemplo ????
Gostei + 0
25/02/2008
Nilodp
o meu banco é FIREBIRD 1.5
utilizo o Data module para fazer a ligar do banco ao sistema!
utilizo storeprocedures no banco!
Gostei + 0
25/02/2008
Nilodp
quando chegar em casa posto o resto! to no meu servico!
Gostei + 0
Clique aqui para fazer login e interagir na Comunidade :)