Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Gilcimar

Checar se registro já existe

Recommended Posts

Olá pessoal, como posso fazer uma rotina para checar se o registro já existe na minha base de dados ?Hoje a minha tabela grava como chave unica uma sequencia de numeros automaticos....Só que nesta tabela eu tb vou guardar um campo DATA, e justamente eu gostaria que este campo data não se repetisse...Se já existe um registro com a data em questão gravado na tabela, me retorne a mensagem..."não é possivel incluir este registro, pois já existe um registro com esta data"EStou usando o Interbase como banco de dados.Como fazer isto ?Gilcimar

Compartilhar este post


Link para o post
Compartilhar em outros sites

Pode fazer um SQL antes de dar o .Post final, fazendo uma validação e testando se já existe um registro na tabela em questão...

Olá Marcio, primeiramente obrigado por responder ao tópico, no meu sql trabalho com parametros, não uso o .post...veja só:if not dm.ibTransa.InTransaction then dm.ibTransa.StartTransaction; dm.Qinserir.Close; dm.Qinserir.SQL.Clear; dm.Qinserir.SQL.Add('Insert into tbAntecipa'); dm.Qinserir.SQL.Add('(codigo, dtAnt, VlrBor, VlrDepos, VlrPag, VlrTotal, VlrFat, VlrTotAnt)'); dm.Qinserir.SQL.Add('values'); dm.Qinserir.SQL.Add('(:pcod, :pDt, :pBor, :pDep, :pPag, :pTotal, :pFat, :pTotAnt)'); dm.Qinserir.ParamByName('pcod').AsInteger := fBuscaCodigo; dm.Qinserir.ParamByName('pDt').AsDate := edmdtant.Date; dm.Qinserir.ParamByName('pBor').AsFloat := StrToFloat(edtbor.Text); dm.Qinserir.ParamByName('pDep').AsFloat := StrToFloat(edtdep.Text); dm.Qinserir.ParamByName('pPag').AsFloat := StrToFloat(edtpag.Text); dm.Qinserir.ParamByName('pTotal').AsFloat := StrToFloat(edttotal.Text); dm.Qinserir.ParamByName('pFat').AsFloat := StrToFloat(edtfaturamento.Text); dm.Qinserir.ParamByName('pTotAnt').AsFloat := StrToFloat(edttot.Text); try dm.Qinserir.ExecSQL; dm.ibTransa.CommitRetaining; pLimpaTela; except dm.ibTransa.Rollback; ShowMessage('Erro ao incluir registro...'); end;Como é que faço esta pesquisa que você falou, podes especificar com um exemplo ??Gilcimar

Compartilhar este post


Link para o post
Compartilhar em outros sites

Teria que fazer a consulta antes de executar este sql...

Algo do tipo:

 

qryQualquer.Close;qryQualquer.SQL.Clear;qryQualquer.SQL.Add('select tbAntecipa.codigo');qryQualquer.SQL.Add('from tbAntecipa');qryQualquer.SQL.Add('where tbAntecipa.codigo =:Codigo');qryQualquer.SQL.Add('and tbAntecipa.dtAnt =:Data');qryQualquer.ParamByName('Codigo').Value:=fBuscaCodigo;qryQualquer.ParamByName('Data').Value:=StrToDate(DateToStr(edmdtant.Date));qryQualquer.Open;if not qryQualquer.IsEmpty then	begin	if not dm.ibTransa.InTransaction then		dm.ibTransa.StartTransaction;	dm.Qinserir.Close;	dm.Qinserir.SQL.Clear;	dm.Qinserir.SQL.Add('Insert into tbAntecipa');	dm.Qinserir.SQL.Add('(codigo, dtAnt, VlrBor, VlrDepos, VlrPag, VlrTotal, VlrFat, VlrTotAnt)');	dm.Qinserir.SQL.Add('values');	dm.Qinserir.SQL.Add('(:pcod, :pDt, :pBor, :pDep, :pPag, :pTotal, :pFat, :pTotAnt)');	dm.Qinserir.ParamByName('pcod').AsInteger := fBuscaCodigo;	dm.Qinserir.ParamByName('pDt').AsDate := edmdtant.Date;	dm.Qinserir.ParamByName('pBor').AsFloat := StrToFloat(edtbor.Text);	dm.Qinserir.ParamByName('pDep').AsFloat := StrToFloat(edtdep.Text);	dm.Qinserir.ParamByName('pPag').AsFloat := StrToFloat(edtpag.Text);	dm.Qinserir.ParamByName('pTotal').AsFloat := StrToFloat(edttotal.Text);	dm.Qinserir.ParamByName('pFat').AsFloat := StrToFloat(edtfaturamento.Text);	dm.Qinserir.ParamByName('pTotAnt').AsFloat := StrToFloat(edttot.Text);	try		dm.Qinserir.ExecSQL;		dm.ibTransa.CommitRetaining;		pLimpaTela;	except		dm.ibTransa.Rollback;		ShowMessage('Erro ao incluir registro...');		end;	end;

Idéia seria esta, precisa arrumar conforme sua necessidade...

Compartilhar este post


Link para o post
Compartilhar em outros sites

Teria que fazer a consulta antes de executar este sql...Algo do tipo:

qryQualquer.Close;qryQualquer.SQL.Clear;qryQualquer.SQL.Add('select tbAntecipa.codigo');qryQualquer.SQL.Add('from tbAntecipa');qryQualquer.SQL.Add('where tbAntecipa.codigo =:Codigo');qryQualquer.SQL.Add('and tbAntecipa.dtAnt =:Data');qryQualquer.ParamByName('Codigo').Value:=fBuscaCodigo;qryQualquer.ParamByName('Data').Value:=StrToDate(DateToStr(edmdtant.Date));qryQualquer.Open;if not qryQualquer.IsEmpty then	begin	if not dm.ibTransa.InTransaction then		dm.ibTransa.StartTransaction;	dm.Qinserir.Close;	dm.Qinserir.SQL.Clear;	dm.Qinserir.SQL.Add('Insert into tbAntecipa');	dm.Qinserir.SQL.Add('(codigo, dtAnt, VlrBor, VlrDepos, VlrPag, VlrTotal, VlrFat, VlrTotAnt)');	dm.Qinserir.SQL.Add('values');	dm.Qinserir.SQL.Add('(:pcod, :pDt, :pBor, :pDep, :pPag, :pTotal, :pFat, :pTotAnt)');	dm.Qinserir.ParamByName('pcod').AsInteger := fBuscaCodigo;	dm.Qinserir.ParamByName('pDt').AsDate := edmdtant.Date;	dm.Qinserir.ParamByName('pBor').AsFloat := StrToFloat(edtbor.Text);	dm.Qinserir.ParamByName('pDep').AsFloat := StrToFloat(edtdep.Text);	dm.Qinserir.ParamByName('pPag').AsFloat := StrToFloat(edtpag.Text);	dm.Qinserir.ParamByName('pTotal').AsFloat := StrToFloat(edttotal.Text);	dm.Qinserir.ParamByName('pFat').AsFloat := StrToFloat(edtfaturamento.Text);	dm.Qinserir.ParamByName('pTotAnt').AsFloat := StrToFloat(edttot.Text);	try		dm.Qinserir.ExecSQL;		dm.ibTransa.CommitRetaining;		pLimpaTela;	except		dm.ibTransa.Rollback;		ShowMessage('Erro ao incluir registro...');		end;	end;
Idéia seria esta, precisa arrumar conforme sua necessidade...
Olá Marcio...tudo bem ?Infelizmente a rotina não funcionou...deu erro de exceção...Alguma outra idéia ?Gilcimar

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.