Salvando e carregando??
Como faço pra ao clicar no botao salvar ele salva e Carrega do banco o codigo do atual cadastro? e joga na edit(ecodigo.text)
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)
aqui o segundo registro! carrego o mesmo codigo do 1 registro!( o certo erra ele ter carregado o codigo 55!)
e aqui a fotu do banco!
ajudem por favor[/list][/b]
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)
aqui o segundo registro! carrego o mesmo codigo do 1 registro!( o certo erra ele ter carregado o codigo 55!)
e aqui a fotu do banco!
ajudem por favor[/list][/b]
Nilodp
Curtidas 0
Respostas
Marco Salles
24/02/2008
posso estar enganado mas acho que é so[b:e7c740f1ae][u:e7c740f1ae] tirar [/u:e7c740f1ae][/b:e7c740f1ae]as instruçoes
dm.qaluno.Close;
dm.qaluno.Open; //atualizando a consulta
do seu código...
dm.qaluno.Close;
dm.qaluno.Open; //atualizando a consulta
do seu código...
GOSTEI 0
Nilodp
24/02/2008
Nao deu certo =/
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)
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
Jpauloss
24/02/2008
Nao deu certo =/
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)
Não se ClientDataSet, se usar poderia dar um Next.
ClientDataSet.close;
ClientDataSet.Open;
ClientDataSet.Next;
GOSTEI 0
Marco Salles
24/02/2008
Pelo que da para os Outros Controles estão Corretos , isto é Mostrando os DAdos Corretos ... Certo ????
Mas o
EdtCodigo pega os Dados de dm.qaluno.fieldbyname(´codigo´).AsString;
e os outros controles pega os Dados de Quem ?????
Mas o
EdtCodigo pega os Dados de dm.qaluno.fieldbyname(´codigo´).AsString;
e os outros controles pega os Dados de Quem ?????
GOSTEI 0
Nilodp
24/02/2008
a solucao foi a seguinte!
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!
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
Nilodp
24/02/2008
a solucao foi a seguinte!
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!
ops
70
69
68
ihihih errei
GOSTEI 0
Marco Salles
24/02/2008
Muita solução para o Seu caso
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...
Fazer
a solucao foi a seguinte!
fiz com que no banco o ultimo registro que foi salvo ficasse na linha 1!
assim ORDER BY CODIDO DESC!
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
Jpauloss
24/02/2008
[quote:55fccc09e5=´Marco Salles´]Muita solução para o Seu caso
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???
Fazer
a solucao foi a seguinte!
fiz com que no banco o ultimo registro que foi salvo ficasse na linha 1!
assim ORDER BY CODIDO DESC!
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
Nilodp
24/02/2008
Nao é so local nao ussa rede!
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]
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
Marco Salles
24/02/2008
O seu codigo pode ser reduzido ... Há muitas instruçoes repetidas e isto não é bom ... Mas este é um outro problema . Vamos tentar primeiro obter o codigo do Cliente sem ter que gerar uma consulta ´pesada´ na Base de Dados ...
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 ????
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
Nilodp
24/02/2008
o Codigo é auto incremento!
o meu banco é FIREBIRD 1.5
utilizo o Data module para fazer a ligar do banco ao sistema!
utilizo storeprocedures no banco!
o meu banco é FIREBIRD 1.5
utilizo o Data module para fazer a ligar do banco ao sistema!
utilizo storeprocedures no banco!
GOSTEI 0
Nilodp
24/02/2008
o Codigo é auto incremento!
o meu banco é FIREBIRD 1.5
utilizo o Data module para fazer a ligar do banco ao sistema!
utilizo storeprocedures no banco!
quando chegar em casa posto o resto! to no meu servico!
GOSTEI 0