Jump to content
Fórum Script Brasil

reunix

Membros
  • Posts

    26
  • Joined

  • Last visited

About reunix

reunix's Achievements

0

Reputation

  1. Legal Markus, vou analisar melhor com relação a performance pois preciso saber a cada solicitação, ou seja, a cada 1min, quanto tempo ele ta parado e se está parado no lugar autorizado, então fiz uma rotina simples que me diz isso, porém seguindo essa sua linha resolver o problema de ter q guardar as informações de total Parado e total Andando para relatórios mensais !! Obg!!
  2. Bom dia pessoal AJUDA por favor , há dois dias estou tentando acumular o tempo parado do veículo, através das informações que recebo do rastreador, é o seguinte... a cada 1min recebo as informações, uma delas é se o veiculo está parado 0 = parado , 1 = em movimento, entre as outras colunas tem uma data_hora (dd/mm/yy hh:mm), a cada recebimento e SE parado , preciso ficar acumulando o tempo parado do mesmo!! Certamente já pensei dessas maneiras, ao receber uma nova informação e SE parado, vou procurar na tabela de todas as informações, a último momento parado do mesmo veículo , daí subtraio a hora atual com a hora do momento anterior, exemplo , peguei a informação atual PARADO agora as 08:00, fui buscar na tabela a ultima informação PARADO, registrado anteriormente, que foi as 07:30, então entre eles tem um tempo de 30min, daí teoricamente ele ficou parado 30min. O problema é que essas informações vou solicitar a cada 1min e registrar tudo no banco, esse banco logo logo, vai crescer muito, um exemplo aqui é uma tabala do sistema antigo, tem mais de 16 milhões, imagina a cada 1min eu ter que fazer essa consulta, pegar o ultimo registro do determinado veiculo PARADO nessa tabela. Fora que ao atualiza a janela do sistema (WEB, Java , Spring), preciso fazer além desse filtro os outros.. Outra Maneira seria criar uma tabela separada, (Tempo_Parado), e registrar o momento (data_hora) , veiculo_id, daí a tabela fica um pouco menor que a do rastreio propriamente dito, então a cada 1min se o veiculo tiver parado, vou nessa tabela e procuro o momento da ultima parada dele, e vou acumulando. Mas tem um problema nessas teoria.. imagina só... o cara parou as 8:00 daí fui acumulando ate as 8:30, já tenho aí 30min parado, agora o cara começou a se movimentar... rodou uns 30min e o cara para novamente...... ou seja PAROU as 9:00, quando eu for pegar a última hora que ele parou o sistema vai trazer 08:30, e se eu for usar a técnica acima citado por mim, o sistema vai calcular assim , ultima parada as 8:30, pardou agora as 9:00, tempo parado MAIS 30min... espero que vocês tenham entendido...... Pensando um pouco agora, eu poderia quando filtrar as ultimas paradas, sempre pegar as duas 2 ultimas informações, e se a penúltima informação era EM MOVIMENTO, já sei que essa parada agora é uma parada START e não um continuação de PARADO, tipo... 07:30 Parado 08:00 Parado --------30min 08:10 Movimento 08:30 Parado se for pelo sistema, ele vai calcular 8:30 - 8:00 vai trazer 30min PARADO, que não é (nessa última situação ele não ficou parado 30min), na verdade ele parou agora o que pensei nesse caso foi, pegar esses 2 últimos, e caso o penúltimo seja EM MOVIMENTO, desconsiderar o calculo e somente gravar que parou, daí na próxima consulta PARADO as 8:50, o sistema vai me trazer 8:50 - 8:30 = 20min parado. Assim acredito que funcione, porém vai da trabalho e pesando no banco terá muitas consultas em tabelas grandes de volume!!! Qualquer dica de vocês pode ajudar a melhorar, deve ter algo mais simples!!! Agradeço desde já!!!! Bom dia!!!
  3. Olá pessoal procure algum lugar para hospedar meu sistema (site) com base de dados Postgre mas não encontro alguém conhece algum? Agradeço desde já!
  4. Olá pessoal procure algum lugar para hospedar meu sistema (site) com base de dados Postgre mas não encontro alguém conhece algum? Agradeço desde já!
  5. Bom dia pessoal, vejam bem que bruxaria... Gerei um TXT no padrão DANFE, para importar para dentro do Emissor Gratuito do Governo, o arquivo é gerado perfeitamente no servidor, mas quando forço o download do mesmo o o sistema por vontade própria adiciona um (.) ponto no fim do arquivo, e isso está dando uma dor de cabeça tremenda pois o Sistema Emissor logo acusa esse caracter como inválido. já tentei tudo, inclusive a rotina do download mas nada, continua vindo com o ponto. Quando gero o arquivo eu envio ele para um pasta específica do servidor antes de realizar o download, esse arquivo que fica na pasta do servidor não contem o caracter (.), ele é adicionado somente no arquivo que foi baixado no download. Abaixo segue o codigo que fiz para gerar o TXT pra importar DANFE e no fim do código tem o trecho do download. Espero ajudar também a quem procurava os detalhes do arquivo DANFE para importação!! Segue o código: <?php $controle = (int) $this->idPedido; $cnumnfe = $this->numdanfe; if ($this->TipoDanfe == 'venda'){ $cTipoDanfe = 'V'; }else{ $cTipoDanfe = 'S'; } $numped = str_pad($controle, 6, "0", STR_PAD_LEFT); $ccodempresa = $cddtemissao = date('Y-m-d'); $cddtsaida = date('Y-m-d'); $chorasaida = date('H:i').":00"; // caso seja uma impressao nova de nfe, capturo o proximo numero do danfe!!! if ($cnumnfe == '') { $cnumnfe = $this->DadosEmpresa['proximonfe']; } $cnomeempresa = $this->DadosEmpresa['nomefantasia']; $crazaosocial = $this->DadosEmpresa['razaosocial']; $cendereco = $this->DadosEmpresa['endereco']; $ctel1 = substr($this->DadosEmpresa['telefone1'],1,2).''.substr($this->DadosEmpresa['telefone1'],5,4).''.substr($this->DadosEmpresa['telefone1'],10,4); $ccep = substr($this->DadosEmpresa['cep'],0,5).''.substr($this->DadosEmpresa['cep'],6,3); $cuf = $this->DadosEmpresa['uf']; $ccidade = $this->DadosEmpresa['cidade']; $cbairro = $this->DadosEmpresa['bairro']; $cnumero = $this->DadosEmpresa['numero']; $ccnpjEmpresa = substr($this->DadosEmpresa['cnpj'],0,2).''.substr($this->DadosEmpresa['cnpj'],3,3).substr($this->DadosEmpresa['cnpj'],7,3).substr($this->DadosEmpresa['cnpj'],11,4).substr($this->DadosEmpresa['cnpj'],16,2); $codpais = $this->DadosEmpresa['codpais']; $nomepais = $this->DadosEmpresa['nomepais']; $cnae = $this->DadosEmpresa['cnae']; $cie = $this->DadosEmpresa['ie']; $cim = $this->DadosEmpresa['im']; $ccodmunicipio = $this->DadosEmpresa['codmunicipio']; $ccodpais = $this->DadosEmpresa['codpais']; $cnomepais = $this->DadosEmpresa['nomepais']; // dados do cliente e da venda!!! $clienteemail = $this->DadosVenda[0]['email']; $clientecpf = $this->DadosVenda[0]['cpf']; $clientecnpj = $this->DadosVenda[0]['cnpj']; $clientenome = $this->DadosVenda[0]['nomecliente']; $clienteendereco = $this->DadosVenda[0]['endereco']; $clientebairro = $this->DadosVenda[0]['bairro']; $clientecidade = $this->DadosVenda[0]['cidade']; $clienteuf = $this->DadosVenda[0]['uf']; $clientecep = substr($this->DadosVenda[0]['cep'],0,5).''.substr($this->DadosVenda[0]['cep'],6,3); $clienteinscest = ''; //; $this->DadosVenda[0]['ie']; $clientenum = $this->DadosVenda[0]['numero']; $clientetelefone = substr($this->DadosVenda[0]['telefone1'],1,2).''.substr($this->DadosVenda[0]['telefone1'],5,4).''.substr($this->DadosVenda[0]['telefone1'],10,4); $clientecomplemento = ''; $ccomplemento = ''; $clientecodmunicipio = '2611606'; // OLINDA!!! $csituacao = '1'; // 1=producao / 2=homologacao $ctipooperacao = '1'; // 1 = saida 0 = entrada $ccodmunicipio = '2611606'; $finalidadeEmissao = '1'; // 1=Nfe Normal; 2=Nfe Complementar; 3=Nfe de Ajuste $processoEmissao = '3'; // 1=emissao avulsa pelo fisco; 2=emissao avulsa pelo contribuinte com seu certificado difital atraves do site do fisco; 3= emissao pelo contriuinte com aplicativo fornecido pelo fisco; $tipoPagto = '0'; // 0= avista / 1=A prazo $versao = '2.2.2'; $fp = fopen("../public_html/nfe/DF".$cTipoDanfe.'_'.$numped.".txt", "w"); fwrite($fp,"NOTAFISCAL|1\r\n"); fwrite($fp,"A|2.00|NFe\r\n" ); fwrite($fp,'B|26||VENDA DE MERCADORIA|'.$tipoPagto.'|55|1|'.$cnumnfe.'|'.$cddtemissao.'|'.$cddtsaida."|".$chorasaida."|".$ctipooperacao."|".$ccodmunicipio."|1|1||".$csituacao."|".$finalidadeEmissao."|".$processoEmissao."|".$versao."|||\r\n" ); fwrite($fp,'C|'.$crazaosocial.'|'.$cnomeempresa.'|'.$cie.'||'.$cim.'|'.$cnae. "|1|\r\n" ); fwrite($fp,'C02|'.$ccnpjEmpresa. "|\r\n" ); fwrite($fp,'C05|'.$cendereco.'|'.$cnumero.'|'.$ccomplemento.'|'.$cbairro.'|'.$ccodmunicipio.'|'.$ccidade.'|'.$cuf.'|'.$ccep.'|'.$ccodpais.'|'.$cnomepais.'|'.$ctel1. "|\r\n" ); //------------CLIENTE!!! fwrite($fp,'E|'.$clientenome.'|'.$clienteinscest. "||".$clienteemail."|\r\n" ); // 049.750.544-42 // 01234567890123 if ( $clientecpf != '' ) { // cpf agora com os digitos $clientecpf = substr($clientecpf,0,3).''.substr($clientecpf,4,3).substr($clientecpf,8,3).substr($clientecpf,12,2); fwrite($fp,'E03|'.$clientecpf. "|\r\n" ); }else{ $clientecnpj = substr($clientecnpj,0,2).''.substr($clientecnpj,3,3).substr($clientecnpj,7,3).substr($clientecnpj,11,4).substr($clientecnpj,16,2); fwrite($fp,'E02|'.$clientecnpj. "|\r\n" ); // cnpj } fwrite($fp,'E05|'.$clienteendereco.'|'.$clientenum.'|'.$clientecomplemento.'|'.$clientebairro.'|'.$clientecodmunicipio.'|'.$clientecidade.'|'.$clienteuf.'|'.$clientecep.'|'.$ccodpais.'|'.$cnomepais.'|'.$clientetelefone."|"."\r\n" ); //------- IMPRESSÃO DOS ITENS!!! $cvalunitario = '0'; $csubtotal = '0'; $csubtotalcomdesconto = '0'; $nitem = 1; $nTotalG = 0; $nTotalIcms = 0; $nTotalPis = 0; $nTotalCofis = 0; $cTotalTotal = 0; $nTotalDesconto = 0; // itens do pedido! foreach ($this->DadosVendaPed as $DadosVendaPed): $cvalunit = $DadosVendaPed['valor']; $cvalunit = $cvalunit.'00'; $csubtotal = $DadosVendaPed['subtotal']; $cdesconto = ''; $ndesconto = 0; $csubtotalcomdesconto = $csubtotal; //FloatToStrF(dados.PedDiaSubTotal.value - dados.PedDiadesconto.value,ffNUMBER,15,2); $nTotalG = $nTotalG + $csubtotalcomdesconto; $cquantidade = $DadosVendaPed['quantidade']; $cnomepeca = $DadosVendaPed['nomeproduto']; $cAliquotaIcms = 0; //17; $cAliquotaPis = 0; //0.65; $cAliquotaCofis = 0; //3; /* CFOP = 5405 (Venda de mercadoria adquirida ou recebida de terceiros em operação com mercadoria sujeita ao regime de substituição tributária, na condição de contribuinte substituído Classificam-se neste código as vendas de mercadorias adquiridas ou recebidas de terceiros em operação com mercadorias sujeitas ao regime de substituição tributária, na condição de contribuinte substituído.) 5102 (Venda de mercadoria adquirida ou recebida de terceiros) ) */ $cvalicms = (($cvalunit - $ndesconto) * $cAliquotaIcms) /100; $nTotalIcms = $nTotalIcms + $cvalicms; $cvalicms = number_format($cvalicms, 2, '.', ','); $nTotalIcms = number_format($nTotalIcms, 2, '.', ','); $cvalpis = (($cvalunit - $ndesconto) * $cAliquotaPis) /100; $nTotalPis = $nTotalPis + $cvalpis; $cvalpis = number_format($cvalpis, 2, '.', ','); $nTotalPis = number_format($nTotalPis, 2, '.', ','); $cvalcofis = (($cvalunit - $ndesconto) * $cAliquotaCofis) /100; $nTotalCofis = $nTotalCofis + $cvalcofis; $cvalcofis = number_format($cvalcofis, 2, '.', ','); $nTotalCofis = number_format($nTotalCofis, 2, '.', ','); $nTotalDesconto = 0; $cTotalTotal = $cTotalTotal + $csubtotal; $ccoditemfornecedor = $DadosVendaPed['referencia']; $ccodbarrasfornecedor = $DadosVendaPed['ncm']; fwrite($fp,'H|'.$nitem."||"."\r\n" ); fwrite($fp,'I|'.$ccoditemfornecedor.'||'.$cnomepeca.'|'.$ccodbarrasfornecedor.'||5405|UN|'.$cquantidade.'.0000|'.$cvalunit.'000000|'.$csubtotal.'||UN|'.$cquantidade.'.0000|'.$cvalunit.'000000|||'.$cdesconto. "||1|||"."\r\n" ); //-----------aqui!! fwrite($fp,"M|"."\r\n" ); fwrite($fp,"N|"."\r\n" ); //fwrite($fp,"N10d|0|400|"."\r\n" ); fwrite($fp,"N10d|0|300|"."\r\n" ); fwrite($fp,"Q|"."\r\n" ); //fwrite($fp,'Q02|01|'.$csubtotalcomdesconto.'|'.$cAliquotaPis.'|'.$cvalpis. "|"."\r\n" ); fwrite($fp,'Q04|07|'."\r\n" ); fwrite($fp,"S|"."\r\n" ); //fwrite($fp,'S02|01|'.$csubtotalcomdesconto.'|'.$cAliquotaCofis.'.00|'.$cvalcofis. "|"."\r\n" ); fwrite($fp,'S04|07|'."\r\n" ); $nitem=$nitem+1; endforeach; fwrite($fp,"W\r\n" ); $nTotalG = number_format($nTotalG, 2, '.', ''); $cTotalTotal = number_format($cTotalTotal, 2, '.', ''); fwrite($fp,'W02|'.$nTotalG.'|'.$nTotalIcms.'|0.00|0.00|'.$cTotalTotal.'|0.00|0.00|'.$nTotalDesconto.'|'.'|0.00|0.00|'.$nTotalPis.'|'.$nTotalCofis.'|0.00|'.$nTotalG. "|"."\r\n" ); ///////////////// AQUI EU TERMINO DE CRIAR O ARQUIVO, ATÉ AQUI ESTÁ TUDO OK, QUANDO VERIFICO O ARQUIVO CRIADO NO SERVIDOR ESTÁ OK fwrite($fp,"X|0|"); fclose($fp); $file = "DF".$cTipoDanfe.'_'.$numped.".txt"; define('DIR_DOWNLOAD','../public_html/nfe/'); $arquivo = DIR_DOWNLOAD.$file; $arquivo = $file; $arquivo = DIR_DOWNLOAD.$arquivo; /// ESSA FOI OUTRA MANEIRA QUE TENTEI PRA VER SE RESOLVERIA MAS não FUNCIONA também, CONTINUA TRAZENDO O PONTO (.) NO FIM DO ARQUIVO!!! /* //$file = $_REQUEST['file']; header("Content-type: application/save"); //header("Content-Length:".filesize($arquivo)); header('Content-Disposition: attachment; filename='.basename($arquivo)); header('Expires: 0'); header('Pragma: no-cache'); */ // // ESSE É O TRECHO QUE FORÇA O DOWNLOAD DO ARQUIVO!!!! PROVAVELMENTE É POR AQUI QUE OCORRE O PROBLEMA!!! // header('Content-disposition: attachment; filename="'.basename($arquivo).'"'); header('Content-Length: '.filesize($arquivo)); readfile($arquivo); ?> Esqueci de mencionar , quando dou um type arquivo.txt no DOS, invés dele mostrar um ponto ele mostra um conjunto de caracteres ASCII 'ì♂ú Quem por favor tiver um ideia do que pode ser, informa por aqui, você está ajudando um cara desesperado ! e agradeço desde já!!! Renato Muniz!!!
  6. reunix

    Importação TXT (erro)

    OK, vou tentar willian obrigado, funcionou com o str_replace q o Mji comentou apesar q pode ficar mais pesado dependendo do aquivo, mas, por hora resolveu, obg at+
  7. reunix

    Importação TXT (erro)

    Olá Mji, pensei nisso mas acredito que ficará lento, pois terei que substirir varios campos: nome, endereco, cidade, bairro e a leitura é feita letra-a-letra mas obrrigado, se tiver outra sugestão!! at+ post o modelo do arquivo. como está escrito e o que você quer pegar. RICK, segue o modelo do arquivo: CIC COD_CORR TIP_PESSOA SITUACAO NOME IDENTIDADE ORGAO ENDERECO BAIRRO CIDADE CEP FONE1 FONE2 EMAIL DAT_NASC DAT_CONCES UF SEXO VENCIMENTO ULTIMA_ALTERACAO CAP_SOCIAL 00000023959479 058916.150002569 F N MARIA2 OK DE POMPEIA CAVALCANTI SILVA CO.342620 SSP/PE END. AV. CARLOS DE LIMA CAVALCANTI, 214 BAIRRO OK NOVO CIDADEA 53030260 8134 86124309 [email protected] 18/05/1929 01/10/1989 PE F 29/08/2005 600.00 00000001422772 10.0000445 F ELIANE VERCOSA DE MELLO 380.946 SSP/PE AV. BOA VIAGEM, 4000 1902 BOA VIAGEM RECIFE 51021-000 81 34653316 [email protected] 12/11/1935 01/10/1989 PE F 16/12/2013 04/09/2008 ele está delimitado por tabulação, não estou tento problemas em ler os dados, somente na hora de gravar, que provavelmente é na instrução do (UPDATE SET), quando ele ler do arqivo contento a aspa simples, meu script se quebar: $query = " UPDATE TABL SET NOME = '$nome' WHERE ID = '$id' "; provavelmente por isso o erro: Warning: pg_query() [function.pg-query]: Query failed: ERRO: erro de sintaxe em ou próximo a "ARCE" LINE 3: nome ='BERTINE ROSE D'ARCE CANDIDO', agradeço sua atenção ; se puder ajudar. at+
  8. reunix

    Importação TXT (erro)

    Olá pessoal andei procurando uma solução por um tempo e não consegui resolver meu probleminha, no caso é somente importar um arqujvo txt pro banco de dados q no meu caso é Postgres, o script ta funcionando 99%, 1% é justamente o erro q ocorre, quando um registro do TXT contém uma aspas simples o sistema da erro: tipo: LOJÃO D' VIDROS MARIA D' CARMO Script de importação: // muito simples $filename = "../../arquivos/".$arquivo; $handle = fopen($filename, 'r'); $data = fread($handle, filesize($filename)); $rowsArr = explodeRows($data); $lineDetails = explodeTabs($rowsArr[0]); dai eu acesso os campos da seguinte forma: $nome = trim($lineDetails[4]); $endereco = trim($lineDetails[7]); Agora para gravar no banco $query = "UPDATE corretores SET nome ='$nome', end_fenacor ='$endereco' WHERE cic = '$cic' "; já tentei de várias formas para extrarir a informacao: 1. $nome = trim($lineDetails[4]); 2. $nome = addslashes(trim($lineDetails[4])); 3. $nome = htmlentities(addslashes(trim($lineDetails[4]))); e para gravar tentei de outras formas também!!! UPDATE corretores SET nome=".addslashes($nome).", endereco ='$endereco' ... ERRO "UPDATE corretores SET nome =".$nome.", endereco =".$endereco." ... ERRO "UPDATE corretores SET nome =".$nome.", endereco =\"'$endereco'\" ... ERRO Mensagem do erro: no caso de tentar gravar dessa forma: update set nome = '$nome'.... Warning: pg_query() [function.pg-query]: Query failed: ERRO: erro de sintaxe em ou próximo a "ARCE" LINE 3: nome ='BERTINE ROSE D'ARCE CANDIDO', Quem já passou por isso por favor me digam onde estou errando!! Agradeço desde já at+
  9. Acho q entendi, então o trunc day concidera a data inteira e não somente o dia!!!:? valeu!!
  10. OK Kakao obrigado, mas você já pensou q no caso do (trunc day) para pedir um intervalo de até um mês funciona numa boa ainda não testei mas se por acaso o cliente pedir um intervalo de 1 mes e 15dias por exemplo alguns dias vão se repedir, o date_trunc('day'... percebe que os dias iguais são de outro mês e ano? ainda não testei essa possibilidade, até porque para mim não ocorreria porque eu forço somente 15 dias. at+
  11. Eis o resultado kakao, $data2 = substr($cDataFIM,6,4).substr($cDataFIM,3,2).substr($cDataFIM,0,2); $data1 = substr($cDataINI,6,4).substr($cDataINI,3,2).substr($cDataINI,0,2); $sql = "SELECT b.nome, "; $datafiltro = substr($cDataINI,6,4).'-'.substr($cDataINI,3,2).'-'.substr($cDataINI,0,2); while ($data1 < $data2) { $data1 = substr($cDataINI,6,4).substr($cDataINI,3,2).substr($cDataINI,0,2); $sql .= "SUM(CASE WHEN date_trunc('day', a.vencto) = '$datafiltro' THEN valor END) as \"".substr($cDataINI,0,2)."-".substr($cDataINI,3,2)."\","; $cDataINI = date('d/m/Y',mktime(24*1, 0, 0, substr($cDataINI,3,2), substr($cDataINI,0,2), substr($cDataINI,6,4))); $datafiltro = substr($cDataINI,6,4).'-'.substr($cDataINI,3,2).'-'.substr($cDataINI,0,2); } // RETIRO A ULTIMA VIRGULA!!! $sql = substr($sql,0,strlen($sql)-1); $sql .= " FROM ctreceber a left join categfinanc b on a.categoria = b.id WHERE (a.dtrec is null) GROUP BY b.nome order by b.nome"; resultado: SELECT b.nome, SUM(CASE WHEN date_trunc('day', a.vencto) = '2010-08-13' THEN valor END) as "13-08",SUM(CASE WHEN date_trunc('day', a.vencto) = '2010-08-14' THEN valor END) as "14-08",SUM(CASE WHEN date_trunc('day', a.vencto) = '2010-08-15' THEN valor END) as "15-08",SUM(CASE WHEN date_trunc('day', a.vencto) = '2010-08-16' THEN valor END) as "16-08",SUM(CASE WHEN date_trunc('day', a.vencto) = '2010-08-17' THEN valor END) as "17-08",SUM(CASE WHEN date_trunc('day', a.vencto) = '2010-08-18' THEN valor END) as "18-08",SUM(CASE WHEN date_trunc('day', a.vencto) = '2010-08-19' THEN valor END) as "19-08",SUM(CASE WHEN date_trunc('day', a.vencto) = '2010-08-20' THEN valor END) as "20-08",SUM(CASE WHEN date_trunc('day', a.vencto) = '2010-08-21' THEN valor END) as "21-08",SUM(CASE WHEN date_trunc('day', a.vencto) = '2010-08-22' THEN valor END) as "22-08",SUM(CASE WHEN date_trunc('day', a.vencto) = '2010-08-23' THEN valor END) as "23-08",SUM(CASE WHEN date_trunc('day', a.vencto) = '2010-08-24' THEN valor END) as "24-08",SUM(CASE WHEN date_trunc('day', a.vencto) = '2010-08-25' THEN valor END) as "25-08",SUM(CASE WHEN date_trunc('day', a.vencto) = '2010-08-26' THEN valor END) as "26-08",SUM(CASE WHEN date_trunc('day', a.vencto) = '2010-08-27' THEN valor END) as "27-08",SUM(CASE WHEN date_trunc('day', a.vencto) = '2010-08-28' THEN valor END) as "28-08",SUM(CASE WHEN date_trunc('day', a.vencto) = '2010-08-29' THEN valor END) as "29-08",SUM(CASE WHEN date_trunc('day', a.vencto) = '2010-08-30' THEN valor END) as "30-08",SUM(CASE WHEN date_trunc('day', a.vencto) = '2010-08-31' THEN valor END) as "31-08",SUM(CASE WHEN date_trunc('day', a.vencto) = '2010-09-01' THEN valor END) as "01-09",SUM(CASE WHEN date_trunc('day', a.vencto) = '2010-09-02' THEN valor END) as "02-09" FROM ctreceber a left join categfinanc b on a.categoria = b.id WHERE (a.dtrec is null) GROUP BY b.nome order by b.nome está perfeita a consulta, mais uma vez obrigado!!!!! at+
  12. kakao você é o kara, v mesmo, mexendo aqui tive a idéia, no propriprio PHP posso montar a consulta com um simples while no intervalo das datas, exemplo, dataconsulta = dataINI; sql = "SELECT b.nome,"; faça enquanto dataINi <= DataFIM { sql = sql + "SUM(CASE WHEN date_trunc('day', a.vencto) = 'dataconsulta' THEN valor END) as 'dataconsulta'," dataconsulta = dataconsulta +1dia; } sql = sql + " FROM ctreceber a left join categfinanc b on a.categoria = b.id WHERE (a.dtrec is null) GROUP BY a.vencto,b.nome order by a.vencto,b.nome" no final do while ficaria +- assim... SELECT b.nome, SUM(CASE WHEN date_trunc('day', a.vencto) = '2010-08-28' THEN valor END) as "28/08/2010", SUM(CASE WHEN date_trunc('day', a.vencto) = '2010-08-29' THEN valor END) as "29/08/2010", SUM(CASE WHEN date_trunc('day', a.vencto) = '2010-08-30' THEN valor END) as "30/08/2010", SUM(CASE WHEN date_trunc('day', a.vencto) = '2010-08-31' THEN valor END) as "31/08/2010", SUM(CASE WHEN date_trunc('day', a.vencto) = '2010-09-04' THEN valor END) as "04/09/2010" FROM ctreceber a left join categfinanc b on a.categoria = b.id WHERE (a.dtrec is null) GROUP BY a.vencto,b.nome order by a.vencto,b.nome ainda não testei pelo PHP mas deve funcionaar, beleza é quase isso... testei direto no banco dessa forma que está ai em cima, e retornou 15 registro da mesma categoria "ATENDIMENTOS", NOME;28/08/2010;29/08/2010;30/08/2010;31/08..;04/09/2010 "ATENDIMENTOS";;;R$0,33;; "ATENDIMENTOS";;;;R$84,33; "ATENDIMENTOS";;;;;R$33,33 "ATENDIMENTOS";;;;; "ATENDIMENTOS";;;;; "ATENDIMENTOS";;;;; "ATENDIMENTOS";;;;; "ATENDIMENTOS";;;;; "ATENDIMENTOS";;;;; "ATENDIMENTOS";;;;; "ATENDIMENTOS";;;;; "ATENDIMENTOS";;;;; "ATENDIMENTOS";;;;; tenho uma outra consulta aqui que retorna também os 15r registros só para comparar, Select A.nome, TabDiaUm.DiaUm as valor, to_char(TabDiaUm.vencto,'dd/mm/yyyy') FROM categfinanc a LEFT JOIN (SELECT SUM(valor) AS DiaUm,categoria,vencto FROM ctreceber WHERE (CAST(vencto as date) >= '01/01/2010' AND CAST(vencto as date) <= '31/12/2010') AND (dtrec is null) GROUP BY vencto,categoria) TabDiaUm ON A.id = TabDiaUm.categoria where TabDiaUm.DiaUm <> '0' order by a.nome,vencto e retornou isso: "ATENDIMENTOS";R$33,33;"02/08/2010" "ATENDIMENTOS";R$4,33;"22/08/2010" "ATENDIMENTOS";R$0,33;"30/08/2010" "ATENDIMENTOS";R$84,33;"31/08/2010" "ATENDIMENTOS";R$33,33;"04/09/2010" "ATENDIMENTOS";R$166,67;"17/09/2010" "ATENDIMENTOS";R$3,33;"18/09/2010" "ATENDIMENTOS";R$4,33;"21/09/2010" "ATENDIMENTOS";R$84,66;"30/09/2010" "ATENDIMENTOS";R$33,33;"01/10/2010" "ATENDIMENTOS";R$33,33;"04/10/2010" "ATENDIMENTOS";R$3,33;"18/10/2010" "ATENDIMENTOS";R$4,33;"21/10/2010" "ATENDIMENTOS";R$166,67;"16/11/2010" "ATENDIMENTOS";R$3,33;"17/11/2010" espero não está complicando ainda mais :D at+ vou fazer uns teste aqui, qualquer coisa volto aqui, se você tiver algo agradeço... at++ é isso.... , o problema agora é a repeticao da categoria em branco, agradeço muito ajudou d+ é PHP é isso.... , o problema agora é a repeticao da categoria em branco, agradeço muito ajudou d+ é PHP beleza RESOLVIDO!!!! :D com seu último POst o filtro funcionou uma beleza... OBRIGADO! kakao!! tu é fera!!!! at+ como faço para finalizar o tópico?? valeu at9 Massa mesmo, vou mexendo e vai clareando valeu mesmo!!!!
  13. Olá Kakao primeiramente obrigado, acredito que foi por pouco veio a categoria e 2 campos já como data dia 28 e 29 so que vazio, assim: NOME 28/08/2010 29/08/2010 CARCT (MONEY) (MONEY) ------------------ ---------- -------- "ATENDIMENTOS"; ; "ATENDIMENTOS"; ; "ATENDIMENTOS"; ; "ATENDIMENTOS"; ; "ATENDIMENTOS"; ; "ATENDIMENTOS"; ; "ATENDIMENTOS"; ; "ATENDIMENTOS"; ; "ATENDIMENTOS"; ; "ATENDIMENTOS"; ; "ATENDIMENTOS"; ; "ATENDIMENTOS"; ; "ATENDIMENTOS"; ; "ATENDIMENTOS"; ; "ATENDIMENTOS"; ; esse intervalo será informado pelo sistema em php, o cliente informará a data inicial e eu vou calcular a data final com 15 dias ou seja se o cliente informar '28/08/2010' a data final será '11/09/2010' então como poderia renomear o nome do campo automaticamente com o AS? ainda não entendi muito bem o seu script mas acredito que seja por ai, estou te passando o resulta, mas vou dá uma estudada aqui, se puder rever pra também já agradeço seria o ideal se o nome dos campos fosse já com a data como você fez com o AS para renomear, porém o cliente pode escolher qualquer intervalo até mesmo uma virada de mês como no exemplo que mencionei a pouco, no caso do seu resultado não deveria retornar vários "ATENDIMENTOS" seria 1 "ATENDIMENTOS" e vários campos do SUM() caso tivesse valor na data do período, vou estudar teu código aqui, mas se puder ainda me ajudar, agradeço d+ at+ então. kakao, voltei... fiz esta modificação SELECT b.nome, SUM(CASE WHEN date_trunc('day', a.vencto) >= '2010-08-28' THEN valor END) as "28/08/2010", SUM(CASE WHEN date_trunc('day', a.vencto) <= '2010-09-11' THEN valor END) as "29/08/2010" FROM ctreceber a left join categfinanc b on a.categoria = b.id WHERE (a.dtrec is null) GROUP BY a.vencto,b.nome order by a.vencto,b.nome coloquei >= e <= para um período e como disse ele não gerou os campo do SUM() para todas as datas do período ou seja 28/08/2010 - 29/08/2010 - 30/08/2010 ... 10/09/2010 - 11/09/2010 deveria ser assim CATEDOGIRA................ 28/08/2010 - 29/08/2010 - 30/08/2010 ... 10/09/2010 - 11/09/2010 ATENDIMENTOS ................. 9,99 ......... 3,70 ................ 0............... 5,70.......... 10,80 CONTAS DIVERSAS ........... 11,00 ........74,40 ..........100,00............... 75,00 .......... 10,00 TELEMAR ............ 150,00 .........74,00 ... at+
×
×
  • Create New...