Ir para conteúdo

Chrnos

Members
  • Total de itens

    1546
  • Registro em

  • Última visita

  • Dias vencidos

    4

Tudo que Chrnos postou

  1. Chrnos

    SUBSTR com reverse

    Aparentemente ele está reclamando que está faltando algum parênteses a direita... se pegar o sql gerado antes de dar o open e rodar no banco ele está correto? não ficou algum parênteses órfão no sql?
  2. Chrnos

    SUBSTR com reverse

    Por default, o tamanho máximo de uma string passada por add é limitado a 255 caracteres consecutivos... tente assim... Form2.ADOQuery1.SQL.Add('select SUBSTR(fuvw.nomecompletofunc, 0, CHARINDEX('' '', fuvw.nomecompletofunc)'); Form2.ADOQuery1.SQL.Add(' + '' '' + REVERSE(SUBSTRING(REVERSE(fuvw.nomecompletofunc), 0, '); Form2.ADOQuery1.SQL.Add('CHARINDEX('' '',REVERSE(fuvw.nomecompletofunc)))) as '); Form2.ADOQuery1.SQL.Add('Nome,fuvw.nomecompletofunc,fuimg.imagem,fuvw.codfunc,fuvw.nomefunc,'); Form2.ADOQuery1.SQL.Add('fuvw.nomecompletofunc,fuvw.DESCFUNCAO,doct.cpfnumero,doct.rgnumero,'); Form2.ADOQuery1.SQL.Add('doct.ctpsnumero,func.dtnasctofunc'); Ps.: Não revisei se coloquei os cortes nos pontos corretos.... a idéia é quebrar o string gigante em menores de até 255 caracteres cada.
  3. Chrnos

    While

    Amigo, isso é questão de sql... você pode resolver facilmente usando o comando SUM.... veja o link a seguir como exemplo: http://www.w3schools.com/sql/sql_func_sum.asp No seu caso, o mais simples seria isto (considerando os campos informados no seu código) DM.ibPesqRecer.Close; DM.ibPesqRecer.SQL.Clear; DM.ibPesqRecer.SQL.Add('select nome, SUM(VLRDEV) as Total from RECER Group by nome'); DM.ibPesqRecer.SQL.Add('order by nome'); DM.ibPesqRecer.Open; Somente isso já irá lhe retornar a lista de nomes com os valores agrupados em um único registro somados.
  4. Chrnos

    Importar Txt Tamanho Fixo para MySQL

    Bom, pode ter N razões pra isso... uma é que não está fechando a sua query antes de tentar dar o execute, outra possibilidade é estar tentando gravar algo errado e estar dando algum erro... enfim, esse é o tipo de situação em que tem que se debugar o código linha a linha e simular a execução para ver se não é um erro de lógica na sua programação ou na montagem do sql que está fazendo isso ocorrer... de todo modo, fiz de cabeça uma adequação no seu código para ver se isto o ajuda. Obviamente, não o testei, até porque não tenho a estrutura da sua tabela e nem os arquivos que irá importar. procedure TFRM_PRINCIPAL.BT_PROCESSA_ARQUIVOClick(Sender: TObject); var Arquivo : TStringList; iRegistro : integer; codigo, descricao, dpto, oferta, preco : String; begin try try Arquivo := TStringList.Create; Arquivo.LoadFromFile( ED_URL_ARQUIVO.Text ); except showmessage('Erro durante a criação do TStringList de leitura do arquivo ' + ED_URL_ARQUIVO.Text); Exit; end; //Auxiliar que irá controlar o registro (linha) que está sendo lido do arquivo iRegistro := -1; while iRegistro < Arquivo.Count -1 do begin inc(iRegistro); codigo := Copy(Arquivo[iRegistro],3 ,9); descricao := Copy(Arquivo[iRegistro],19,68); dpto := Copy(Arquivo[iRegistro],1 ,2); preco := Copy(Arquivo[iRegistro],10,15); //Como está usando o with, não precisa passar novamente o DM_PRINCIPAL.SQLQ_IMPORTA_MGV //para acessar as propriedades do componente with DM_PRINCIPAL.SQLQ_IMPORTA_MGV do begin if Active then Close; SQL.Clear; SQL.Add('insert into produtos(prod_codigo,prod_descricao,prod_dpto,prod_preco) '); //Substitui o #34 por quotedStr por terem a mesma função, mas não testei... teria que ver se montou //o sql corretamente. Outra coisa, todos os campos que está gravando são realmente strings na tabela //destino pra estar enviando entre aspas? SQL.Add('values (' + QuotedStr(codigo) + ',' + QuotedStr(descricao) + ',' + QuotedStr(dpto)+','+ QuotedStr(preco)+')'); //O código abaixo serve apenas pra ver a sql gerada durante o debug //Showmessage(SQL.Text); try ExecSQL; except on E : Exception do ShowMessage(E.ClassName + ' Ocorreu um erro durante a operação: '+ E.Message); end; end;//With DM_PRINCIPAL.SQLQ_IMPORTA_MGV end;//While iRegistro < Arquivo.Count -1 finally FreeAndNil(Arquivo); end; end;
  5. Chrnos

    Boteco iMasters

    Cara, garanto que se soubesse como anda a minha vida concordaria.... manda 4 garrafas de tequila de uma vez pra cá!
  6. Chrnos

    cadastrar hora do ponto dependendo do horário.

    Acredito que seria o melhor, honeraria menos o banco fazer 1 registro só ao invés de quatro.... suponho que sua chave primária seja os campos codigofun_pon, data_pon nesta tabela certo? Se for, antes de decidir se fará um insert/update, você poderia ver se há algum registro com essa combinaçaõ no BD para a partir dai definir se fará um insert ou update na tabela. Depois, é só pegar a lógica que já montou no insert do valor dos campos e por no update saca?
  7. Chrnos

    cadastrar hora do ponto dependendo do horário.

    Ah, agora está um pouco mais claro... A questão aqui não é dar uma mensagem, mas determinar pelo horário o campo que será gravado e se a operação é um insert ou update, a menos que você esteja pensando em ter 4 entradas por dia pra cada funcionário... poderia dar um detalhamento melhor de como pretende controlar isto? Se será um registro com 4 marcações de ponto por dia ou se irá fazer para um dia 4 ou mais inserts (um pra cada marcação de ponto)?
  8. Chrnos

    Boteco iMasters

    Bora virar uma garrafa pra aquecer a manhã.... porque o dia anda um porre kkkkkk
  9. Chrnos

    cadastrar hora do ponto dependendo do horário.

    Acho que entendi... as mensagens seriam estas abaixo? Bom dia São 8:00. Seu Ponto foi registrado com sucesso. Bom Almoço 12:00 Seu Ponto foi registrado com sucesso. Boa Tarde 13:30. Seu Ponto foi registrado com sucesso. Bom Descanso. Seu Ponto foi registrado com sucesso. A questão é: esta mensagem será gravada no banco ou só exibida para o usuário na tela/impressa? Na imagem que postou isso não está claro... agora, supondo que fosse para gerar um showmessage por exemplo, bastaria usar um controle com if neste caso. procedure TForm1.Button1Click(Sender: TObject); var Hora : TDateTime; begin //Atribui a hora atual a variável auxiliar de controle Hora := Time; //Testa o range do horário pra definir a mensagem if (Hora >= StrToTime('00:00:00')) and (Hora <= StrToTime('11:59:59')) then Showmessage('Bom dia. São ' + TimeToStr(Hora) + '. Seu Ponto foi registrado com sucesso!') else if (Hora >= StrToTime('12:00:00')) and (Hora <= StrToTime('13:29:59')) then Showmessage('Bom almoço. São ' + TimeToStr(Hora) + '. Seu Ponto foi registrado com sucesso!') else if (Hora >= StrToTime('13:30:00')) and (Hora <= StrToTime('18:00:00')) then Showmessage('Boa tarde. São ' + TimeToStr(Hora) + '. Seu Ponto foi registrado com sucesso!') else Showmessage('Bom descanso. São ' + TimeToStr(Hora) + '. Seu Ponto foi registrado com sucesso!'); end; Se for gravar a mensagem no banco, o if acima teria que ser usado no ponto onde irá passar o valor do parâmetro... ou poderia por a mensagem numa variável auxiliar, montar ela antes de inserir e depois apenas passar ela ao parâmetro na gravação, ai você escolhe.
  10. Chrnos

    cadastrar hora do ponto dependendo do horário.

    Se entendi correto, você quer substituir suas variáveis dataAtual e horaAtual pela data corrente e hora corrente certo? Você pode usar os comandos date, now ou time para isso... dê uma olhada neste link: http://www.delphibasics.co.uk/RTL.asp?Name=Date
  11. Chrnos

    Comando pos

    Para fazer isso, terá que fazer um tratamento usando o evento beforeprint (considerando que seja quickreport). Você pode usar a função abaixo pra isso. Function Explode(Texto, Separador : String) : TStrings; var strItem : String; ListaAuxUTILS : TStrings; NumCaracteres, TamanhoSeparador, I : Integer; Begin Texto := StringReplace(Texto, #9, ' ', [rfReplaceAll]); ListaAuxUTILS := TStringList.Create; strItem := ''; NumCaracteres := Length(Texto); TamanhoSeparador := Length(Separador); I := 1; While I <= NumCaracteres Do Begin If (Copy(Texto,I,TamanhoSeparador) = Separador) or (I = NumCaracteres) Then Begin if (I = NumCaracteres) then strItem := strItem + Texto[I]; ListaAuxUTILS.Add(trim(strItem)); strItem := ''; I := I + (TamanhoSeparador-1); end Else strItem := strItem + Texto[I]; I := I + 1; End; Explode := ListaAuxUTILS; end; A função explode irá separar seus dados conforme a regra que usar para separar os campos.... digamos que vá usar isso pra separar pelo espaço em branco, você faria assim: var ArrayAux : TStrings; begin ArrayAux := Explode('MARCELO A DA SILVA B', ' '); //Pegando o primeiro valor da string passada na entrada ShowMessage(ArrayAux[0]); end; Ai tudo o que precisa fazer é programar no seu evento beforeprint do componente para chamar a função enviando o dado recebido na entrada e depois atribuir ao retorno desta função a informação desejada.
  12. Chrnos

    Acesso a 2 forms simultaneamente

    Ah sim, mas se for usar o form.show terá que ter cuidado para não deixar o usuário tentar criar outro formulário acidentalmente... seria bom incluir um teste para ver se o formulário não foi criado anteriormente... algo do tipo abaixo (se estou lembrando do comando corretamente)... procedure TForm1.SpeedButton1Click(Sender: TObject); begin if not Assigned(Form5) then Form5:=TForm5.Create(self); Form5.Show; end;
  13. Chrnos

    Imprimir somente o registro atual

    O QuickReport imprime tudo o que mandar pra ele, isso é, se sua query estiver mandando 1 registro, imprime um registro, se forem N registros, imprime N registros certo? Logo, o que tem que ver é a forma como está mandando os dados pra serem impressos (se está enviando apenas um registro ou vários). O que tem que garantir é que o QuickReport esteja recebendo apenas o registro que quer imprimir entende? Não sei se imprime a partir de uma query ou uma tabela, mas tem que por na sua regra um tratamento para só mandar imprimir o registro corrente... o QuickReport não tem como controlar isso.
  14. Chrnos

    Acesso a 2 forms simultaneamente

    Creio que o que precisa é desenvolver uma aplicação MDI... dê uma lida neste link, teste o exemplo e veja se não é o que precisa: http://delphi.about.com/od/beginners/l/aa031103a.htm
  15. Chrnos

    WinExec não abre executavel

    Você mudou algo no ambiente? O antivirus por exemplo? Debugando o código, ele está executando corretamente sem erros? Permissão de usuário talvez? Um comando não deixa de funcionar "do nada", desde a última vez que usou sem erros e agora, o que mudou no ambiente/máquina de uso?
  16. Chrnos

    Inserir Tags em varias linhas de um texto de um TMemo

    Isso é bem simples... basta criar um laço de 0 até o total de linhas do memo -1 e depois inserir a tag.. veja como exemplo o código abaixo. procedure TForm1.Button1Click(Sender: TObject); var iLinha : integer; begin For iLinha := 0 to Memo1.Lines.Count -1 do Memo1.Lines[iLinha] := Memo1.Lines[iLinha] + '<br />'; end;
  17. Chrnos

    Permitindo carregar JPG no Quick Report

    Se você quer atualizar a imagem conforme o registro lido de um campo armazenado na tabela, o tratamento para carregar a imagem correspondente deve estar no beforeprint da banda detail, como discutido por exemplo neste link: http://www.activedelphi.com.br/forum/viewtopic.php?p=25863&sid=e017b0afe334cecc72d25c1ddc7303dc
  18. Chrnos

    Boteco iMasters

    Trabalha escravo..... alguém tem que sofrer kkkkkk E viva o caos da minha vida lol... bora beber tequila!!
  19. Chrnos

    Bloqueio desinstalar APP SERVICE

    Usuários administradores do sistema devem ter permissão de desinstalar qualquer aplicativo... porque quer bloquear um usuário com permissão pra isso? Como controlaria que usuários podem desinstalar o programa se negar ao principal usuário isto? Pergunta muito estranha esta sua.
  20. Chrnos

    WinExec não abre executavel

    O executável "main.exe" está registrado no windows ou na mesma pasta onde é executado o comando winexec? Acho que está faltando algo no seu código, como o caminho para o executável.... de todo modo, segue alguns links que podem ajudar.... http://www.scriptbrasil.com.br/forum/topic/152387-resolvidoinconpatible-types-no-winexec/ http://www.devmedia.com.br/usando-shellexecute-para-executar-aplicativos-externos/613 http://www.festra.com/eng/mtut01.htm http://www.devmedia.com.br/forum/comando-winexec-no-delphi-7/299175 https://br.answers.yahoo.com/question/index?qid=20070808170001AAoEOII
  21. Chrnos

    Boteco iMasters

    E eu lá vou querer pagar bebida pra marmanjo? A idéia é deixá-la mais alegre mesmo kkkkkkkkk Apesar que acho que nem precisa da tequila pra isso kkkkkkkkk
  22. Chrnos

    Boteco iMasters

    E quando é que aqui se falou algo sério? Kkkkkkkkkkkkkkkkkkkkkkk Manda uma tequila pra Panda-chan se animar também \o/ rsrsrs
  23. Chrnos

    Filtrando no delphi x oracle

    Duas coisas... primeiro, certifique-se que seu código está usando o adoquery correto... vejo que no código que postou uma hora está usando o adoquery do form2 e depois aparentemente um adoquery local... por boas práticas de programação, recomenda-se renomear os componentes pra algo que faça sentido e evite confusão na hora de codificar, é uma dica.... outra coisa: os parâmetros de um adoquery tem que ser criados manualmente, conforme o exemplo mostrado neste link: http://docwiki.embarcadero.com/CodeExamples/XE6/en/ADOQuery_%28Delphi%29 Ps.: Uma dica que vi neste link (http://edn.embarcadero.com/article/20420), pode-se evitar o passo de criar parâmetros fazendo o seguinte (esta eu não lembro de ter usado): Form2.ADOQuery1.SQL.Add('where codigoempresa = 3 and codigofl = 2 and CODINTFUNC = codintfunc (+) and codfuncao = ativ.codfuncao and codintfunc = codintfunc and codintfunc = codintfunc and codfunc = :MAT'); Form2.ADOQuery1.Parameters.ParseSQL(Form2.ADOQuery1.SQL.Text, True); Form2.ADOQuery1.Parameters.ParamByName('MAT').Value := StrToInt(edtmatricula.Text);
  24. Chrnos

    Boteco iMasters

    Deve ser, isto aqui virou um deserto... tem até bola de feno passando pelo meio do boteco já kkkkkk #Vira outra garrafa de whisky e joga os pés sobre a mesa#
  25. Chrnos

    Componente Imagem Delphi7x Oracle 10

    Compartilha depois a solução que conseguir com o pessoal marvazoler... poderá ajudar a outros assim no futuro. :coolio:
×

Informação importante

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