jeanef28 0 Denunciar post Postado Dezembro 22, 2009 quero fazer uma pesquisa ... digito uma codigo de um funcionarios no dbedit ou edit e trago o nome funcionario em outro label... não quero utilizar botao de pesquisa.. no proprio campo de edit... como faço isso se alguma puder me ajudar... Compartilhar este post Link para o post Compartilhar em outros sites
Raficcha 1 Denunciar post Postado Dezembro 22, 2009 tente utilizar "Select * from tabela where nome linke %'+EdPesquisa.text+'%'. Não conheço muito banco de dados com delphi, logo alguem vem e t diz algo mais consistente. Mas é por aí Compartilhar este post Link para o post Compartilhar em outros sites
Rodrigo Miss 1 Denunciar post Postado Dezembro 23, 2009 Bom dia ... Haja vista que tu não quer usar botão, então coloque o código abaixo no evento onChange do componente Edit ou DBEdit: if Trim(txtCodigoFunc.Text) <> '' then begin with ADOQuery1 do begin Close; SQ.Clear; SQL.Add('SELECT'); SQL.Add(' *'); SQL.Add('FROM'); SQL.Add(' FUNCIONARIOS'); SQL.Add('WHERE'); SQL.Add(' ID_FUNCIONARIO = ' + txtCodigoFunc.Text); Open; end; lblNomeFunc.Caption := ADOQuery1.FieldByName('NOMEFUNCIONARIO').Text; end; Compartilhar este post Link para o post Compartilhar em outros sites
jeanef28 0 Denunciar post Postado Dezembro 23, 2009 Obrigada rodrigo... é isso mesmo ;;;; so uma coisa ele da um erro !!!!! conversion failed when converting the varchar value '44x 'to data type int. se eu digitar uma matricula que existe ex...201 ele da esse erro se eu colocar a matricula que existe ex:20 ele traz o nome do funcionario.... sabe me dizer porque da esse erro.... outra coisa tambem.. se puder me ajudar quero pegar esse codigo que pesquisei quero gravar em outra adoQuery... Compartilhar este post Link para o post Compartilhar em outros sites
Rodrigo Miss 1 Denunciar post Postado Dezembro 26, 2009 Obrigada rodrigo... é isso mesmo ;;;; so uma coisa ele da um erro !!!!! conversion failed when converting the varchar value '44x 'to data type int. se eu digitar uma matricula que existe ex...201 ele da esse erro se eu colocar a matricula que existe ex:20 ele traz o nome do funcionario.... sabe me dizer porque da esse erro.... outra coisa tambem.. se puder me ajudar quero pegar esse codigo que pesquisei quero gravar em outra adoQuery... Oie jeanef28 ... rode sua aplicação passo a passo (F7 ou F8) e veja/poste aqui neste tópico a linha em que ocorre este erro, pois este erro é um erro de tentativa de conversão de tipo de dados para o tipo inteiro. Compartilhar este post Link para o post Compartilhar em outros sites
Chrnos 30 Denunciar post Postado Dezembro 29, 2009 jeane, pela própria mensagem já dá para ver o erro ocorrido.... você definiu que sua query deve receber um valor inteiro, mas digitou o valor '44x ', ou seja, em vez de enviar um número você enviou uma string, dai o erro. []'s Compartilhar este post Link para o post Compartilhar em outros sites
jeanef28 0 Denunciar post Postado Janeiro 4, 2010 esse é o meu primeiro topico.... Como o Rodrigo postou e fiz assim ve se esta correto. Estou em duvida criei um DM e coloque e criei essa query ADOQ_FUNCIONARIOS, no SQL eu coloco algum comando select ou deixo em branco... Esse codigo que pesquisei quero gravar em outra Query: ADOQ_Entrega. procedure Tfrm_ConEPI.edtNumFuncExit(Sender: TObject); begin if Trim(edtNumFunc.Text) <> '' then begin dm.ADOQ_FUNCIONARIOS.Close; dm.ADOQ_FUNCIONARIOS.SQL.Clear; dm.ADOQ_FUNCIONARIOS.SQL.Add('SELECT'); dm.ADOQ_FUNCIONARIOS.SQL.Add(' nome'); dm.ADOQ_FUNCIONARIOS.SQL.Add('FROM'); dm.ADOQ_FUNCIONARIOS.SQL.Add(' FUNCIONARIOS'); dm.ADOQ_FUNCIONARIOS.SQL.Add('WHERE'); dm.ADOQ_FUNCIONARIOS.SQL.Add(' NumMatr = '+ edtNumFunc.text); dm.ADOQ_FUNCIONARIOS.Open; end; lblNome.Caption := DM.ADOQ_FUNCIONARIOS.FieldByName('NOME').Text; end; end. Compartilhar este post Link para o post Compartilhar em outros sites
Chrnos 30 Denunciar post Postado Janeiro 4, 2010 Olá jeane, sem problemas em ser seu primeiro tópico, estamos aqui para ajudar no que for possível... pelo que li do seu código, ele está correto, mas da forma que está ele irá carregar o label corretamente apenas se o edtNumFunc.Text tiver sido preenchido com números... contudo, da forma que está, se você não estiver fazendo uma validação no evento onkeypress do edit, se o usuário digitar algum valor não numérico e mandar executar, a consulta vai dar erro... outra coisa: por ADD do sql você pode mandar comandos de até 255 caracteres, isto é, você poderia montar a mesma query desta forma para poupar linhas de código: procedure Tfrm_ConEPI.edtNumFuncExit(Sender: TObject); begin //Se quiser carregar apenas dados quando fizer a pesquisa, limpe o valor do label aqui lblNome.Caption := EmptyStr; if Trim(edtNumFunc.Text) <> '' then begin dm.ADOQ_FUNCIONARIOS.Close; dm.ADOQ_FUNCIONARIOS.SQL.Clear; dm.ADOQ_FUNCIONARIOS.SQL.Add('SELECT nome FROM FUNCIONARIOS WHERE NumMatr = '+ edtNumFunc.text); dm.ADOQ_FUNCIONARIOS.Open; //Se quiser carregar apenas dados quando fizer a pesquisa, coloque a carga do label aqui lblNome.Caption := DM.ADOQ_FUNCIONARIOS.FieldByName('NOME').Text; end; end; end. []'s Compartilhar este post Link para o post Compartilhar em outros sites
jeanef28 0 Denunciar post Postado Janeiro 4, 2010 Acho que entendi... Verifiquei o tipo do NumMatricula... e tipo char(6) e o nome varchar 50 como faço para o tipo de char... Compartilhar este post Link para o post Compartilhar em outros sites
wllf 2 Denunciar post Postado Janeiro 4, 2010 Jean o CHRNOS (UM CARA QUE CONHECE MUITO DO DELPHI), quis dizer que do modo como você montou o seu select: "WHERE NumMatr = '+ edtNumFunc.text" Só aceita números: "WHERE NumMatr = '+ QuotedtStr(edtNumFunc.text)" Aceita Strings(O campo 'NumMatr' tem que aceitar Strings) "WHERE NumMatr like '+ QuotedtStr(edtNumFunc.text)" Aceita números e Strings A partir daí você analisa qual delas serve !!! Compartilhar este post Link para o post Compartilhar em outros sites
Chrnos 30 Denunciar post Postado Janeiro 4, 2010 Jeane, complementando a resposta do colega acima, quando se trabalha com campos que permitem gravar dados alfanuméricos (letras e números), sempre deve-se passar para a query de pesquisa o valor entre aspas... para o seu select funcionar, neste caso, basta acrescentar o comando QuotedStr, que ele irá acrescentar as aspas necessárias, como citado pelo wllf no post acima. Agora, se for usar o like para fazer consultas por parte do campo (usando o %), o seu QuotedStr seria algo assim: Query.Sql.Add('Select * from tabela where campo like ' + QuotedStr('%' + edit.text + '%')); ou Query.Sql.Add('Select * from tabela where campo like ' + QuotedStr('%' + edit.text)); ou Query.Sql.Add('Select * from tabela where campo like ' + QuotedStr(edit.text + '%')); []'s Compartilhar este post Link para o post Compartilhar em outros sites
jeanef28 0 Denunciar post Postado Janeiro 5, 2010 Funcionou pessoal muito obrigada... So uma coisa pode me ajudar esse codigo que pesquisei queria gravar em outra query... eu coloquei um edit como faço para gravar so o codigo, o nome não quero gravar.... obrida Compartilhar este post Link para o post Compartilhar em outros sites
Chrnos 30 Denunciar post Postado Janeiro 5, 2010 Sem problemas Jeane, estamos aqui para ajudar... mas poderia explicar melhor qual é o problema que tem agora? Detalhar mais o problema? []'s Compartilhar este post Link para o post Compartilhar em outros sites
jeanef28 0 Denunciar post Postado Janeiro 7, 2010 vamos la!!! vou explicar.. meu codigo está assim funcionando. procedure Tfrm_ConEPI.edtNumFuncExit(Sender: TObject); begin lblNome.Caption := EmptyStr; if Trim(edtNumFunc.Text) <> '' then begin dm.ADOQ_FUNCIONARIOS.Close; dm.ADOQ_FUNCIONARIOS.SQL.Clear; dm.ADOQ_FUNCIONARIOS.SQL.Add('SELECT nome FROM FUNCIONARIOS WHERE nummatr like ' + QuotedStr('%' + edtNumFunc.text)); dm.ADOQ_FUNCIONARIOS.Open; lblNome.Caption := DM.ADOQ_FUNCIONARIOS.FieldByName('NOME').Text; end; end; Do jeito que ta o codigo, digito o matricula do funcionario no edit e aparece no label o nome desse funcionario. Aqui estou fazendo apenas uma pesquisa que qual a matricula do funcionario entao quero pegar esse pesquisa salvar em outra tabela ou seja uma query (DM.ADOQ_ENTREGA) so o numero do funcionario. o nome não quero salvar, pois não criei o campo para o nome so o matricula do funcionario. acho que é mais facil fazer no dbedit, mas não sei o comando. para so gravar a matricula do funcionario. Compartilhar este post Link para o post Compartilhar em outros sites
Chrnos 30 Denunciar post Postado Janeiro 12, 2010 Olá Jeane... desculpa a demora em postar, as coisas tão corridas por aqui... então, vamos as questões: 1°) No seu edit você terá um número de matrícula parcial, certo? A questão que fica é: se eu tiver N funcionários com o parcial da matrícula, como você vai escolher qual é a matrícula que lhe interessa realmente? Vai ficar digitando a matrícula até acertar qual o que deseja ou está usando algum componente visual (como o DBGrid) para exibir os dados da pesquisa? 2°) Essa gravação que quer fazer é simples... basta capturar com alguma variável a matrícula e usar outra TQuery para gravar a informação na tabela de destino... para tanto, terá que alterar sua sql de pesquisa para trazer também a matrícula no retorno (para capturar a mesma via código) ou simplesmente pegar o valor do edit para isso... ai depende de como está montada a sua rotina. []'s Compartilhar este post Link para o post Compartilhar em outros sites
jeanef28 0 Denunciar post Postado Janeiro 18, 2010 funcionou!!!Obrigada pessoal, me ajudou muito... obrigada mesmo... Compartilhar este post Link para o post Compartilhar em outros sites
SOMBRIO-SC 0 Denunciar post Postado Janeiro 22, 2010 Olá como faz para criar esse DM.Ado ?? Compartilhar este post Link para o post Compartilhar em outros sites