
Micheus
Veteranos-
Total de itens
3.189 -
Registro em
-
Última visita
Tudo que Micheus postou
-
:huh:, ele sozinho não vai fazer nada.voce tem que programar o que ele deve fazer, neste caso, atribuir os valores do campo selecionado na sua busca e atribuir para os edit's no seu formulário - não seria isto? :unsure:
-
Ok. Mas, mesmo assim, você não usaria uma group para as parcelas. Na pior das hipóteses, eu usaria uma detail. Nesta situação, vou supor que você está com os registros posicionados apenas no que você quer: Cliente no atual; Venda na atual (já que um cliente pode ter várias vendas); Com isso, o dataset do seu Quickrep seria parcelas. você poderia utilizar uma groupband para colocar estas informações e uma detail para desenhar uma linha com qrlabels para montar as 3 colunas. Porém, ainda assim, você controlaria na mão o avanço do dataset, via OnNeedData, só que agora este seria o evento do QuickRep - não mais da sub-detail que citei no outro post. Eu sugiro que você tente montar o relatório normalmente - sem esta parte do OnNeedData que falei e utilizando QRDBEdit para mostrar uma coluna de dados das parcelas. Como resultado, você terá várias linhas - uma para cada parcela. Quando isto estiver funcionando, então fazemos a alteração necessária para colunar as parcelas, ok?! Abraços.
-
me parece estranho o uso deste tipo de banda. como você mesmo colocou na ordem, me parece que o mais provável é que as parcelas fossem um sub-detalhe da venda.Vejamos como o relatório deve parecer: Cliente 1 // ** Quebra por cliente Venda 1 // ## Quebra por venda parcela 1 | parcela 2 | parcela 3 // @@ aqui um sub-detail ou detail. Venda 2 parcela 1 | parcela 2 Cliente 2 Venda 1 parcela 1 | parcela 2 | parcela 3 parcela 4 | parcela 5 | parcela 6 Cliente 3 Venda 1 parcela 1 | parcela 2 | parcela 3 parcela 4a sequencia de bandas vai depender da construção que você usar. Eu poderia fazer isto de uns tres modos (pelo menos) combinando componentes table e query, e conforme a combinação dá para fazer uma construção. a opçao mais simples, talvez, seja utilizar uma detail para clientes, uma sub-detail para vendas, e outra sub-detail para as parcelas; Cada dataset fica ligado ao outro via mastersource ou datasource, conforme componente (table ou query) a parte colunada, é realmente um problema no Quickreport - só gerenciando na mão mesmo. Mas, não é nada complicado.sendo esta banda sub-detail, você pode gerenciar até quando ela é impressa, via evento OnNeedData, assim, neste evento você processa cada linha do dataset (uma coluna no relatório) de modo que faria um while para processar no máximo 3 items (são as colunas), quando sai do while, se houverem mais parcelas, você vai atribuir True ao parâmetro MoreData de modo que esta banda será novamente processada pelo quickreport. Deste modo, você processará todas as parcelas, mas avançará uma linha (desta sub-detail) a cada 3 parcelas movidas para os labels que você deverá posicionar na banda para montar as colunas. É mais ou menos isto. Veja se consegui avançar.
-
Consulta Com Dblookupcombobox Mostrando Dados Em Dbgrid
pergunta respondeu ao antonio.ajsl de Micheus em Delphi, Kylix
Os dados mostrados no DBGrid, vem de uma ZQuery ou ZTable?A idéia é que você tem que filtrar o dataset ligado ao DBGrid, em função do campo de relacionamento (um código, um nome,...) do dataset que você vinculou ao DBLookupCombobox. Assim, a cada mudança na lista, ocorrerá uma mudança no grid. Este filtro, pode ser utilizando a propriedade Filter, DataSource (se for query), MasterSource (se for table), temos n possibilidades, depende do que você está utilizando. -
[resolvido] Somar Campo Timer (horas Extras) Paradox
pergunta respondeu ao Eder de Micheus em Delphi, Kylix
Nem me refiria a mudar a query porque isto dependeria de ser ou não viável ao seu caso - coloquei mais a título de demonstrar que seria possível. O erro a que você se refere é decorrente do fato de que, ao utilizar GROUP BY, todas as colunas que não seja função de agregação devem ser repetidas nesta cláusula. Assim, você teria que utilizar deste modo:SELECT M.NOME, M.CODMOT, V.HE_DIURNA, V.DATA_SAIDA, V.CODLAN, A.CODIGO, A.CODMOT, sum(extract(hour from HE_DIURNA)+(extract(minute from HE_DIURNA)/60)+(extract(second from HE_DIURNA)/3600)) as Total_Horas FROM MOTORIS M, VIAGEM V, AJUSTE A where (A.codigo = V.codlan) and (A.codmot = M.codmot) group by M.NOME, M.CODMOT, V.HE_DIURNA, V.DATA_SAIDA, V.CODLAN, A.CODIGO, A.CODMOT order by motoris.nome Voce diria que a banda QRGroup1 é justamente a que faz a quebra de funcionário? Se for, parece razoável que você obtenha apenas o total do último funcionário já que no BeforePrint deste group você zera a variável DIURNA_SUMARY!!! Vamos repassar qual deveria ser o conceito envolvido nesta questão (controlar totalização "na mão"): - variável para controlar total por grupo (Funcionario) e total geral (sumario); - o sumário representa uma total geral, então você inicializa a variável antes de começar a impressão, ou seja, no beforeprint do relatório(quickrep); - o total por grupo, deve ser inicializado ao iniciar cada grupo, ou seja, ao imprimir o cabeçalho do grupo (groupheader); - ao ser impresso cada item (detail), acumulamos o valor na variável do grupo (eventualmente na do sumario - questão de opção); - ao ser impresso o rodapé do grupo (footergroup) apresentamos o total do grupo e somamos seu valor ao totalizador geral (sumario - e esta é a opção que prefiro); - ao ser impresso o sumário (sumary) apresentamos o valor no tatalizador geral. Itens que estão bem explícitos no exemplo: TRelHoras = class(TForm) : private InRelAnalitico :Boolean; QtdHorasGroup, QtdHorasSumary :Double; ... : procedure TRelHoras.QuickRep1BeforePrint(Sender: TQuickRep; var PrintReport: Boolean); begin // zera para todo o início de relatório QtdHorasSumary := 0; end; procedure TRelHoras.QRGroupHeaderBeforePrint(Sender: TQRCustomBand; var PrintBand: Boolean); begin PrintBand := InRelAnalitico; // só imprime no modo analítico, mas faz o cálculo ChildBand1.Enabled := PrintBand; // Child do GroupFooter - cabeçalho "Data e H. Extra" // zera para cada grupo de empregados QtdHorasGroup := 0; end; procedure TRelHoras.QRBand1BeforePrint(Sender: TQRCustomBand; var PrintBand: Boolean); begin PrintBand := InRelAnalitico; // só imprime no modo analítico, mas faz o cálculo // totaliza por grupo funcionário QtdHorasGroup := QtdHorasGroup +QryTotalHorasTotal_Horas.Value; QRLabel2.Caption := FullTimeToStr(QryTotalHorasTotal_Horas.Value/24); // divide por 24 p/ converter em TTime end; procedure TRelHoras.QRGroupFooterBeforePrint(Sender: TQRCustomBand; var PrintBand: Boolean); begin // acrescenta qtd do usuário a qtd do sumário (geral) QtdHorasSumary := QtdHorasSumary +QtdHorasGroup; QRLabel4.Caption := FullTimeToStr(QtdHorasGroup/24); // divide por 24 p/ converter em TTime end; procedure TRelHoras.QRBand3BeforePrint(Sender: TQRCustomBand; var PrintBand: Boolean); begin QRLabel5.Caption := FullTimeToStr(QtdHorasSumary/24); // divide por 24 p/ converter em TTime end; Abraços -
Bom retorno José :D .
-
[resolvido] Somar Campo Timer (horas Extras) Paradox
pergunta respondeu ao Eder de Micheus em Delphi, Kylix
Então resolvi tentar também fazer...só que o resultado na bandaSumary da o valor total do ultimo funcionario...e NÃO DA O VALOR TOTAL DE HORAS DO RELATORIO. fiz como você mencionou coloquei uma outra variavel......e fiz igualzinho ao Total de cada funcionario..só que ao invés de colocar este codigo abaixo na GroupFooter coloquei na QRBand1BeforePrint da SUMARY... QRLABEL2.CAPTION:=(seg_hora(HESUMARY)); se não der......vou ter que abandonar este modelo e caminhar para o seu.......só que eu queria terminar este pra não ficar no meio do caminho entende....?? ai na semana quem vem vou entrar de cara no seu modelo..achei também interessante pois ele é dois em um. Eder, diante deste questionamento eu só tenho uma pergunta: Voce já olhou o exemplo que eu lhe passei? Acho que sei a resposta: Não! Tá lá é só olhar, assim vou achar que perdi meu tempo à toa <_< -
que tipo de banda seria esta última? isto significa que terá no máximo 3 colunas? E o número de linhas será como este exemplo (2) ou poderá ser variável?
-
[resolvido] Somar Campo Timer (horas Extras) Paradox
pergunta respondeu ao Eder de Micheus em Delphi, Kylix
Tenta baixar o link do 4share, o nome do arquivo é Relatorio Horas.zip Se não conseguir ainda assim, dê um retorno - estarei por aqui mais um tempinho... -
Programa Para Backup's C/ Interbase
pergunta respondeu ao Cleverson Honório Gouvêa de Micheus em Delphi, Kylix
Faz o seguinte:1ª opção) - Na opção Help do Delphi, veja se você tem a opção Windows SDK, se tiver acesse; - Na guia Indice, digite File Functions e tecle enter - Na caixa que aparece, selecione File Functions (Win32 Programer's Reference). Pronto, agora você vai encontrar todas as funções da API do Windows relacionadas a arquivos. 2ª Opção) - Na opção Help do Delphi, acesse Delphi Help; - Na guia Indice, digite File Management Routines e tecle enter Agora, você terá uma lista de todas as rotinas relacionadas a arquivos implementadas na SysUtils. E esta é a melhor: para cada função você vai encontra exemplo em Delphi e C++. ;) Após ver qual delas você quer explorar, você pode fazer uma busca aqui no site, porque algumas aparecem aqui. Se ainda tiver dúvidas, faça suas perguntas objetivas aqui no forum. Abraços -
Fernanda, você quer algo como o que o Microsoft Access tem certo? Que dê para montar um DBGrid bem escabroso como esse abaixo: Não conheço um componente que tenha este recurso (pode até existir). Uma implementação deste tipo (tirada do IBExpert) seria mais fácil, definindo a propriedade ButtonStyle=cbsEllipsis da coluna do DBGrid e utilizando o evento OnEditButtonClick do DBGrid, porém não é bem o que você quer: Abraços
-
Isto é em função do erro, que está ocorrendo justamente quando você tentou gravar. Qual o tipo de dados que você utilizou para o campo foto? Deveria ser um Blob. No mySql, tem vários tipos de blob, dependendo do tipo que você utilizou e do tamanho da imagem (que sendo bitmap, pode ser grande), imagino que possa ocorrer esta mensagem. Veja este post sobre os blob's e sua capacidade no MySQL.
-
Já experimentou utilizar um dos componentes da paleta de componentes Web? Acho que tem algum que você possa utilizar, passando a url para ser mostrada nele.
-
então a dica pode ser: crie um "protocolo" em que você indica o nº da câmera e o frame (imagem) no formato JPG.No processo de captura, em alguns componentes você pode ter um evento relacionado a captura do Frame (é uma implementação da callback CallbackOnFrame, que é chamada para cada frame capturado), o frame lá passado como parâmetro deverá ser convertido antes do envio. Se você manjar inglês, dá uma espiada neste post na Expert Exchange.
-
Recife, se entendi direito este quadro é um resumo a ser mostrado numa banda Sumary. É isto? A modalidade que você utiliza como referência para mostrar ou não o quadro está em uma banda que você habilita ou desabilita, certo?
-
Em termos de macro, para fazer isto que você fala, bastaria:Me.Worksheets.Add Me.ActiveSheet.Name = "Teste1" Me.Worksheets.Add Me.ActiveSheet.Name = "Teste2" então veja se você consegue implementar algo como:planilha:= CreateoleObject('Excel.Application'); planilha.Worksheets.Add; planilha.ActiveSheet.Name = "Teste2"; ...
-
[resolvido] Somar Campo Timer (horas Extras) Paradox
pergunta respondeu ao Eder de Micheus em Delphi, Kylix
então, a totalização na sumary vai cair na mesma situação da groupfooter. Para ter esta totalização, como a contabilização é feita na mão, você vai ter que ter outra variável em que acumulará os totais de cada funcionário e mover na mão para um QRLabel. Quanto aos outros itens que você não conseguiu implementar, vou ver o que posso fazer para que você entenda o que quiz dizer. ;) Eder, tente baixar o arquivo exemplo Relatorio Horas.zip, que fiz utilizando das sugestões que havia citado.- Realmente aquela consulta SQL para somar horas (post#2) não estava 100% certa, a quantidade retornada não estava na unidade adequada. Ajustei ela e temos um double como resultado, onde na parte inteira está o nº de Horas e na fracionária os minutos no formato 1/n horas (décimos de hora). Ex. 0,25 horas equivale a 15minutos. - Também não dá para utilizar a alternativa de desabilitar as bandas (post#10) mas, a outra, a de definir PrintBand=False ou True conforme caso funciona sem problemas. - O relatório é bem simples, mas implementa o recurso 2 em 1 (Analítico ou Sintético). Achei que assim ficaria mais fácil de explicar. Espero que ajude. -
Programa Para Backup's C/ Interbase
pergunta respondeu ao Cleverson Honório Gouvêa de Micheus em Delphi, Kylix
Dá uma olhada neste link, tem algumas opções. Os que tem um ícone "pacotinho de presente" são free. Alguns tem código fonte (IBBackup é um deles). Só que você vai ter que se registrar para poder fazer o download - nada crítico. -
[resolvido] Somar Campo Timer (horas Extras) Paradox
pergunta respondeu ao Eder de Micheus em Delphi, Kylix
R.: Sim.Faça o seguinte, então, na sua banda groupfooter, coloque um QRDBEdit igualzinho o que está no groupheader (com o nome do funcionário) daí, conforme opção: 1) Sintético: - marque sua propriedade Enabled=True deste último QRDBEdit (na groupfooter) - defina a propriedade Enabled=False da banda groupheader; - defina a propriedade Enabled=False da banda detail; 2) Analítico: - marque sua propriedade Enabled=False deste último QRDBEdit (na groupfooter) - defina a propriedade Enabled=True da banda groupheader; - defina a propriedade Enabled=True da banda detail; Testa aí. Depois que funcionar você pode fazer algum tipo de ajuste estético. Se não funcionar deste jeito (não somar direito), ao invés de desbilitar as bandas, você deixa habilitadas e no beforeprint delas, você continua fazendo o cálculo e altera o valor do parâmetro PrintBand para False (no caso do sintético). Para isto, provavelmente você vai ter que criar uma variável no private do form para armazenar a opção: se analítico ou sintético. -
A pergunta óbvia é: você habilitou o timer? Se sim, houve falha ao executar a função. Você pode colocar um if para testar se a função executou ou não e daí ter uma mensagem de retorno. Pode ser uma questão de privilégios, talvez. Dá uma olhada neste post, pode lhe ajudar. Veja também a documentação sobre a função no msdn. Sobre o flag para desligar: EWX_POWEROFF: Shuts down the system and turns off the power. The system must support the power-off feature. The calling process must have the SE_SHUTDOWN_NAME privilege. For more information, see the following Remarks section. Abraços
-
Isto é improvável. Coloque a mensagem de erro na íntegra (original, não sua interpretação) para que possamos dar alguma opnião.
-
[resolvido] Somar Campo Timer (horas Extras) Paradox
pergunta respondeu ao Eder de Micheus em Delphi, Kylix
Eder, você quer utilizar o mesmo relatório para imprimir o Analítilo e o Resumo? Quanto a mexer com a altura da banda, até não seria necessária - você poderia apenas definir a banda detalhe com Enabled=False -
está desculpado. ;) Voce já deu uma espiada no tutorial do nosso colega Prog'amador: Criando Um Relatório no QuickReport Passo a Passo
-
Afirmação perigosa heim?!!! :P Valeu a dica sobre estes componentes. Eu estava mesmo precisando algo para criptografar umas strings, mas nas poucas consultas que fiz só tinha achado para tratar aquivos. Abraços
-
Voce pode seguir o último exemplo do Jonas: FindWindow Dê uma olhada nestes posts: - Função Findwindow (Significado de uma variável) - Preencher Campo De Outro Programa, Mais/menos igual o teclado virtual do XP - Executável Se Comunicando Com Outro, É possível?