Ir para conteúdo

POWERED BY:

Arquivado

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

Renanbg

SQL, consulta valor igual

Recommended Posts

Boa tarde,

 

Uso o codigo abaixo para verificar em 2 tabelas se ja existe o Num_doc cadastrado no momento que faço uma inserção

 

if (frmdm.tbduplicatas.State = dsInsert) then
	begin
	Query1.Close;
	Query1.SQL.Clear;
	Query1.SQL.Add('select tbduplicatas.Num_doc');
	Query1.SQL.Add('from tbduplicatas');
	Query1.SQL.Add('where tbduplicatas.Num_doc = ''' + frmdm.tbduplicatasNum_doc.AsString + '''');
	Query1.SQL.Add('union');
	Query1.SQL.Add('select tbvencidas.Num_doc');
	Query1.SQL.Add('from tbvencidas');
	Query1.SQL.Add('where tbvencidas.Num_doc = ''' + frmdm.tbduplicatasNum_doc.AsString + '''');
	Query1.Open;
	if (not Query1.IsEmpty) then
		begin
		Application.MessageBox(PCHAR('A duplicata de Nº: '+ frmdm.tbduplicatasNum_doc.AsString + ' já encontra-se cadastrada,'+#13+'por favor verifique os dados e tente novamente !'), 'Duplicatas', MB_ICONERROR + MB_OK);
		dbedit4.SetFocus;
		end;
	end;

Agora a minha duvida é como fazer para verificar isso em caso de edição.

 

Suponhamos que ja cadastrei varios dados, inclusive o Num_doc e quero editar apenas a data

 

então se colocasse apenas a linha

 

if (frmdm.tbduplicatas.State = dsEdit)

na hora de gravar eu n conseguiria pois ele vai ver que o Num_doc ja ta ali cadastrado

 

Tem uma forma de fazer isso?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Sim tem!

Esses dias postei isso aqui no fórum:

 

Assinatura da função:

function userExists(const userName: string; userId: Integer = 0): Boolean;

Implementação:

function userExists(const userName: string; userId: Integer): Boolean;
  begin
	with qryAux do
	begin
	  Close;
	  SQL.Clear;
	  SQL.Add('SELECT ID_USUARIOS FROM USUARIOS');
	  SQL.Add('WHERE ID_USUARIOS <> ' + IntToStr(userId));
	  SQL.Add('AND NOMEUSUARIO = ' + QuotedStr(userName));
	  Open;
	end;
  
	Result:= qryAux.RecordCount > 0;
  end;

Usando esta funcção, basta que no momento que estiver editando o registro, você passe como parametro o id_usuario para a variavel idUser ...

Agora basta você adaptar à suas nescessidas. http://forum.imasters.com.br/public/style_emoticons/default/thumbsup.gif

Compartilhar este post


Link para o post
Compartilhar em outros sites

Nao entendi como posso usar essa função Rodrigo.

 

Creio que não resolve o meu dilema

 

pq pense assim:

 

estou editando o registro numero 1

 

nome: joao

num_doc: 23

data: 23/10/2008

 

então se eu for gravar sem alterar o nun_doc o sistema deve me deixar gravar, ja se eu alterar esse campo nun_doc para 25 por exemplo, então o sistema deve fazer a pesquisa para ver se ja existe esse numero, assim como mostra o codigo q postei

Compartilhar este post


Link para o post
Compartilhar em outros sites

Kra, não sei se to lhe entendendo bem.

Mais da forma que to tentando lhe dizer, é assim:

 

Imagine o registro que você me propôs:

 

id_registro: autoincrement

nome: joao

num_doc: 23

data: 23/10/2008

 

Agora, imagine você inserindo um novo registro, por padrão na funcao ele vai pesquisar por id_registro = 0 no select, ou seja, ele vai pesquisar um num_doc em qualquer registro que seja id_registro <> de 0 ....

Agora, quando estiver em modo de edição, você passa como parametro, o id_registro para a função, dai ele vai pesquisar o num_doc no select em todos os registros menos no registro que estiver sendo editado... entende?

 

Então, no clique do botao novo você faz assim:

userExists(num_docu);

e no botao editar:

userExists(num_docu, qryRegistrosID_REGISTRO.Value);
Entendeu? Qualquer coisa me fala...

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.