quarta-feira, 20 de agosto de 2014

Como fazer para saber se existe elemento repetido em um Array

//valida produtos repitidos
        var produtos_repetidos = false;
        var produtos = [];
       
        for (var i = 0; i < e.PaginaCandidatoVariacao.length; i++) {
            produtos.push(e.PaginaCandidatoVariacao[i].IdProduto);
        }

        var produtos_filtrados = produtos.filter(function (este, i) {
            return produtos.indexOf(este) == i;
        });
       
        produtos_repetidos = (produtos_filtrados.length == produtos.length);

        if (!produtos_repetidos) {
            strMensagemErro.push([Candidato.objetosHtml.txtBuscaVariacao.attr("id"), "Existem produtos repetidos."]);
        }
        //valida produtos repitidos

Como fazer um SELECT em um XML no SQL SERVER

Como fazer um SELECT em um XML no SQL SERVER


DECLARE @CodigoReferencia VARCHAR(50),
        @PrecoAnterior    DECIMAL(10,2),
        @PrecoVenda  DECIMAL(10,2),
        @PrecoCusto  DECIMAL(10,2),
        @IdSku  INTEGER,
        @skus AS XML

SET @skus = '<sku>
<CodigoReferencia>519871703</CodigoReferencia>
<PrecoAnterior>161.88</PrecoAnterior>
<PrecoVenda>171.88</PrecoVenda>
</sku>'

DECLARE cursor_xml_sku CURSOR FOR
SELECT
@skus.value('(/sku//CodigoReferencia/node())[1]', 'VARCHAR(50)') as CodigoReferencia,
@skus.value('(/sku//PrecoAnterior/node())[1]', 'DECIMAL(10,2)') as PrecoAnterior,
@skus.value('(/sku//PrecoVenda/node())[1]', 'DECIMAL(10,2)') as PrecoVenda
FROM @skus.nodes('/sku') as ParamValues(VALOR)
-- Abrindo Cursor para leitura - cursor_xml_sku
OPEN cursor_xml_sku

-- Lendo a próxima linha - cursor_xml_sku
FETCH NEXT FROM cursor_xml_sku INTO @CodigoReferencia, @PrecoAnterior, @PrecoVenda

-- Percorrendo linhas do cursor (enquanto houverem) - cursor_xml_sku
WHILE @@FETCH_STATUS = 0
BEGIN

DECLARE cursor_sku CURSOR FOR
    SELECT IdSKU,PrecoCusto FROM Sku WHERE CodigoReferencia = @CodigoReferencia

-- Abrindo Cursor para leitura - cursor_sku
OPEN cursor_sku

-- Lendo a próxima linha - cursor_sku
FETCH NEXT FROM cursor_sku INTO @IdSKU, @PrecoCusto

-- Percorrendo linhas do cursor (enquanto houverem) - cursor_sku
WHILE @@FETCH_STATUS = 0
BEGIN

-- Validações
IF (@PrecoCusto < @PrecoAnterior AND @PrecoCusto < @PrecoVenda)
BEGIN

SELECT @PrecoCusto, @PrecoAnterior, @PrecoVenda, @IdSKU

-- Atualizar Preço de Venda e Preço Anterior
UPDATE Sku
SET PrecoAnterior = @PrecoAnterior,
PrecoVenda = @PrecoVenda
WHERE IdSKU = @IdSku

END

-- Lendo a próxima linha - cursor_sku
FETCH NEXT FROM cursor_sku INTO @IdSKU, @PrecoCusto
END

-- Fechando Cursor para leitura - cursor_sku
CLOSE cursor_sku

-- Desalocando o cursor - cursor_sku
DEALLOCATE cursor_sku

    -- Lendo a próxima linha - cursor_xml_sku
    FETCH NEXT FROM cursor_xml_sku INTO @CodigoReferencia, @PrecoAnterior, @PrecoVenda
END

-- Fechando Cursor para leitura - cursor_xml_sku
CLOSE cursor_xml_sku

-- Desalocando o cursor - cursor_xml_sku
DEALLOCATE cursor_xml_sku