Ir para conteúdo
Fórum Script Brasil

fulvio

Moderadores
  • Total de itens

    1.218
  • Registro em

  • Última visita

Tudo que fulvio postou

  1. rs... de nada. Precisando estamos ai!!
  2. Bom dia Fernandinha, Fiz um exemplo comentado com duas temporárias. Espero que ajude. -- Criação das temporárias create table #TabelaA (DtInicTurma datetime, DtFinalTurma DATETIME) create table #TabelaB (DtRegistro DATETIME) -- Inserção dos dados INSERT INTO #TabelaA VALUES ('2011-08-15 00:00:00.000', '2011-08-24 00:00:00.000') INSERT INTO #TabelaB VALUES ('2011-08-15 00:00:00.000') INSERT INTO #TabelaB VALUES ('2011-08-16 00:00:00.000') INSERT INTO #TabelaB VALUES ('2011-08-17 00:00:00.000') INSERT INTO #TabelaB VALUES ('2011-08-22 00:00:00.000') INSERT INTO #TabelaB VALUES ('2011-08-23 00:00:00.000') INSERT INTO #TabelaB VALUES ('2011-08-24 00:00:00.000') -- Selecionar e executar daqui até o final DECLARE @DataInicial DATETIME DECLARE @DataFinal DATETIME SET @DataInicial = (SELECT DtInicTurma from #TabelaA) SET @DataFinal = (SELECT DtFinalTurma from #TabelaA) WHILE @DataInicial <= @DataFinal BEGIN IF (SELECT top 1 1 FROM #TabelaB WHERE DtRegistro=@DataInicial) IS NULL BEGIN PRINT convert(varchar(10),@DataInicial, 103) END SET @DataInicial = DATEADD (d, 1, @DataInicial) END
  3. Bom dia Aline, A sua sintaxe está bem diferente.... está parecendo mais PL sql..... rs. Mas vamos lá: - alterei a sintaxe da procedure. - Caso os BD´s estejam em um mesmo servidor, tem como fazer a chamada direta a eles. No exemplo que fiz, os BD´s tem q estar no mesmo Servidor. - Se os BD´s não estiverem no mesmo Servidor, terá que criar um Linked Server para acessar as tabelas. - Criei o TRY / CATCH para o controle de erro (se o seu sql for 2000, não conseguirá executar. Somente 2005 ou superior). - Criei a transação TRAN para o bloco de execução. Caso alguma manipulação dê erro, haverá o ROLLBACK da transação (o sql irá desfazer). - Se não houver nenhum erro, no final do script terá o COMMIT, onde será confirmada a execução da transação. OBS.: o comando TRY / CATCH "esconde" o erro ocorrido. Sendo assim, caso queira mostrar ao usuário (por exemplo) que ocorreu um erro na execução, você terá que colocar alguma mensagem de tratamento (no Catch). CREATE PROCEDURE UPDATE_TBCliente @CPF VARCHAR(15), @NOME VARCHAR (100), @SENHA BINARY (255) AS BEGIN BEGIN TRY IF (EXISTS(SELECT CPF FROM TBCliente WHERE (CPF = @CPF))) BEGIN BEGIN TRAN USE DBCliente UPDATE TBCliente SET NOME = @NOME, SENHA = @SENHA WHERE (CPF = C@PF) USE DBVenda UPDATE TBVenda SET NOME = @NOME, SENHA = @SENHA WHERE (CPF = C@PF) USE DBProduto UPDATE TBProduto SET NOME = @NOME, SENHA = @SENHA WHERE (CPF = C@PF) END ELSE BEGIN INSERT INTO TBCliente (CPF, NOME, SENHA) VALUES (@CPF, @NOME, @SENHA) END COMMIT TRAN END TRY BEGIN CATCH ROLLBACK TRAN END CATCH END
  4. fulvio

    (Resolvido) Ajuda Select

    Bom dia hrm, Dei uma olhada na sintaxe e me parece ok... a única coisa que achei um pouco estranho foi o alias utilizado no subselect. Tente trocar o alias do subselect para não dar confusão. O ultimo alias "T0.status" está referenciando a tabela OSCL, e não seria a tabela OCLG T1? O seu subselect: ... not IN (SELECT T1.ClgCode FROM OCLG T1 where T1.AttendUser = 11 and T0.status in (-3)) O que expliquei: ... not IN (SELECT T.ClgCode FROM OCLG T where T.AttendUser = 11 and T.status in (-3))
  5. Boa tarde Aline, A alteração poderá ser realizada utilizando dois updates: um na tabela TBCliente e outro na TBVenda. Mas para garantir a alteração, os dois updates devem estar contidos em uma única transação. Sendo assim, caso dê erro na alteração de algumas das tabelas, o processo é abortado.
  6. Bom dia Power, Segue um exemplo de como pode fazer. Caso não seja isto, posta aí... -- Criar temporária CREATE TABLE #Contas (Id int, conta INT, tipo int) CREATE TABLE #Orcamentos (valor INT, conta int) -- Inserir dados INSERT INTO #Contas VALUES (1, 1, null) INSERT INTO #Orcamentos VALUES (10, 1) INSERT INTO #Orcamentos VALUES (12, 1) INSERT INTO #Orcamentos VALUES (13, 1) INSERT INTO #Contas VALUES (2, 2, null) INSERT INTO #Orcamentos VALUES (5, 2) INSERT INTO #Orcamentos VALUES (20, 2) INSERT INTO #Orcamentos VALUES (35, 2) -- Conferência SELECT * FROM #Contas SELECT * FROM #Orcamentos -- Select SELECT SUM(o.valor), c.Id FROM #Contas c, #Orcamentos o WHERE c.Id=o.conta GROUP BY c.Id
  7. Sempre tento responder as dúvidas, pois quando começei era muito dificil de alguém ajudar.... rs. Compartilhar informações e conhecimentos é o que há. Precisando estamos aí.
  8. Seria assim? DECLARE @DATAVENCIMENTO datetime DECLARE @DATABAIXA DATETIME SET @DATAVENCIMENTO = '2011-07-20' SET @DATABAIXA = '2011-09-01' -- 1º SELECT case WHEN DATEDIFF(DAY,@DATAVENCIMENTO,@DATABAIXA) > 30 THEN 'inadimplente' else 'Ok' END AS VALORPAGO O alias é o "apelido" da coluna. Não tem como você trocar o alias. Coloquei o titulo da coluna como VALORPAGO. Aí dependendo da diferença da data, vai acrescentando "inadimplente" ou "ok".
  9. Bom dia Alessandro, Tem como você fazer de duas formas, mas aí vai depender do resultado que deseja de retorno. Fiz duas variáveis para fazer o exemplo. Caso queira testar, basta alterar as datas das variáveis. - você poderá utilizar o CASE para retornar os dias e, por exemplo, uma mensagem informando se está com atraso ou não. Desta forma, o resultado trará todos os pagamentos. Esse aí seria o 1º select. - Se quiser listar apenas as pessoas que estão em atraso, aí o resultado do alias ATRASO terá que estar depois da cláusula WHERE. Não tem como você criar um alias no select e depois testá-lo no where. Esse aí seria o 2º select. Espero que ajude... DECLARE @DATAVENCIMENTO datetime DECLARE @DATABAIXA DATETIME SET @DATAVENCIMENTO = '2011-07-20' SET @DATABAIXA = '2011-09-01' -- 1º SELECT DATEDIFF(DAY,@DATAVENCIMENTO,@DATABAIXA) AS Dias, case WHEN DATEDIFF(DAY,@DATAVENCIMENTO,@DATABAIXA) > 30 THEN 'Atraso' else 'Ok' END AS ATRASO -- 2º SELECT DATEDIFF(DAY,@DATAVENCIMENTO,@DATABAIXA) AS ATRASO WHERE DATEDIFF(DAY,@DATAVENCIMENTO,@DATABAIXA) > 30
  10. Bom dia Luisi, Aqui no forum tem alguns posts com informações de aplicativos para converção. Se não forem muitos scripts, a melhor opção na minha opinião seria reescrever.
  11. Bom dia Fernandinha, Seu select está teoricamente correto. O problema que estou vendo é na cláusula WHERE. Faça o seguinte: troque o WHERE por AND. Isto fará com que o filtro fique contido no relacionamento entre as tabelas. Assim aparecerá não somente 1, mas 2 registros a mais no resultado. Perceba que: na primeira tabela você tem 9 registros. Na segunda 7 registros. Se fizer um relacionamento utilizando o RIGHT, você terá 9 registros como resultado, e não 8 registros. Faça os testes... SELECT FREQAL.IdFrequenciaPQ, FREQAL.IdMatriculaPQ, FREQAL.StatusFrequencia, FREQ.DtRegistroFrequencia FROM FREQUENCIAALUNO_PQ FREQAL RIGHT JOIN FREQUENCIA_PQ FREQ ON FREQAL.IdFrequenciaPQ = FREQ.Id AND FREQAL.IdMatriculaPQ IN (1200152)
  12. Bom dia Rubiz, As constraints possuem não somente a função de performance, mas também de identificar os relacionamentos entre as tabelas. Se não colocá-las, só você entenderá a estrutura do BD. Ninguém mais conseguirá mexer, pois os relacionamentos e integridades estarão em sua cabeça. Caso alguém precise implementar algo, terá que ler os scripts de consultas. A performance cairá significativamente! Chegará ao ponto de você não conseguir resposta a suas consultas.
  13. fulvio

    Conexão a BD

    Bom dia Oreste, Desculpa pela demora a resposta, mas estava fazendo curso... Dá uma olhada se o arquivo físico do BD está na pasta correta. Caso esteja tudo ok, vá na árvore do Management Studio, clique com o botão direito do mouse em Databases e escolha a opção Attach (depois Add). Dá o refresh na tela.
  14. fulvio

    Conexão a BD

    Bom dia Oreste, você copiou o Banco OSJ para AE utilizando o Wizard? Verifique se o banco está "Attachado".
  15. Bom dia Felipe, Seria isto que deseja? Criei uma temporária e inseri alguns valores para testes: create TABLE #Teste (campo1 INT, campo2 INT, campo3 INT) INSERT INTO #Teste VALUES (5,10,20) INSERT INTO #Teste VALUES (5,10,30) SELECT DISTINCT campo1, campo2 FROM #Teste
  16. fulvio

    Taxa

    Bom dia Ricardo, Tentei fazer uns testes aqui no SQL mas o resultado não foi o mesmo. O estranho que peguei uma explicação sobre juros compostos e o resultado foi igual ao do exemplo. Quando inseri os dados que passou, não obtive o mesmo resultado. Espero que o link e o sql ajude você a resolver: Link com explicação sobre juros composto: http://nacara.com.br/formula-para-calcular-taxa-de-juros/ Script criado para fazer o calculo (o valor de retorno já está em %): DECLARE @Divida DECIMAL (20,6) DECLARE @ValorParcela DECIMAL (20,6) DECLARE @QtdParcela DECIMAL (20,6) DECLARE @Exp DECIMAL (20,6) SET @Divida = 28000 SET @ValorParcela = 735 SET @QtdParcela = 60 SET @Exp = 1 / @QtdParcela SELECT (power (((@ValorParcela * @QtdParcela)/@Divida),@Exp) - 1) * 100
  17. Bom dia Rubiz, A modelagem está diretamente relacionada com o levantamento de requisitos. Sendo assim, o importante é identificar o problema para depois apresentar uma possível solução. No caso: relacionamento entre Usuarios e Notificacoes Se o usuário puder fazer apenas 1 notificação e esta pertencer a apenas 1 usuário, então será 1:1 Se o usuário puder fazer várias notificações e estas pertencerem a apenas 1 usuário, então será 1:N Agora, se você tiver agumas notificações cadastradas e os usuários puderem escolher uma notificação, então será N:M Perceba que a resposta do seu problema será ditada pelas regras que o usuário lhe informar. Para cada caso, a modelagem poderá mudar. No caso: relacionamento entre Usuarios e UsuariosPostagens Esta é pouco mais intuitiva, pois é um pouco dificil 1 postagem ser de vários usuários. Então seria 1:N mesmo. Se continuar com duvida, pode postar!!
  18. fulvio

    ERRO EM CONSULTA

    Boa tarde Nelson, Como que vem o resultado? Vem várias colunas com NULL, ou apenas as colunas (sem linhas), ou apenas uma coluna com NULL?
  19. você está dando "select into", sendo assim a sintaxe retornará erro, mesmo que na cláusula IF você trate isto. O que pode fazer é criar a temporária antes de inserir. Como as tabelas origens são diferentes, a criação da tabela temporária teria que ficar dentro do IF.
  20. Bom dia Fernandinha, Os comandos da sintaxe IF deve vir com o BEGIN e END. Se você não colocar, o sql identificará que apenas a primenra linha logo após o IF estará contida no comando. Ex.: Se a cláusula IF compreender apenas o select, a sintaxe poderá ser escrita desta forma: IF @teste = 1 select 'teste' Se a cláusula IF compreender mais comandos, a sintaxe terá que ser escrita desta forma: IF @teste = 1 Begin select 'teste' select 'teste1' select 'teste2' End
  21. Por nada... qualquer dúvida pode postar!!
  22. Bom dia Davi, A sintaxe de conexão, seus apontamentos, etc, estão todos ok? Dê uma olhada com o pessoal do Forum de .NET.
  23. Verifique as configurações do DNS: http://support.microsoft.com/kb/827422/pt-br Se não der, tente solucionar o problema pelo link: http://support.microsoft.com/kb/328306/pt-br
  24. Bom dia Davi, Vá até o "Painel de Controle" / "Ferramentas Administrativas" / "Fontes de Dados" e verifique se existe já instalado o drive odbc para o sql (native client). Verifique também os protocolos que estão ativos (Pasta "Sql Server" / "Cliente Network Utility") Para os testes, desabilite o Firewall (se for possível).
×
×
  • Criar Novo...