Verificar registros duplicados através de Try...Except
Saudações,
estou criando uma exceção numa rotina que pus no sistema:
A exceção está funcionando só que neste caso, o erro que aparecia era de um registro duplicado. Como faço para que o meu MessageDlg mostre a qtde de registros duplicados?
Tipo:MessageDlg(´Registros Duplicados: tal´,MtInformation,[Mbok],0);
Muito obrigado.
estou criando uma exceção numa rotina que pus no sistema:
try
close;
sql.clear;
sql.add(´INSERT INTO ´+table+´ (MAT_ALUNO, ALUNO, RESPONSAVEL,´);
sql.add(´DT_PGTO, VALOR, PARCELA, MES )´);
sql.add(´select ´+cbini.text+´.MAT_ALUNO,´+cbini.text+´.ALUNO,´+cbini.text+´.RESPONSAVEL´);
sql.add(´,´+cbini.text+´.DT_PGTO,´+cbini.text+´.VALOR,´+cbini.text+´.PARCELA,´+cbini.text+´.MES´);
sql.add(´from ´+cbini.text+´ inner join ´+cbfim.text+´ on ´+cbini.text+´.aluno=´+cbfim.text+´.aluno´);
prepare;
ExecSQL;
except
on EmySQLDatabaseError do
begin
MessageDlg(´Registro Duplicado!´,MtInformation,[Mbok],0);
frmprinc.database.Commit;
end
A exceção está funcionando só que neste caso, o erro que aparecia era de um registro duplicado. Como faço para que o meu MessageDlg mostre a qtde de registros duplicados?
Tipo:MessageDlg(´Registros Duplicados: tal´,MtInformation,[Mbok],0);
Muito obrigado.
Elias Jr
Curtidas 0
Respostas
Osocram
10/11/2004
Q BD vc usa?
Vc non usa chave primaria p evitar duplicacao?
Qto a sua resposta non sei... mas se o prob for duplicacao se vc usar chave primaria isso jah sera evitado retornando ´Key violation´
Vc non usa chave primaria p evitar duplicacao?
Qto a sua resposta non sei... mas se o prob for duplicacao se vc usar chave primaria isso jah sera evitado retornando ´Key violation´
GOSTEI 0
Elias Jr
10/11/2004
Olá amigo,
eu utilizo o MySql e esta rotina sem o Try..Except retorna um EmySQLDatabaseError de ´tantos registros duplicados na chave 1´ (que é a mat_aluno). Então eu coloquei o Try..Except mas gostaria de manter na minha mensagem a quantidade de registros que o erro me retornaria. Gostaria de sabe se existe como fazer isso. Muito obrigado.
eu utilizo o MySql e esta rotina sem o Try..Except retorna um EmySQLDatabaseError de ´tantos registros duplicados na chave 1´ (que é a mat_aluno). Então eu coloquei o Try..Except mas gostaria de manter na minha mensagem a quantidade de registros que o erro me retornaria. Gostaria de sabe se existe como fazer isso. Muito obrigado.
GOSTEI 0
Gandalf.nho
10/11/2004
Você deve tratar a propriedade Message da exceção para pegar a informação desejada.
GOSTEI 0
Osocram
10/11/2004
bom.. pel ojeito vc usa query, neh?
eu non tenho certeza mas c CDS (ClienteDataSet) vc poderia fazer assim...
erro:integer
erro := CDS.ApplyUpdates(0)
dae vc mandar mostrar esse erro... mas ele mostraria qtd de erros... non so das repeticoes.
Mas acho q isso non t ajuda no seu prob...
eu non tenho certeza mas c CDS (ClienteDataSet) vc poderia fazer assim...
erro:integer
erro := CDS.ApplyUpdates(0)
dae vc mandar mostrar esse erro... mas ele mostraria qtd de erros... non so das repeticoes.
Mas acho q isso non t ajuda no seu prob...
GOSTEI 0