-
Total de itens
921 -
Registro em
-
Última visita
Tudo que FabianoSouza postou
-
Olá. Se eu fizer um JOIN vai acabar exibindo turmas repetidas.
-
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 + ' '+'<span class=%22icon-aviso fcolor-critico%22 style=%22font-size:18px%22 title=Excesso de 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'
-
Eu possuo a tab TURMA e a EVENTOS (que são as aulas do curso). Estão relacionadas (chave primária da TURMA com chave estrangeira de EVENTOS). Em minha consulta, eu listo as turmas. Até aqui, sem problema. Problema a ser resolvido: Quando uma determinada TURMA não tiver EVENTO associado a ela, a TURMA não aparece no select. Preciso que dados da TURMA sejam exibidos mesmo se não houver evento associado a ela (significa que ainda não há as datas definidas para a realização do curso para aquela turma). Atualmente o código está assim: SELECT TT.id, TT.nome, CTA.nomeFantasia, tmp.previsto AS Previstos, tmp.realizado AS Realizados FROM dbo.tabDeTURMA TT INNER JOIN --esse JOIN é para trazer detalhes da empresa da qual essa turma pertence... dbo.tabDeCliente AS CTA ON TT.codCliente = CTA.contaCod , (SELECT COUNT(*) previsto -- aqui faz o cálculo de percentual que preciso e formata o valor. , SUBSTRING( FORMAT( CAST((SUM(CASE WHEN EVT.dataFinal <= GETDATE() THEN 1 ELSE 0 END) / CAST(COUNT(*) AS NUMERIC (10,3)) *100) AS NUMERIC(10,3)), 'N', 'pt-BR'),1,4) AS 'realizado' , EVT.codTurma FROM dbo.tabDeEventos EVT GROUP BY EVT.codTurma) tmp --aparentemente o problema está no WHERE. Mas se eu remover, gera duplicidades WHERE TT.id = tmp.codTurma
-
Olá @Motta Eu queria evitar a repetição do COUNT apenas para ter melhor desempenho e reutilizar a informação.
-
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)
-
Ops. Encontrei o problema. Podem desconsiderar esse post, por gentileza. Eu não estava linkando o arquivo B corretamente.
-
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'
-
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
-
Agrupar e classificar select por data
FabianoSouza respondeu ao tópico de FabianoSouza em SQL Server
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 -
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?
-
Passar argumentos para function em SQL dinâmico
FabianoSouza respondeu ao tópico de FabianoSouza em SQL Server
@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. -
Sim. Esse seria o erro?
-
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')
-
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) }; })
-
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?
-
Olá pessoal. Eu já utilizo o FOR JSON PATH para retornar o o resultado de uma consulta com JSON. Isso eu já sei fazer. O que preciso é criar uma função que receba um SELECT como parâmetro e retorne o resultado desse SELECT já formatado como JSON. Estou tentando isso, mas sem sucesso. A function dbo.fn_retornaJsonPath : (@String NVARCHAR(MAX)) RETURNS NVARCHAR(MAX) AS BEGIN BEGIN IF @String <> NULL SET @String = (SELECT @String AS jsonPath FOR JSON PATH) END BEGIN IF @String IS NULL SET @String = '[]' END RETURN @String END Forma de executar: SET @sql = 'SELECT ' SET @sql = @sql + ' dbo.fn_retornaJsonPath ((SELECT TT.tema FROM dbo.tabela AS TT WHERE TT.cd = CTT.id)) AS ''temas'' ' SET @sql = @sql + ' FROM dbo.minhaTab AS CTT ' EXEC(@sql) Mas não está rolando....
-
Galera, por padrão, cada LI que se cria (via jscript), vai parar na parte inferior da UL, né? Há uma maneira de fazer a LI criada pela minha function ir para o topo da lista dentro da UL?
-
Muuito obrigado, @tetsuo Era exatamente isso que eu precisava.
-
Aplicar border radius em mouseover numa TR
FabianoSouza postou um tópico no fórum Desenvolvimento frontend
Gente, tenho as TRs da minha tabele já com os cantos arredondados (através das TDs first-child e last-child). Fiz dessa forma porque desconheço uma maneira de aplicar radius diretamente na TR. O problema é que ao colorir a TR com o over do CSS, perde-se a formatação do border radius das TDs e exibe a TR com os cantos quadrados. Preciso que os cantos fiquem arredondados mesmo ao passar o mouse sobre a TR. Como resolvo isso? -
Aplicar border radius em mouseover numa TR
FabianoSouza respondeu ao tópico de FabianoSouza em Desenvolvimento frontend
-
Aplicar border radius em mouseover numa TR
FabianoSouza respondeu ao tópico de FabianoSouza em Desenvolvimento frontend
Oi @Marcos_imasters. Obrigado pela atenção ao meu problema. Eu preciso que as TDs (primeira e última, de cada LINHA) fiquem com os cantos arredondados. Parece que a sua sugestão é para colunas. Eu quero que pareça que cada TR tenha seus cantos arredondados. Como não é possível fazer isso diretamente na TR, preciso que a primeira e a última TD de cada LINHA tenha seus cantos arredondados. Sendo a primeira TD (da cada linha) com o lado esquerdo arredondado, e a última TD (de cada linha) com o lado direito arredondado. -
Preciso corrigir o erro "Somente uma expressão pode ser especificada na lista de seleção quando a subconsulta não é introduzida com EXISTS." da minha consulta. SELECT TA.titulo AS 'Trilha' , (SELECT CAST(ROUND((Comportamental * 100.0) / (Comportamental + Técnico), 2) AS DECIMAL(5,1)) AS Comportamental ,CAST(ROUND((Técnico * 100.0) / (Comportamental + Técnico), 2) AS DECIMAL(5,1)) AS Técnico FROM ( SELECT SUM(CASE WHEN dbo.tabB.enfoque = '1' THEN 1 ELSE 0 END) AS Comportamental, SUM(CASE WHEN dbo.tabB.enfoque = '2' THEN 1 ELSE 0 END) AS Técnico, COUNT(*) AS Total FROM dbo.tabB ) tab ) FROM dbo.tabA AS TA Nessa consulta, preciso trazer o título (da tabA) e o resultado de um cálculo feito na subconsulta, nos campos Comportamental e Técnico.
-
Eu gostaria de contar com a experiência dos colegas para sanar a seguinte dúvida. Estou em dúvida se crio procedures específicas para fazer INSERT e outra para fazer UPDATE no banco, ou se utilizo a mesma procedure para realizar as duas operações. A dúvida é mais em relação a "técnica" ou "metodologia", do que codificação. Penso que ter apenas 01 procedure que pode realizar as duas operações ajuda a manter certo padrão (já que as variáveis seriam as mesmas para as duas operações) e facilita a manutenção. Porém, numa situação de UPDATE eu tenho um parâmetro adicional que é o ID do registro que vou querer atualizar. Na operação de INSERT não existe esse parâmetro (pq o registro ainda não existe no bd). Então seria esse o meu dilema...saber dos colegas, qual abordagem faz mais sentido. Isso é importante porque tenho dezenas de procedures no meu projeto. Não me importo em fazer ajustes em todas, mas queria definir o melhor método (considerando o cenário acima citado) para implementar como padrão. Grato.
-
Preciso: 1) Fazer a renderização de imagem 2) Preciso que essa mesma function retorno algum valor de "status", para eu utilizar pela "function pai". A function funciona, renderiza a imagem quando click num botão. Mas não retorna corretamente o valor da variável msg Ilustrando: Essa seria a function "pai" renderImg(obj), que passa os parâmetros necessários para a function que faz o render. //chamo essa function no click de um botão (e passo parâmetros) renderImg(obj) //************************************************ // renderiza imagem selecionada no computador do usuário function renderImg(e) { var $elemImg = e.alvo , ofile = e.inpfile , reader = new FileReader() , files = e.inpfile.files // FileList object , path = e.path; var msg = '' reader.onload = (function(theFile) { return function(e) { //renderiza prévia da imagem $elemImg.setAttribute('src', e.target.result) var msg = "OK!"; }; }) (files[0]); //Read in the image file as a data URL. reader.readAsDataURL(files[0]); reader.onerror = function(event) { msg = "ERRO" } //Preciso que a variável msg retorno os status de sucesso ou erro. return msg }
-
Olá pessoal. Eu estou procurando por alguma função que trate caracteres especiais, tanto no momento de gravar (insert e update) quanto no momento de exibir (select). Busco uma function que varra a string e faça um "encode" de caracteres como &, #, <, >, ¨, * e outra function que faça um "decode" do que valores "codificados" que estiverem gravados. Valew!