Ir para conteúdo
Fórum Script Brasil

Frank K Hosaka

Membros
  • Total de itens

    1.532
  • Registro em

  • Última visita

Tudo que Frank K Hosaka postou

  1. Com a ajuda do Copilot, montei um algoritmo mais simples, onde ele relaciona os itens necessários para uma quantidade solicitada de hamburgueres, só que eu usei o Portugol Webstudio (https://portugol.dev/) programa { funcao inicio() { // Declaração das variáveis inteiro qtdHamburgueres real carne, pao, queijo, alface, tomate // Define a quantidade de ingredientes por hambúrguer carne = 0.15 // 150 gramas por hambúrguer pao = 1.0 // 1 pão por hambúrguer queijo = 0.05 // 50 gramas de queijo por hambúrguer alface = 0.02 // 20 gramas de alface por hambúrguer tomate = 0.03 // 30 gramas de tomate por hambúrguer // Pergunta ao usuário quantos hambúrgueres deseja fazer escreva("Quantos hambúrgueres você quer fazer? ") leia(qtdHamburgueres) // Calcula a quantidade total de cada ingrediente carne = carne * qtdHamburgueres pao = pao * qtdHamburgueres queijo = queijo * qtdHamburgueres alface = alface * qtdHamburgueres tomate = tomate * qtdHamburgueres // Exibe a lista de ingredientes necessários escreva("Para fazer ", qtdHamburgueres, " hambúrguer(es), você vai precisar de:\n") escreva(carne, " kg de carne\n") escreva(pao, " pães\n") escreva(queijo, " kg de queijo\n") escreva(alface, " kg de alface\n") escreva(tomate, " kg de tomate\n") } }
  2. Frank K Hosaka

    COUNT DISTINCT

    SELECT cnpj, YEAR(data) AS ano, MONTH(data) AS mes, SUM(comissao) AS total_comissao FROM comissao GROUP BY cnpj, YEAR(data), MONTH(data) ORDER BY ano, mes;
  3. Hoje recebi a mensagem de que a função não foi localizada, erro 404. Eu não consegui encontrar nenhum erro. O Copilot deu várias orientações, a mais estranha foi testar o Route, assim: Route::get('teste',function(){return 'teste';}); E, por incrível que parece, não consegui executar essa função. Foi aí é que o Copilot me passou a dica de limpar o cache do Route. E a partir daí tudo começou a funcionar como eu esperava.
  4. Estou pensando em usar o Bootstrap e oTailwinds no PHP, mas logo no primeiro teste, encontrei um problema aqui: <link href="https://cdn.jsdelivr.net/npm/bootstrap@5.3.3/dist/css/bootstrap.min.css" rel="stylesheet"> <script src="https://cdn.tailwindcss.com"></script> <style> @media (min-width: 768px) { body {width: 750px; margin: auto} } </style> <div class="w-50 bg-success m-auto">Olá mundo</div> Aqui usei o CSS convencional para centralizar a <div> no meio da tela, mas o Tailwinds empurra tudo para esquerda. O único jeito que eu encontrei para resolver isso foi usando a seguinte gambiarra: <link href="https://cdn.jsdelivr.net/npm/bootstrap@5.3.3/dist/css/bootstrap.min.css" rel="stylesheet"> <script src="https://cdn.tailwindcss.com"></script> <style> @media (min-width: 768px) { .gambiarra {width: 750px; margin: auto} } </style> <div class="gambiarra w-50 bg-success m-auto">Olá mundo</div>
  5. Problema complicado, eu apelaria para o Copilot: <?php // Lista de jogadores $jogadores = [ ['aluno' => 1, 'escola' => 1, 'categoria' => 'iniciante'], ['aluno' => 8, 'escola' => 1, 'categoria' => 'intermediario'], ['aluno' => 9, 'escola' => 2, 'categoria' => 'intermediario'], ['aluno' => 15, 'escola' => 2, 'categoria' => 'iniciante'], ['aluno' => 18, 'escola' => 3, 'categoria' => 'iniciante'], ['aluno' => 21, 'escola' => 1, 'categoria' => 'iniciante'], ]; // Função para agrupar jogadores por categoria function agruparPorCategoria($jogadores) { $categorias = []; foreach ($jogadores as $jogador) { $categorias[$jogador['categoria']][] = $jogador; } return $categorias; } // Agrupar jogadores por categoria $categorias = agruparPorCategoria($jogadores); // Função para gerar chaves de jogos function gerarChaves($categoriaJogadores) { $chaves = []; $numJogadores = count($categoriaJogadores); for ($i = 0; $i < $numJogadores; $i++) { for ($j = $i + 1; $j < $numJogadores; $j++) { if ($categoriaJogadores[$i]['escola'] !== $categoriaJogadores[$j]['escola']) { $chaves[] = [ 'jogador1' => $categoriaJogadores[$i]['aluno'], 'jogador2' => $categoriaJogadores[$j]['aluno'] ]; } } } return $chaves; } // Gerar chaves de jogos por categoria $chavesPorCategoria = []; foreach ($categorias as $categoria => $categoriaJogadores) { $chavesPorCategoria[$categoria] = gerarChaves($categoriaJogadores); } // Exibir chaves de jogos foreach ($chavesPorCategoria as $categoria => $chaves) { echo "Categoria: $categoria<br>"; foreach ($chaves as $chave) { echo "Jogador {$chave['jogador1']} vs Jogador {$chave['jogador2']}<br>"; } echo "<br>"; } ?> /* Categoria: iniciante Jogador 1 vs Jogador 15 Jogador 1 vs Jogador 18 Jogador 15 vs Jogador 18 Jogador 15 vs Jogador 21 Jogador 18 vs Jogador 21 Categoria: intermediario Jogador 8 vs Jogador 9 */
  6. Sub Novo_RDO() 'código hospedado no módulo de programação em EstaPastaDeTrabalho 'esse código presume que o usuário pegou a última planilha com o formato nn NomePlanilha = ActiveSheet.Name Sheets(Sheets.Count).Copy After:=Sheets(Sheets.Count) 'cria nova planilha baseada na anterior ActiveSheet.Name = Format(NomePlanilha + 1, "00") Range("B1:B3").ClearContents 'limpa a área de dados Range("B1").Value = InputBox("Por favor, insira a data da obra") MsgBox "Por favor, altere as imagens para corresponder a essa RDO" End Sub
  7. Usei o recurso da execução linha por linha com a tecla F8, e, no meu caso, eu tive problema nessa linha: If caixa_buscar_prod2.Value <> "" Then Fui verificar o formulário e eu vi que não criei a caixa caixa_buscar_prod2, e assim surgiu a mensagem O objeto é obrigatório.
  8. O comando para compartilhar o Laravel na rede local é php artisan serve --host=0.0.0.0 No celular você usa o IP da rede local na barra de endereço do navegador, o meu ficou assim: 192.168.0.5:8000 O problema é que eu estou usando o CSS Tailwinds no Laravel. Para o celular reconhecer o Tailwinds, você precisa abrir outro terminal, e executar mais esse comando: npm run build
  9. Em 2022 eu não era capaz de usar o CSS Tailwinds, eu achei ele para lá de complicado. Mas eu gostei do Laravel. Para estudar o Laravel, eu encontrei uma rotina para fazer login na internet e também encontrei um jeito de usar o Bootstrap. Com a chegada da Inteligência Artificial em 2024, ficou bem mais fácil estudar o Tailwinds. Graças a ele, eu consegui instalar o Breeze (esse é o módulo do login no Laravel), e pouco a pouco eu pedi para o Copilot converter o <table> Bootstrap em <div> Tailwinds. O problema foi na hora de esbarrar com um <details>, o Copilot não conseguiu fazer a conversão do jeito que eu queria. Eu fui obrigado a estudar o Bootstrap, e descobri que a mágica acontece quando ele usa a classe "table". Assim eu pedi para o Copilot simular a classe "table" nas <div> com o Tailwinds: <link href="https://cdn.jsdelivr.net/npm/bootstrap@5.3.3/dist/css/bootstrap.min.css" rel="stylesheet"> <table class=table> <tr><td>Codigo <td> <details> <summary>Produto</summary> <table> <tr><td>Unidade <tr><td>Embalagem </table> </details> <td>Venda </table> <link href="https://cdn.jsdelivr.net/npm/tailwindcss@2.2.19/dist/tailwind.min.css" rel="stylesheet"> <div class="flex"> <div>Codigo</div> <div> <details> <summary>Produto</summary> <div>Unidade</div> <div>Embalagem</div> </details> </div> <div>Venda</div> </div>
  10. Eu não consegui chamar uma caixa de texto como Text8(0). Como você conseguiu?
  11. Eu criei duas planilhas (estatistica e dados) um formulário (cadastro) com apenas duas caixas de texto (RGHC1) e (q1), e também um botão (Salvar). Através do botão Salvar, criei o seguinte código: Sub Salvar_Click() linha = 1 Do Until Sheets("dados").Cells(linha, 3) = "" linha = linha + 1 Loop Sheets("dados").Cells(linha, 3) = cadastro.RGHC1.Text Sheets("estatistica").Cells(linha, 5) = cadastro.q1.Text If Trim(Me.RGHC1.Value) = "" Then MsgBox "Por favor, preecha o RGHC,campo obrigatório.", vbExclamation, "Aviso" Me.RGHC1.SetFocus Exit Sub End If MsgBox "Paciente cadastrado com sucesso.", vb, "Aviso" Unload cadastro MsgBox "Olá mundo!" cadastro.Show End Sub Com o formulário em foco, usei o botão executar, e assim ele gravou na planilha dados o conteúdo da caixa RGHC1 na planilha dados e o conteúdo da caixa q1 na planilha estatistica. Continuei com o teste, e os valores seguintes foram gravadas nas mesmas planilhas só que na linha seguinte. Não sei onde está o problema, o único problema que eu encontrei é que o seu código trabalha com dezenas e dezenas de caixas no formulário, não sei como você montou o seu formulário, mas o meu que só tem duas caixas ficou assim:
  12. Eu simplifiquei o seu código assim: Sub Novo_RDO() ActiveSheet.Name = Format(CInt(ActiveSheet.Name) + 1, "00") Range("A1:A1").ClearContents End Sub Quanto às imagens, eu deixaria tudo lá, e iria atualizar cada uma com o botão direito > alterar imagem.
  13. Recebi nessa semana a mensagem de que há uma nova versão do WampServe. Como não é possível instalar a nova versão em cima da velha, precisei desinstalar o anterior (incluindo todos os códigos que eu criei, mas trouxe de volta com a ajuda da Hostinger). Antes de instalar a nova versão, ele pede para instalar várias atualizações do Visual C++. A nova versão é bem melhor, não tem mais aquelas janelas escuras que aparecem, quando você ativa o WampServe pela primeira vez. Ele traz o MySQL 9.9.1 e o PHP 8.4.0. O MySQL Workbench reclamou que o MySQL 9.9.1 não é totalmente compatível, mesmo assim estou conseguindo trabalhar. O Workbench amostra grátis só dá suporte até o MySQL 8.0. Já o VS Code disparou um monte de mensagens, eu tive que até mexer no arquivo php.ini (o VS Code não conseguia carregar o arquivo Xdebug, ele estava buscando no diretório E:, o meu é C:, mas na hora de editar, ele não funcionou. Usei o método da tentativa e erro, e mudei para c : e deu certo). Os meus códigos em PHP não apresentaram nenhum problema, já o código Laravel, eu tive que mexer num arquivo dentro do labirinto do Vendor, é claro, com a ajuda do Copilot. O VS Code funciona, só não tenho certeza se eu consertei corretamente o arquivo do Laravel, só agora é que me dei conta que o correto era usar o comando composer update.
  14. O seu código trabalha com duas classes, e eu simplifiquei numa só classe: arquivo conexao.php <?php $mysqli=new mysqli("localhost","root","","diario"); arquivo index.php <?php include('conexao.php'); class Capa { function pegaCapa($cliente){ global $mysqli; return $mysqli->query("select pessoa from tbpessoa where pessoa like '%$cliente%' limit 1") ->fetch_assoc()['pessoa']; } function pegaItem($codigo){ global $mysqli; return $mysqli->query("select codp from tbpessoa where codp=$codigo") ->fetch_assoc()['codp']; } } function calculaItem($item,$cliente){ $ret_capa=(new Capa)->pegaCapa($cliente); $ret_item=(new Capa)->pegaItem($item); return "ret_capa $ret_capa ret_item $ret_item"; } echo calculaItem(1,"Frank"); O include funciona do mesmo jeito desde o PHP 5.6 até o PHP 8.1.2, e aqui testei no PHP 8.4.0. O problema do PHP 8.1.2 é que ele não dá mais suporte para o motor mysql - no lugar temos dois novos motores: o mysqli e o PDO. Desconfio que o problema é o motor que você está tentando usar no PHP 8.1.2.
  15. No Laravel, estou migrando do Bootstrap para o Tailwinds, com a ajuda do Copilot. Basicamente estou tentando fazer com as <div> o mesmo que eu fiz com os <td>. No notebook, tudo funciona a mil maravilhas. Já no celular, tudo é um tumulto generalizado, uma <div> fica em cima da outra. Por ora, decidi esquecer a responsividade, decidi que a tela do celular vai ser espelho do notebook. Claro que isso é impossível, mas achei um denominador comum: o tamanho do <body>, decidi definir assim: <style> @media (min-width: 768px) { body {width: 500px; margin: auto} } @media (max-width: 767px) { body {width: 500px } } </style> Ou seja, o celular vai mostrar o que puder e o notebook vai colocar tudo no meio da tela. A responsividade é bacana, mas isso vou deixar lá para frente.
  16. Eu sou novo no Phyton, tentei fazer o seu código funcionar, o máximo que eu consegui foi até aqui: from datetime import datetime # pip install flask from flask import Flask, jsonify, request app=Flask(__name__) @app.route('/adicionar_coluna/<int:painel_id>', methods=['POST']) def get_db_connection(): import mysql.connector # pip install mysql-connector-python # Conectar ao banco de dados conexao = mysql.connector.connect( host="localhost", user="root", password="", database="teste" ) return conexao def configurar_colunas(painel_id): with get_db_connection() as connection: cursor = connection.cursor() # Buscar o SQL do painel criado cursor.execute("select * from hp_painel where nr_sequencia=%s",(painel_id,)) painel = cursor.fetchone() breakpoint() #testando painel_id=1 configurar_colunas(painel_id)
  17. Com a ajuda do Copilot, descobri que a linguagem desse programa é Portogol. Baixei a versão para a versão desktop, mas ele trabalha com fontes muito pequenas, não dá para trabalhar. Mas achei a versão web que é bem mais fácil de enxergar: http://portugol.professorisidro.com.br:3000/ide Mas eu tive que mudar todo o seu código para alguma coisa funcionar: programa { cadeia cliente[5][5] funcao inicio() { cliente[0][0]="nome" cliente[0][1]="pacote" inteiro opcao escreva("Turismo Legal\n") escreva("1. Cadastrar cliente\n") escreva("2. Listagem Geral\n") escreva("0. Sair\n") escreva("Informe a opção desejada: ") leia(opcao) escolha(opcao) { caso 1: cadastraCliente() pare caso 2: listaCliente() pare caso 0: pare caso contrario: escreva("Opção inválida!") } } funcao cadastraCliente(){ escreva("nome: ") leia(cliente[1][0]) cliente[1][1] = calculePacote() inicio() } funcao cadeia calculePacote() { retorne "100" } funcao listaCliente() { escreva(cliente[0][0]) escreva(cliente[0][1]) escreva("\n") escreva(cliente[1][0]) escreva(cliente[1][1]) } }
  18. Sub VerificarTipoPlaca() Dim placa As String Dim resultado As String placa = InputBox("Digite a placa do carro:") If IsPlacaAntiga(placa) Then resultado = "Antiga" ElseIf IsPlacaNova(placa) Then resultado = "Nova" Else resultado = "Formato Desconhecido" End If MsgBox "A placa " & placa & " é do tipo: " & resultado, vbInformation, "Tipo de Placa" End Sub Function IsPlacaAntiga(placa As String) As Boolean ' Verifica se a placa segue o formato AAA-0000 If placa Like "AAA-####" Then IsPlacaAntiga = True Else IsPlacaAntiga = False End If End Function Function IsPlacaNova(placa As String) As Boolean ' Verifica se a placa segue o formato AAA0A00 If placa Like "AAA#A##" Then IsPlacaNova = True Else IsPlacaNova = False End Function End``` ### Explicação do Código: 1. **Sub VerificarTipoPlaca**: - Solicita ao usuário que digite a placa do carro usando `InputBox`. - Verifica o tipo de placa usando as funções `IsPlacaAntiga` e `IsPlacaNova`. - Exibe uma mensagem com o tipo de placa usando `MsgBox`. 2. **Funções IsPlacaAntiga e IsPlacaNova**: - Verificam se a placa corresponde aos formatos `AAA-0000` e `AAA0A00`, respectivamente. ### Como Usar: 1. **Abra o VBA Editor**: Pressione `Alt + F11` no Access. 2. **Inserir um Módulo**: Clique com o botão direito no seu projeto VBA > Inserir > Módulo. 3. **Copiar e Colar o Código**: Cole o código fornecido no módulo. 4. **Executar a Macro**: No editor VBA, selecione a macro `VerificarTipoPlaca` e clique em `Run`. crédito: copilot.microsoft.com
  19. Quando comecei a estudar o Laravel eu usei o Bootstrap. Com o surgimento da inteligência artificial em 2024, ficou bem mais fácil usar o Tailwinds. Hoje fiz uma experiência para saber se dava para usar os dois ao mesmo tempo, e deu certo: arquivo testeView.blade.php <link href="https://cdn.jsdelivr.net/npm/bootstrap@5.3.3/dist/css/bootstrap.min.css" rel="stylesheet"> @vite(['resources/css/app.css', 'resources/js/app.js']) <table class='m-0 m-auto'> <tr class=bg-secondary> <td>{{'limão'}}<td> <td><form class=m-0 style=height:10px> @csrf <input value=1 size=1 class="form-control text-end bg-transparent border-0" style=height:10px> </form> <td>{{'x 1'}} <td>{{'='}} <td>{{1}} </table> <div class=h-1></div> <div class="flex bg-secondary m-0 m-auto w-[160]"> <div>{{'limão'}}</div> <div> <form class="m-0 h-[10px]"> @csrf <input value=1 size=1 class="text-right bg-transparent border-none h-[10px] mt-1"> </form> </div> <div>{{'x 1'}}</div> <div>{{'='}}</div> <div>{{1}}</div> </div>
  20. arquivo testeView.blade.php @include('appView') @php $class='class="text-red-500"' @endphp <span <?=$class?>>Teste</span> <!--funciona--> <span {{$class}}>Teste</span> <!-- não --> <span {{{$class}}}>Teste</span> <!-- não --> <span {!! $class !!}>Teste</span> <!-- modo blade de usar caracteres HTML sem escapar -->
  21. Eu não tenho VBA, mas eu tenho Excel. Criei uma nova planilha, e na planilha Plan1 eu escrevi teste na célula a1, a2 e a3. Eu fui no painel de programação do Excel e com a ajuda do Copilot, eu ajustei o seu código: Sub Gerar_Pdf() Dim criarpasta As String, caminho_arquivo As String Dim ws As Worksheet 'Define a planilha explicitamente Set ws = ThisWorkbook.Sheets("Plan1") criarpasta = ThisWorkbook.Path & "\Formularios" If Dir(criarpasta, vbDirectory) = "" Then MkDir criarpasta End If With ws .Activate caminho_arquivo = ThisWorkbook.Path & "\Formularios\" & .Range("A3").Value & ".PDF" .Range("A1:A2").ExportAsFixedFormat Type:=xlTypePDF, Filename:=caminho_arquivo End With End Sub Na Janela Imediata, eu escrevi Gerar_Pdf e deu certo. Se não der certo, veja em Ferramentas > Referências se estão marcados as seguintes: Visual Basic for Applications Microsoft Excel 16.0 Object Libray OLE Automation Microsoft Office 16.0 Object Library Se você estiver trabalhando com o VBA puro, sugiro procurar os comandos equivalentes.
  22. Estou estudando Tailwinds com o Copilot, estou aprendendo a usar o marcador <div>. Para colocar uma <div> em cima da outra, você não precisa fazer nada. Para colocar uma <div> do lado da outra, aí você precisa usar <div class="flex">. Para colocar diferentes números de <div> em cada linha, aí você precisa usar <div class="flex flex-wrap">. O problema é alinhar as colunas. O Tailwinds tem ótimas ferramentas para fazer ajustes, do tipo margem negativa. Isso é uma grande maravilha, desde que a linha não seja sombreada. O Copilot ofereceu uma sugestão, mas o código iria ficar enorme. Eu resolvi apelar para a velha gambiarra do &nbsp. Mas eu tive que usar 7 &nbsp. Na internet encontrei a sugestão do &ensp, ele é maior que o &nbsp: arquivo outrosView.blade.php @include('menuView') <script> btmenu.innerHTML = 'Outros'; document.title = "Outros"; </script> <div class="px-2 bg-gray-200"><a href="estoqueBaixar">Baixar Estoque</a></div> <div class=px-2><a href="balanceteTBW">Criar tbw</a></div> <div class="px-2 bg-gray-200"><a href="produtoDescontinuar">Descontinuar Produto</a></div> <div class=px-2><a href="estoqueDiferenca">Diferença no Estoque</a></div> <div class="px-2 bg-gray-200"><a href="blingDiferenca">Diferença na Bling</a></div> <div class=px-2><a href="estoqueEntrada">Entrada de Produtos</a></div> <div class="px-2 bg-gray-200"><a href="outrosMegaSena">Mega-Sena</a></div> <div class=px-2><a href="estoqueNota">Nota do Fornecedor</a></div> <div class="px-2 bg-gray-200"><a href="blingFalta">Nota Faltante</a></div> <div class="flex flex-wrap"> <div class="w-1/2 px-2">session('codp')</div> <div class="w-1/2">{{$sessao['codp']}}</div> <div class="w-1/2 px-2 bg-gray-200">session('pessoa')</div> <div class="w-1/2 bg-gray-200">{{$sessao['pessoa']}}</div> <div class="w-1/2 px-2">session('criterio')</div> <div class="w-1/2">{{$sessao['criterio']}}</div> <div class="w-1/2 px-2 bg-gray-200">session('criterioPessoa')</div> <div class="w-1/2 bg-gray-200">{{$sessao['criterioPessoa']}}</div> <div class="w-1/2 px-2">session('dia')</div> <div class="w-1/2">{{dbr($sessao['dia'])}}</div> <div class="w-1/2 px-2 bg-gray-200">session('end')</div> <div class="w-1/2 bg-gray-200">{{$sessao['end']}}</div> <div class="w-1/2 px-2">session('id')</div> <div class="w-1/2">{{$sessao['id']}}</div> <div class="w-1/2 px-2 bg-gray-200">session('lcto')</div> <div class="w-1/2 bg-gray-200">{{$sessao['lcto']}}</div> <div class="w-1/3 px-2">env('lctoBaixaEstoque')</div> <div class="w-1/3 text-center ml-4">{{$baixa}}</div> <div class="w-1/3 text-right text-red-500 -ml-4"> {{dec($valorBaixa)}}</div> <div class="w-1/3 px-2 bg-gray-200">env('lctoAcertoMais')</div> <div class="w-1/3 text-center bg-gray-200">&ensp;&ensp;&ensp;&nbsp;{{$mais}}</div> <div class="w-1/3 text-right text-red-500 bg-gray-200">{{dec($valorMais)}}</div> <div class="w-1/3 px-2 ">env('lctoAcertoMenos')</div> <div class="w-1/3 text-center ml-4">{{$menos}}</div> <div class="w-1/3 text-right text-red-500 -ml-4">{{dec($valorMenos)}}</div> <div class="w-1/2 px-2 bg-gray-200">env('diaAcerto')</div> <div class="w-1/2 bg-gray-200">{{dbr($diaAcerto)}}</div> </div>
  23. 10 gb ou 21 gb é muita coisa! Desconfio que tem muito vídeo dentro do WhatsApp. Aconselho a entrar em configurações, Armazenamento e dados, Gerenciar Armazenamento, espere um pouco, e o WhatsApp vai apontar todos os arquivos maiores que 5 mb. Analise com calma, se você não precisar, elime. Sugiro fazer o mesmo no aplicativo Galeria, elimine os vídeos que não são necessários.
  24. Gastei dois dias para transformar um arquivo com o CSS Bootstrap para o Tailwinds, tive que trocar um monte de <td> por um monte de <div>: arquivo balanceteView.blade.php @include('menuView') <script>btMenu.innerHTML="Balancete";document.title="Balancete"</script> <div class="flex bg-gray-200"> <div style=width:350px><a href='balanceteApura'>{{$apuracao->apuracao}}</a></div> <div style=width:200px class=text-right>Anterior</div> <div style=width:200px class=text-right>Débito</div> <div style=width:200px class=text-right>Crédito</div> <div style=width:200px class=text-right>Saldo</div> </div> @foreach($balancete as $conta) <div class="flex bg-gray-200 odd:bg-white even:bg-gray-200"> <div style=width:50px><a href="balanceteRazao?conta={{$conta->conta}}">{{$conta->conta}}</a></div> <div style=width:300px>{{$conta->descricao}}</div> <div style=width:200px class=text-right>{{dec($conta->inicio)}}</div> <div style=width:200px class=text-right>{{dec($conta->debito)}}</div> <div style=width:200px class=text-right>{{dec($conta->credito)}}</div> <div style=width:200px class=text-right>{{dec($conta->fim)}}</div> </div> @if($conta->conta==304) <div class="flex bg-white"> <div style=width:950px class="text-right font-semibold">Receita</div> <div style=width:200px class="text-right font-semibold">{{dec($receita)}}</div> </div> @endif </div> @endforeach <div class="flex bg-white"> <div style=width:950px class="text-right font-semibold">Despesa</div> <div style=width:200px class="text-right font-semibold">{{dec($despesa)}}</div> </div> <div class="flex bg-gray-200"> <div style=width:550px class="text-right font-semibold">{{dec($anterior)}}</div> <div style=width:400px class="text-right font-semibold">{{$nota}}</div> <div style=width:200px class="text-right font-semibold">{{dec($resultado)}}</div> </div> e apenas alguns segundos para acabar com a lentidão da minha função balancete: arquivo Balancete.php (listagem parcial) <?php // ... function inicio (Request $request) { $previa=$this->balancete(); $balancete=$previa->balancete; $apuracao=$previa->apuracao; $anterior=$previa->anterior; $receita=$previa->receita; $despesa=$previa->despesa; $resultado=$previa->resultado; $nota=$previa->nota; return view('balanceteView',['balancete'=>$balancete, 'apuracao'=>$apuracao,'anterior'=>$anterior,'despesa'=>$despesa, 'receita'=>$receita,'resultado'=>$resultado,'nota'=>$nota]); } function balancete() { $receita = 0; $despesa = 0; $anterior = 0; $balancete = []; $contas = tbconta::all(); if (!session()->has('dia')) { session(['dia' => date('Y-m-d')]); } $apuracao = apuracao(session('dia')); $primeiroDia = $apuracao->primeiroDia; $ultimoDia = $apuracao->ultimoDia; // Agregações para melhorar a performance $debitosAnteriores = tbdiario::where('dia', '<', $primeiroDia) ->select('contad', \DB::raw('SUM(valor) as debito_anterior')) ->groupBy('contad') ->pluck('debito_anterior', 'contad')->all(); $creditosAnteriores = tbdiario::where('dia', '<', $primeiroDia) ->select('contac', \DB::raw('SUM(valor) as credito_anterior')) ->groupBy('contac') ->pluck('credito_anterior', 'contac')->all(); $debitos = tbdiario::whereBetween('dia', [$primeiroDia, $ultimoDia]) ->select('contad', \DB::raw('SUM(valor) as debito')) ->groupBy('contad') ->pluck('debito', 'contad')->all(); $creditos = tbdiario::whereBetween('dia', [$primeiroDia, $ultimoDia]) ->select('contac', \DB::raw('SUM(valor) as credito')) ->groupBy('contac') ->pluck('credito', 'contac')->all(); $debitosFinais = tbdiario::where('dia', '<=', $ultimoDia) ->select('contad', \DB::raw('SUM(valor) as debito_fim')) ->groupBy('contad') ->pluck('debito_fim', 'contad')->all(); $creditosFinais = tbdiario::where('dia', '<=', $ultimoDia) ->select('contac', \DB::raw('SUM(valor) as credito_fim')) ->groupBy('contac') ->pluck('credito_fim', 'contac')->all(); foreach ($contas as $conta) { $debitoAnterior = isset($debitosAnteriores[$conta->conta]) ? $debitosAnteriores[$conta->conta] : 0; $creditoAnterior = isset($creditosAnteriores[$conta->conta]) ? $creditosAnteriores[$conta->conta] : 0; $inicio = $debitoAnterior - $creditoAnterior; $anterior += $inicio; $debito = isset($debitos[$conta->conta]) ? $debitos[$conta->conta] : 0; $credito = isset($creditos[$conta->conta]) ? $creditos[$conta->conta] : 0; $debitoFim = isset($debitosFinais[$conta->conta]) ? $debitosFinais[$conta->conta] : 0; $creditoFim = isset($creditosFinais[$conta->conta]) ? $creditosFinais[$conta->conta] : 0; $fim = $debitoFim - $creditoFim; if ($conta->conta >= 301 && $conta->conta <= 304) { $receita += $fim; } if ($conta->conta > 304) { $despesa += $fim; } $balancete[] = [ 'conta' => $conta->conta, 'descricao' => $conta->descricao, 'inicio' => $inicio, 'debito' => $debito, 'credito' => $credito, 'fim' => $fim, ]; } $resultado = $receita + $despesa; $nota = ($resultado < 0) ? "Lucro" : "Prejuízo"; $balancete = json_decode(json_encode($balancete)); return json_decode(json_encode([ 'balancete' => $balancete, 'apuracao' => $apuracao, 'anterior' => $anterior, 'despesa' => $despesa, 'receita' => $receita, 'resultado' => $resultado, 'nota' => $nota, ])); } Esse Copilot é fora de série!
  25. Eu uso o VBA for Aplications do Microsoft Access, mas acredito que a solução seja válida no VBA. Ao invés de usar três rotinas, a minha sugestão é usar apenas duas, assim: Option Compare Database Private Sub ListBox1_DblClick(Cancel As Integer) Me.txt_data = ListBox1.Value Call txt_data_Exit(Cancel) End Sub Private Sub txt_data_Exit(Cancel As Integer) If IsDate(txt_data.Value) Then Me.txt_mes.Value = Format(txt_data.Value, "mmmm") Me.txt_ano.Value = Format(txt_data.Value, "yyyy") Else MsgBox "Por favor, insira uma data válida.", vbExclamation Me.txt_mes.Value = "" Me.txt_ano.Value = "" Me.txt_data.Value = "" End If End Sub
×
×
  • Criar Novo...