Renanbg 1 Denunciar post Postado Outubro 23, 2008 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
Rodrigo Miss 1 Denunciar post Postado Outubro 23, 2008 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
Renanbg 1 Denunciar post Postado Outubro 23, 2008 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
Rodrigo Miss 1 Denunciar post Postado Outubro 23, 2008 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