Ir para conteúdo

FabianoSouza

Members
  • Total de itens

    919
  • Registro em

  • Última visita

Reputação

5 Regular

2 Seguidores

Sobre FabianoSouza

Informações Pessoais

  • Sexo
    Masculino

Últimos Visitantes

O bloco dos últimos visitantes está desativado e não está sendo visualizado por outros usuários.

  1. FabianoSouza

    Reutilizar contagem em SELECT

    Olá @Motta Eu queria evitar a repetição do COUNT apenas para ter melhor desempenho e reutilizar a informação.
  2. FabianoSouza

    Reutilizar contagem em SELECT

    Eu preciso exibir duas informações em minha consulta: 1) A quantidade de pessoas inscritas numa turma de treinamento (isso é feito com um simples COUNT) 2) Uma flag de excesso de inscrições na turma. Seria obtido pela comparação entre a quantidade máxima permitida (já existe esse campo) e o COUNT feito acima. Até aqui sem problemas. O que quero é evitar fazer duas contagens (1 para saber a quantidade de inscritos, e outra para gerar a flag de excesso de inscrições). Há uma forma de utilizar UMA contagem para atender as duas necessidades? Meu código está assim: ... --AQUI FAZ A COMPARAÇÃO PARA GERAR A FLAG DE EXCESSO DE INSCRIÇÕES , CASE WHEN (SELECT COUNT(*) FROM dbo.tab AS ITT WHERE ITT.codTurmaDeTreina = T.id) > T.lotacaoMax Then T.nome + '&nbsp;'+'<span class=%22icon-aviso fcolor-critico%22 style=%22font-size:18px%22 title=Excesso&nbsp;de&nbsp;inscrições></span>' --AQUI FAZ A CONTAGEM DE INSCRIÇÕES , (SELECT COUNT(*) FROM dbo.tab AS ITT WHERE ITT.codTurmaDeTreina = T.id) AS 'Inscrições'
  3. FabianoSouza

    Invocar function em arquivo separado

    Ops. Encontrei o problema. Podem desconsiderar esse post, por gentileza. Eu não estava linkando o arquivo B corretamente.
  4. FabianoSouza

    Invocar function em arquivo separado

    Tenho os arquivos de Javascript (.js) A e B. O arquivo A é aonde guardo as functions de uso amplo. O arquivo B é aonde guardo as functions específicas para uma área (páginas) do sistema. Eu tenho uma função genérica chamada criaGrid que monta um gridview (serve a todos os registros do sistema). Mas preciso que ela consiga invocar uma function existente no arquivo B. Vejam. //a var execFn5 é definida com o NOME de uma function //isso funciona se a function a ser executada estiver no arquivo A. //se eu coloca-la em outra arquivo, não funciona. //isso é um trecho da function principal que cria o GRID, que fica no Arquivo A. var execFn5 = window[alvoClick.getAttribute('data-fn')]; if (typeof execFn5 === 'function') { alert('Teste') }; Acho que é um questão de escopo do objeto Window. Eu precisaria fazer o objeto Window executar a function que está em outro arquivo (mas que está devidamente linkado à pagina renderizada pelo browser)
  5. FabianoSouza

    Somar horas

    Possuo a tab TURMAS e EVENTOS. Preciso que o meu select existente, que seleciona registros da tab TURMAS (que faz JOIN com a tab EVENTOS), faça soma de horas dos EVENTOS associados ao item da tab TURMAS. SELECT, Campo1, Campo2, Campo... EVT.dataInicial, EVT.dataFinal FROM tabTURMAS LEFT JOIN tabEventosTreina AS EVT ... Creio que a lógica seria essa: -pegar a diferença entre os campos EVT.dataInicial, EVT.dataFinal -totalizar essas diferenças para todos os eventos que estiverem associados pelo relacionamento de chaves PK e FK que existem. -entregar o resultado dessa operação para cada item da consulta. Com esse código abaixo (de testes), consigo retornar a diferença de horas entre as duas datas. Mas não consigo evoluir. Acredito que precisaria isolar os minutos, somá-los para ver quantas horas totalizam, somar as horas, e por fim, juntar com a soma dos minutos. DECLARE @datainicial datetime, @dataFinal datetime DECLARE @qtde_Dif_Horas VARCHAR(10) SET @datainicial = '2023/16/11 19:00:00' SET @dataFinal = '2023/16/11 22:30:00' (select @qtde_Dif_Horas = CONVERT(varchar(10), @dataFinal - @datainicial, 108)) SELECT @qtde_Dif_Horas AS 'contHoras'
  6. FabianoSouza

    Agrupar e classificar select por data

    Show de bola! Ajustei e ficou perfeito como eu precisava @Motta Muito obirgado!! SELECT ET.nomeEvento AS nome , ET.dataInicial FROM dbo.tab AS ET ORDER BY CASE WHEN ET.dataInicial > GETDATE() Then CONVERT(varchar,ET.dataInicial , 112) ELSE ET.nomeEvento END
  7. FabianoSouza

    Agrupar e classificar select por data

    Possuo uma coluna de data. Eu gostaria que os registros com datas futuras aparecessem no topo do meu select, em relação aos demais registros. Em seguida, gostaria que somente esses registros com datas futuras ficassem em ordem crescente. Algo como João | 16/11/2023 Maria | 17/11/2023 José | 20/11/2023 ----------------------------- (demais registros da base) Antônio | 20/05/2023 Rosa | 15/08/2023 Cida | 15/10/2022 Pedro | 20/05/2021 Paulo | 14/11/2020 O select seria esse. select dbo.formataData(ET.dataInicial) AS 'data' FROM dbo.tab AS ET GROUP BY ET.dataInicial
  8. FabianoSouza

    Passar argumentos para function em SQL dinâmico

    @Motta A mensagem de erro é essa: Mensagem 207, Nível 16, Estado 1, Linha 3 Nome de coluna 'Categoriaindisponívelparaexclusão' inválido. O valor entre apóstrofos seria o valor contido na variável @title, que é o segundo argumento da function. Ou seja, a execução entende que o segundo argumento é uma das colunas do select principal, e como não existe na tabela alvo da consulta, ocorre o erro.
  9. FabianoSouza

    Passar argumentos para function em SQL dinâmico

    Tenho uma function que precisa receber 02 argumentos. Ela funciona se eu aplicar num select qualquer. Mas se eu aplicar num select dinâmico, ocorre erro. Veja trecho do meu select. ... SET @sql = @sql +', dbo.retornaIco_ItemBloq((SELECT COUNT(*) FROM dbo.tab AS TT2 WHERE TT2.codCategTreina = CTT.id),'+@title+') AS ''resp''' ... No caso, o primeiro argumento da function dbo.retornaIco_ItemBloq é um SELECT COUNT. O segundo argumento é uma variável (que está devidamente declarada e definida). O erro ocorre porque ao executar (chamando EXEC(@sql) ), o SQL entende que o segundo argumento é uma coluna da consulta principal, pois existe uma vírgula antes da variável @title (que é o segundo argumento da function). Repito. Se eu aplicar essa function num select normal, funciona normalmente. Porém, preciso que funcione num SQL dinâmico porque é esse é o padrão que estou adotando para o sistema todo. A function dbo.retornaIco_ItemBloq faz o seguinte: 1) Recebe o valor do COUNT e da variável @title 2) Se o COUNT for maior que Zero, cria uma tag HTML (uma SPAN), define sua title com o valor da variável @title e passa para uma variável 3) Retorna o HTML que será exibido no resultado da consulta principal É super simples. Há outra forma de chamar a function?
  10. FabianoSouza

    Fazer count em select FROM OPENJSON

    Sim. Esse seria o erro?
  11. FabianoSouza

    Fazer count em select FROM OPENJSON

    Preciso fazer um count na quantidade de objetos (ou chaves) JSON. Isso deveria funcionar exibindo a quantidade 2. Podem ajudar? DACLARE @strFiltros VARCHAR(1000) SET @strFiltros = '{"objFiltro":[[{"contexto":"candidatos","codFiltro":"0","codCidade":"490","codEstado":"14"},{"contexto":"candidatos","codFiltro":"0","codCidade":"155","codEstado":"14"}]]}' (SELECT COUNT(*) FROM OPENJSON(@strFiltros, '$.objFiltro[0]') WHERE [key] = 'candidatos')
  12. FabianoSouza

    Como manipular valores nesse caso?

    Meu código funciona. O que preciso é fazer uma function, que é invocada pelo método Window, ser executada utilizando argumentos da function "pai". Vejam trecho do meu código. O argumento objDados é um JSON. Nesse JSON há o nome de uma function (na chave objDados.fnTrataResp) que é instanciada no trecho execFn(event). O que preciso é que ao ser instanciada consiga manipular valores do objeto server. É possível? Ao que parece, teria que fazer um lance de injetar o objeto server na function....ou algo nessa linha de raciocínio. server.ajax(objDados, function(){ var execFn = window[objDados.fnTrataResp]; if (typeof execFn === 'function') { execFn(event) }; })
  13. FabianoSouza

    Permitir apenas Inteiro em text box

    Preciso que um campo aceite somente número, e inteiro ao digitar. Eu tenho uma function que funciona. Porém, agora preciso criar o input dinamicamente (via Javascript, createElement e etc..). Aí a function parou de funcionar. Vejam a function: function checkNumPg(evt) { var charCode = (evt.which) ? evt.which : event.keyCode if (charCode > 31 && (charCode < 48 || charCode > 57)) return false; return true; } Antes, eu chamava essa function no evento keypress do text box. ... "onkeypress"="return checkNumPg(evt)".. Agora, como preciso criar o campo dinamicamente, ficou assim: var inpTxtSaltarPg = criaDOM({elem:'INPUT', alvo:dvSaltarPg}) inpTxtSaltarPg.setAttribute('type','TEXT'); inpTxtSaltarPg.classList.add('mini') inpTxtSaltarPg.setAttribute('placeholder','000') inpTxtSaltarPg.setAttribute('id','jump') inpTxtSaltarPg.addEventListener('keypress', function(event) { checkNumPg(event) }) Mesmo chamando "return checkNumPg(event)" no momento de criar o campo pelo DOM, não funciona mais. Podem me ajudar?
  14. FabianoSouza

    Criar LI no topo da UL

    Muuito obrigado, @tetsuo Era exatamente isso que eu precisava.
×

Informação importante

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