Ir para conteúdo
Fórum Script Brasil

fulvio

Moderadores
  • Total de itens

    1.218
  • Registro em

  • Última visita

Tudo que fulvio postou

  1. Boa tarde Bruno, Que bom q conseguiu resolver!! Fico feliz. De nada. Precisando estamos ai! :)
  2. Boa tarde Pedro, Seja bem vindo ao Forum!! Se todos os sms´s chegarem neste formato, você poderá utilizar a função SUBSTRING do sql. Com ele conseguirá realizar o insert que precisa.
  3. Boa tarde BrunoC, Seja bem vindo ao Forum!! Vamos ver se entedi o problema: você gostaria de fazer um script em que consiga, em apenas 1 conexão com o banco X (utilizando SAP), acessar os outros bancos de dados em outros servidores. Se for isso, terá que fazer um linked server entre os bancos de dados. você poderá permissionar usuários e tabelas que poderão ser acessadas. Com o linked server, você conseguirá fazer uma conexão com o banco X e resgatar dados de outras bases de dados, em outros servidores. Outra alternativa será implementar um serviço (web service) para isto. Mas a arquitetura será bem diferente... Dê uma olhada nas duas alternativas! Espero ter ajudado.
  4. Boa tarde pjava, Se já tem o script delas, poderá executar direto no Management, tudo de uma vez... Mas como são poucas, vai executando e conferindo o trabalho, pra não ter erros.
  5. Boa tarde Marloncos, Ficamos felizes pelos elogios ao Forum!! :) Fazer a mão é suicídio!!!! rs... Segue um exemplo de como você poderá fazer as alterações. Não há a necessidade de insert, apenas update. Fiz um exemplo para entender como poderá implementar. Ai você adapta as regras de acordo com a sua necessidade. Vi q o número 9 também tem q entrar no começo dos números de celulares. Fiz este filtro também. Se não entender, posta ai... -- criar temporária CREATE TABLE #Tabela (Col1 VARCHAR(15),Col2 VARCHAR(15), Col3 VARCHAR(15)) -- inserir os dados insert into #Tabela values('6244','1141192100','145') insert into #Tabela values('5212','1184592810','340') insert into #Tabela values('5692','1192345814','311') insert into #Tabela values('7924','1368274623','390') -- verificar SELECT * FROM #Tabela -- select de como vai ficar SELECT case WHEN left(col2,2)=11 and substring(col2,3,1) IN (8,9) THEN substring(col2, 1, 2) + '9' + substring(col2, 3, 12) ELSE col2 end Telefone FROM #Tabela -- alterar os dados UPDATE #Tabela SET col2=(substring(col2, 1, 2) + '9' + substring(col2, 3, 12)) WHERE left(col2,2)=11 and substring(col2,3,1) IN (8,9) -- verificar SELECT * FROM #Tabela
  6. Boa tarde Gui, Dá uma pesquisa sobre Integration Services (publicador e assinante). Com ele você poderá implementar esta "idéia". Dê uma estudada boa. Vale a pena. Caso não consiga entender ou tiver alguma dúvida, pode postar aqui!! Outra alternativa seria colocar um nobreak na matriz, com um link de reserva. O ruim que pagará 2 links.... 1 apenas para segurança.
  7. Bom dia Alberto, O CASE está dando erro porque se o RESTO for igual a 1, você tenta colocar um caracter. Mas caso ela seja diferente de 1, você colocará o valor contido na coluna RESTO, q é um inteiro. Segue a alteração do script para retorno do DV=P. Olhe se assim funciona: ALTER FUNCTION [dbo].[Modulo11Base7](@VALOR varchar(60)) RETURNS CHAR(1) AS BEGIN DECLARE @SOMA INT, @CONTADOR INT, @PESO INT, @DIGITO INT, @RETORNO CHAR(1), @BASE INT, @RESTO BIT SET @SOMA = 0 SET @PESO = 2 SET @BASE = 7 SET @RESTO = 0 SET @CONTADOR = Len(@VALOR) LOOP: BEGIN SET @SOMA = @SOMA + (Convert(int, SubString(@VALOR, @CONTADOR, 1)) * @PESO) IF (@PESO < @BASE) SET @PESO = @PESO + 1 ELSE SET @PESO = 2 SET @CONTADOR = @CONTADOR-1 END IF @CONTADOR >= 1 GOTO LOOP IF (@RESTO = 1) BEGIN SET @RETORNO = (@SOMA % 11) END ELSE BEGIN SET @DIGITO = 11 - (@SOMA % 11) IF (@DIGITO NOT IN (9, 10)) SET @RETORNO = @DIGITO IF (@DIGITO = 9) SET @RETORNO = 0 IF (@DIGITO = 10) RETURN 'P' END RETURN @RETORNO END OBS.: alterei o script. Agora está ok.
  8. Bom dia Pjava, Se pretende delimitar por vírgula, tente exportar como TXT. Prefiro sempre txt do que outras extensões. Acho que é mais fácil de manipular os dados. Gosto também de utilizar delimitadores menos simples, como | ou TAB. Para que não tenha problemas ao exportar campos que contenham textos.
  9. Boa tarde Daniel, Seja bem vindo ao Fórum!! Creio que tenha um post mais antigo com estas informações, mas vamos lá: Quando se cria um Banco no SQL, você pode configurar o tamanho inicial do mesmo. você também terá q identificar como será seu "crescimento": seja especificando os MB ou em %. Este tamanho inicial é independente da quantidade de dados que esteja armazenado.
  10. Bom dia Rodrigo, Está correto sua modelagem. Uma dica seria criar uma tabela de preços. Assim conseguiria normalizar a tabela de Registros. Mas dê uma olhada na real necessidade!! Vantagens: - Caso tenha outro serviço / região com o mesmo preço, não haverá a necessidade de "duplicar" valores. - Otimização no armazenamento dos dados. - Criação / alteração de preços.
  11. fulvio

    Ajuda Procedure

    Bom dia Renata, Segue um exemplo de criação de Procedure. Coloquei o pedido como parametro. -- publicar a procedure CREATE PROC dbo.NomeProc (@userpedvendacrm int) AS SELECT @userpedvendacrm -- executar Exec NomeProc 2235
  12. Bom dia Carlos, Sempre quando utilizo as funções de soma, gosto de fazer os scripts passo a passo, ao invés de tentar fazer tudo em apenas 1 script. Dei uma olhada por alto em seu script. O que me chamou a atenção é que está querendo utilizar o filtro por Cliente e Data, mas no seu script a ordenação está apenas por Cliente. Caso não seja isso o desejável, poderá ordernar por vencidos e a vender, e após identificar o resultado correto, acrescentar o filtro por data.
  13. Bom dia Rafael, Acho que entendi o seu problema. Então ai vai uma pergunta..... rs. - Onde você utilizará os dados de dias que o equipamento ficou com 0:00 hs em manutenção? Por que estou perguntando isto: no seu exemplo, se o script estivesse funcionando, no mês de julho iriam ter 31 linhas de retorno. Uma linha para cada dia. Mas os dias que o equipamento ficou em manutenção foram apenas 2 dias. Então o sql processaria 31 linhas de resultado, para trazer 29 linhas com zero e 2 linhas com resultados que interessa. Se fosse implementar, faria o "trabalho pesado" no código fonte, e deixaria a consulta no Banco apenas retornar os dis que houveram realmente a manutenção. Os outros dias, o próprio código colocaria zero. Para separar as datas por hora (como no intervalo de 13/07 a 15/07), terá que testar se a data de início é igual a data de fim. Se for, irá calcular com as horas, senão, terá que calcular as horas até 23:59 hs + 1 hora. Após o calculo, somar 1 dia na data de inicio e realizar novamente o teste.
  14. Bom dia Eduardo, você está utilizando o SQL com o Seven? Tente efetuar a reparação do SQL. Bem provável que o problema esteja relacionado com a instalação. Se não o problema, você encontrará para download na net o SharedManagementObjects. Tente atualizá-lo.
  15. Bom dia Eduardo, Creio que este erro não seja seu, e sim do SSMS. O que poderá fazer: - Renomeie a coluna que está com o datatype INT. - Crie uma nova coluna com datatype CHAR, com o nome da antiga. - Carregue os dados para a coluna nova. - Exclua a coluna antiga.
  16. Bom dia Alberto, Apenas respondendo aqui no Forum, caso alguém tenha a mesma dúvida (pois já conversamos a respeito deste problema por MSN... :) ). No seu exemplo acima, o sql identifica o resultado T1 como um alias. Ele não identifica como uma variável em que pode ser utilizada. Sendo assim, não tem como utilizar diretamente a T1 para fazer outros cálculos. Desta forma, será necessário concatenar a sintaxe para que o resultado seja satisfatório.
  17. Bom dia Fernandinha, você pode refenciar a mesma tabela 2 vezes, fazendo o join entre elas. Ficaria assim: select tab1.Id e tab2.IdPai from TabelaX tab1, TabelaX Tb2 where ....
  18. Boa tarde Márcio, O formato do tipo 20101 não é um formato válido para o Sql. O que pode fazer é um CASE para cada mês. Como o formato é padrão (aaaamm), poderá pegar os 4 primeiros digitos como o ano e os 2 ultimos digitos como mês, usando o case para identificar o relacionamento dos números com seus respectivos meses e anos. Conseguindo separar os registros, basta contar a quantidade de linhas de retorno.
  19. Boa tarde Arnaldo, Uma idéia seria fazer uma temporária para armazenar todos os POST_ID que deseja pesquisar. É praticamente a mesma coisa que fez, mas com a temporária creio que a implementação fique mais fácil de dar manutenção e de entender.... :)
  20. Ok, entendido. Desta forma a sua implementação está correta. A única estrutura que pode ser retirada dos 2 IF´s seria a declaração do cursor, seu fechamento e desalocação. O resto ficaria da mesma forma... Não entendi ao certo o motivo da implementação do cursor. Após a criação, você dá um insert / select. você terá que passar em cada linha do cursor para realizar o insert?
  21. Bom dia Pizero, Infelizmente não conheço nenhum. Encontrará muito na net mesmo, principalmente em inglês.
  22. Bom dia Zephyrus, Seja bem vindo ao Fórum!! Olhei por alto a sua procedure. O que me chamou a atenção foi a criação da temporária com duas tralhas (##). Qual o significado: # - temporária criada e existente apenas na instância criada. Ela existirá enquanto a instância estiver ativa. ## - temporária criada e existente / ativa nas instâncias. Ela existirá enquanto a instância em que foi criada estiver ativa. Creio que o mais aconselhável seria a utilização de 1 tralha somente. Outra forma de implementação mais comum é o teste da existência da tabela com a função IF EXISTS (ao invés da if object_id). Vi também que o script poderá ser otimizado, excluindo as partes que estão duplicadas. Ficaria: USE [Garma] GO /****** Object: StoredProcedure [dbo].[SPED_Layout_19] Script Date: 07/11/2012 22:19:54 ******/ SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GO ALTER Procedure [dbo].[SPED_Layout_19](@Tipo_Arquivo as varchar(255), @Data_Inicial varchar(255), @Data_Final varchar(255) ) as begin if object_id('tempdb.dbo.##TMPLayout19') is not null drop table ##TMPLayout19 create table ##TMPLayout19(linha varchar(MAX)) DECLARE @numnota varchar(10); DECLARE @sequencial int; set @numnota = 0; set @sequencial = 1; DECLARE _cur CURSOR FOR -- NOTAS IF @Tipo_Arquivo = 'E' BEGIN SELECT N.Numnf FROM NFC N WHERE N.Datarec BETWEEN CONVERT(DATETIME,@Data_Inicial,103) AND CONVERT(DATETIME,@Data_Final,103) END IF @Tipo_Arquivo = 'S' BEGIN SELECT N.Nota FROM Notas N WHERE N.Emissao BETWEEN CONVERT(DATETIME,@Data_Inicial,103) AND CONVERT(DATETIME,@Data_Final,103) END OPEN _cur WHILE @@FETCH_STATUS = 0 BEGIN FETCH NEXT FROM _cur into @numnota insert into ##TMPLayout19(linha) (SELECT GIGANTE QUE FUNCIONA RSRS) set @sequencial += 1; END close _cur; DEALLOCATE _cur; END end
  23. Bom dia Pizero, Não sei ao certo se o sql possui uma tabela para os xtypes identificados na tabela SysObjects. O type = 'U' significa que você quer listar todos os objetos criados no banco que sejam do tipo Tabela. O "P" seriam as Procedures e assim por diante (PK chave primária, F chave estrangeira).
  24. Boa tarde Alan, A tabela TMOV não está realizando join com nenhuma das outras tabelas. O sql irá exponenciar o resultado.
  25. Eu criaria uma coluna ID para a PK e não mexeria com chave composta! :) A mesma quantidade de colunas na PK tem que estar na FK.... Agora pense se os códigos das cidades mudassem? Sua PK já era.
×
×
  • Criar Novo...