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 Panda, Nos seus testes, você pega uma tabela de origem e outra de destino (que seria o publicador e o assinante). Os dados do publicador são replicados no assinante sem problemas (de origem para destino). Mas os dados do assinante não são inteiramente replicados... pode ser em decorrência dos dados que foram primeiramente inseridos no assinante (que são os 2000). Para que os dados inseridos no assinante sejam replicados, o assinante terá que ser um publicador também. Tente fazer os testes sem utilizar a identity. Depois acrescente a mesma!! :.) Link de exemplos: http://www.linhadecodigo.com.br/artigo/165...erver-2008.aspx
  2. fulvio

    Importação

    Bom dia Carvalho, O próprio Sql possui a ferramenta de importação / exportação de dados (Wizard), com vários formatos de arquivos. Como o Sql não é apenas um arquivo de dados (como um dbf), o mais importante será a criação da Base em si. O arquivo dbf apenas alimentará a Base.
  3. Boa tarde Webert, Seria alguma coisa do tipo: Select TFILIAL.STRNOME As 'Origem', TRELACAO.LNGRELACAO As 'Rel. Entrega', Convert(VarChar(10),TRELACAO.DTAEMISSAO,103) As 'Emissão', TPESTRAN.STRNOME As 'Motorista', TRELACAO.STRPLACA As 'Placa', Count(DISTINCT(TCTRC.LNGCONTROLE)) As 'Num. de Documentos', Sum(TNF.NUMPESOREAL) As 'Peso Total' From TCTRC WITH(NOLOCK) Inner Join TDOCRELACAO WITH (NOLOCK) On TDOCRELACAO.LNGDOC = TCTRC.LNGCTRC And TDOCRELACAO.LNGPOLOCOLETA = TCTRC.LNGPOLOCOLETA Left Outer Join TRELACAO WITH (NOLOCK) On TDOCRELACAO.LNGRELACAO = TRELACAO.LNGRELACAO And TRELACAO.CHRTIPORELACAO = TDOCRELACAO.CHRTIPORELACAO And TDOCRELACAO.LNGPOLO = TRELACAO.LNGPOLO Inner Join TFILIAL WITH (NOLOCK) On TFILIAL.INTFILIAL = TDOCRELACAO.LNGPOLO Inner Join TPESTRAN WITH (NOLOCK) On TPESTRAN.INTPESTRAN = TRELACAO.INTMOTORISTA Inner Join TNF WITH (NOLOCK) On TNF.CHRTIPO = TDOCRELACAO.CHRTIPO And TNF.LNGDOC = TCTRC.LNGCTRC And TNF.LNGPOLOCOLETA = TCTRC.LNGPOLOCOLETA Where TRELACAO.LNGPOLO = 2 And TRELACAO.LNGRELACAO Is not null And TRELACAO.CHRTIPORELACAO = 'E' And TNF.CHRTIPO = 'C' And TDOCRELACAO.INTSITRELACAO = -1 -- Ok And TRELACAO.DTAEMISSAO >= (SELECT CASE DATEPART(w, GETDATE()) when 2 THEN DATEADD (d, -3, GETDATE()) ELSE DATEADD (d, -1, GETDATE()) END) And TRELACAO.DTAEMISSAO < GETDATE() Group By TFILIAL.STRNOME, TRELACAO.LNGRELACAO, TPESTRAN.STRNOME, TRELACAO.STRPLACA, TRELACAO.DTAEMISSAO Order By TPESTRAN.STRNOME
  4. fulvio

    Senha SQL Lite

    Moverei seu post para "Fórum Script Brasil > Banco de Dados > Demais Bancos"
  5. Boa tarde Webert, Há uma função em que o sql retorna um número para identificar o dia da semana. Aí basta fazer um case para se conseguir o resultado desejado. Ficaria mais ou menos assim (altere a data na atribuilção da variável para fazer os testes): DECLARE @Data DATETIME SET @Data = '2011-02-14' SELECT CASE DATEPART(w, @Data) when 2 THEN DATEADD (d, -3, @Data) ELSE DATEADD (d, -1, @Data) END
  6. fulvio

    Pegar valores do grupo

    Boa tarde Marco, Não entendi bem o seu exemplo, mas um resultado agrupado não tem como ser comparado com outro select (o resultado de subselects pode ser comparado. Bem parecido com o que vez). Creio que o seu exemplo não irá funcionar pois o agrupamento está no mês da data, e o resultset não consta uma referência à esta coluna. A referência a uma tabela declarada no select princiapal, pode ser utilizada no subselect (igual fez). Pensei em algo deste tipo... caso não seja o desejado, poste um exemplo. :.) SELECT DATA from minha_table WHERE EXISTS (select SUM(valor) FROM tabela2 where tabela2.id_tipo = minha_table.id_tipo) group by month(data)
  7. Para fazer qualquer tipo de exportação de um arquivo TXT você terá que ter um delimitador. Seja ele um espaço, virgula, ponto e virgula, dois pontos, etc. Se não houver um caracter específico que faça a delimitação, há como formatar pela quantidade de caracteres (igual ao postado acima: Codigo - 5 caracteres, Nome - 50 caracteres etc). Sendo assim, deverá identificar um formato padrão para que a exportação seja realizada. Caso não haja nenhum tipo de formatação, fica bem mais complicado pois o TXT ficaria bem parecido com uma "sopa de letras". rs.
  8. Moverei seu post para o "Fórum Script Brasil > Sistemas Operacionais > Microsoft Windows"
  9. Ok, entendido... postei o mesmo exemplo, com as adaptações. Vê se é isto: CREATE TABLE #Teste (LAST_LOGON varchar(50), LOGIN_EMAIL varchar(50)) INSERT INTO #Teste VALUES ('FELIPE.MELO','CORPORATE\FELIPE.MELO') INSERT INTO #Teste VALUES ('KELY.KEY','CORPORATE\KELY.KEY') INSERT INTO #Teste VALUES ('VINHO.BRANCO','CORPORATE\VINHO.TINTO') INSERT INTO #Teste VALUES ('ARTHUR.MOTTA','CORPORATE\ARTHUR.MOTTA') INSERT INTO #Teste VALUES ('SERGIO.REIS','WALTER.NEGRAO') SELECT * FROM #Teste WHERE LOGIN_EMAIL IS NOT NULL AND LAST_LOGON IS NOT NULL AND (REPLACE (LOGIN_EMAIL, 'CORPORATE\', '')) <> LAST_LOGON
  10. Boa tarde Amigo, Não sei se entendi o problema... mas vamos lá. Criei um exemplo logo abaixo utilizando uma temporária. Utilizei o comando replace para fazer a comparação. OBS.: vi que no exemplo possuem informações com maiúscula e minuscula. Você terá que identificar a configuração na sua base (collation) se há diferença entre maiúscula e minuscula, ok? Na base que fiz o script, não difere as maiusculas de minusculas. Se na sua base der diferença, poderá utilizar o comando UPPER para colocar todas as letras maiusculas para comparação. :.) Segue exemplo: CREATE TABLE #Teste (LAST_LOGON varchar(50), LOGIN_EMAIL varchar(50)) INSERT INTO #Teste VALUES ('CORPORATE\orlando.nery', 'orlando.nery') INSERT INTO #Teste VALUES ('orlando.nery', 'orlando.nery') SELECT * FROM #Teste WHERE LOGIN_EMAIL IS NOT NULL AND LAST_LOGON IS NOT NULL AND (REPLACE (LAST_LOGON, 'CORPORATE\', '')) = LOGIN_EMAIL
  11. Bom dia Bruk, Aí é só acrescentar o BETWEEN junto a estrutura de exemplo que postei (coloquei sem apenas para facilitar o exemplo).
  12. Pode ser conferido com o banco no ar mesmo. Basta abrir o arquivo de log.
  13. Boa tarde Eder, O mais aconselhável é você pesquisar no Log do Banco, para identificar o que pode ter acorrido. Dê uma olhada também na segurança: Como é acessada as informações? Via internet, intranet? Aplicativos Cliente / Servidor? Quais os usuários têm acesso à Base? Creio que a queda de anergia não impacta a exclusão de dados em uma tabela... Outra coisa é o tamanho do banco. Isto não diz nada, pois a base cresce de Kb em Kb ou em % (depende da configuração). As vezes a manipulação dos dados de sexta pra cá não teve impacto para seu crescimento. O espaço alocado não é desalocado por causa de uma exclusão de dados. A resposta a princípio está no log...
  14. Bom dia Anderson, Postei um exemplo logo abaixo. Seria este o caso? Criei uma tabela temporária e inseri alguns dados para teste. create table #teste (valor int, situacao VARCHAR(100)) INSERT INTO #teste VALUES (100,'Baixada' ) INSERT INTO #teste VALUES (80,'Baixada' ) INSERT INTO #teste VALUES (200,'Não Baixada' ) INSERT INTO #teste VALUES (200,'Não Baixada' ) SELECT sum(valor), situacao FROM #teste WHERE situacao IN ('Baixada', 'Não Baixada') GROUP BY situacao
  15. Bom dia Marcus, é.... pelo que entendi o sql será dinâmico de acordo com a entrada de valores pelo usuário. Aí terá que fazer a montagem do sql também... Postei um exemplo explicativo logo abaixo. Fiz uma tabela temporária com os dados que passou. Coloque o intervalo das semanas e rode. Faça os testes aí.. Espero que ajude!! :.) -- Criação de tabela temporária create table #teste (week INT, valor float) -- Inserção dos dados INSERT INTO #teste VALUES (1 , 43.4213) INSERT INTO #teste VALUES (2 , 54.659) INSERT INTO #teste VALUES (3 , 36.9564) INSERT INTO #teste VALUES (4 , 23.4584) --- Seleciona tudo e roda até o final declare @weekInicial as integer declare @weekFinal as integer declare @SQL as VARCHAR(800) -- Semana inicial do usuário SET @weekInicial = 1 -- Semana Final do usuário SET @weekFinal = 3 Set @SQL = 'select ' WHILE @weekInicial<=@weekFinal BEGIN Set @SQL = @SQL + 'sum(case when week = ' + cast(@weekInicial AS VARCHAR) + ' then valor else null end)' SET @weekInicial = @weekInicial + 1 if @weekInicial<=@weekFinal Set @SQL = @SQL + ',' END Set @SQL = @SQL + ' FROM #teste' EXEC (@SQL)
  16. Q isso... precisando estamos ai!!! :.)
  17. Ok.... pode utilizar o BCP. http://msdn.microsoft.com/pt-br/library/aa337544.aspx
  18. Mas deixa exportar a base apenas via console? Poderá utilizar o Wizard (aí terá que ver se existe esta opção no provedor).
  19. Boa tarde Wafebar, você tem acesso a base que se encontra no Terra? Poderá fazer um backup lá mesmo e restaurar em sua máquina.
  20. fulvio

    Duvida na query

    Bom dia Side, Tente fazer um script mais simples, primeiramente retornando os valores "crus" que necessita. A principio retornar todos os clientes. Depois fazer as somas e agrupamentos. select c.codemp, c.codcli, isnull(v."Qtde Venda",0) from clientes c left join v_gerencial_vendas v on v.codemp = c.codemp and v.codcli = c.codcli where v.datcai > '2010-12-01'
  21. Bom dia Bruk, rs... sem problemas meu Amigo. Pra entender, fiz um exemplo de como poderá resolver seu problema. Criei algumas temporárias, dei carga e fiz o loop. O resultado joguei em outra temporária para conferêcia. Entenda a estrutura e depois é só adaptar às suas necessidades. Retirei o BETWEEN para facilitar o exemplo. Qualquer dúvida, pode postar. :.) -- Criação de tabelas temporárias. Rodar apenas uma vez. CREATE TABLE #Loteria (DEZENA1 int, DEZENA2 int,DEZENA3 int,DEZENA4 int,DEZENA5 int,DEZENA6 INT, DATA datetime) CREATE TABLE #Resultado (DEZENA int, Total int) -- Inserção dos dados na temporária insert into #Loteria values (17, 20, 38, 08, 53, 03, GETDATE()) insert into #Loteria values (26, 21, 39, 05, 18, 59, GETDATE()) insert into #Loteria values (40, 45, 24, 14, 13, 39, GETDATE()) insert into #Loteria values (15, 01, 48, 37, 39, 52, GETDATE()) insert into #Loteria values (22, 42, 49, 08, 12, 09, GETDATE()) -- Rodar o loop para contar DECLARE @Numero INT DECLARE @Resultado INT SET @Numero = 1 WHILE @Numero <= 60 BEGIN SET @Resultado = (SELECT COUNT (*) FROM #LOTERIA WHERE DEZENA1=@Numero OR DEZENA2=@Numero OR DEZENA3=@Numero OR DEZENA4=@Numero OR DEZENA5=@Numero OR DEZENA6=@Numero) INSERT INTO #Resultado VALUES (@Numero, @Resultado) SET @Numero = @Numero + 1 END -- Conferindo os resultados SELECT * FROM #Resultado
  22. Bom dia Bruk, Coloquei o retorno direto (print) apenas para testar e ver o resultado. Aí é só tirar o print e colocar onde quiser.... rs. O BETWEEN vai ficar no loop também? Não entendi o select antes do loop. Fiz umas alterações no seu script. Dê uma olhada: DECLARE @Numero INT DECLARE @Resultado INT SET @Numero = 1 WHILE @Numero <= 60 BEGIN SET @Resultado = (SELECT COUNT (*) FROM LOTERIA WHERE DEZENA1=@Numero OR DEZENA2=@Numero OR DEZENA3=@Numero OR DEZENA4=@Numero OR DEZENA5=@Numero OR DEZENA6=@Numero AND DATA BETWEEN '20101201' AND '20101215') PRINT (@Resultado) SET @Numero = @Numero + 1 END
  23. Bom dia Cintia, A sequência está incorreta por decorrência de uma exclusão, ok? O autoincrement do sql pega sempre o ultimo número utilizado. Não conheço nenhum comando para inserir valores na posição específica. Tem como vc "forçar" o contador do autoincrement com a numeração que quiser. Mas aí o próximo número continuará na sequênciada. Caso queira administrar as posições, pode-se retirar o autoincrement do campo. Aí você terá a autonomia que desejar...
×
×
  • Criar Novo...