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 Diego, Este problema possui um padrão? Tipo: apenas o primeiro nome possui separação, os sobrenomes estão todos juntos? Pergunto isto pois provavelmente esta implementação não resolverá o problema. você está pegando strings maiores que 10 caracteres. Mas se o nome for pequeno como Ana, Mara, Joao, José, Maria, etc, há a possibilidade de estarem juntos e seu filtro não identificar. Sem contar que se houver nomes com mais de 10 caracteres, também será listado. Deixando minha opinião de lado e voltando a sua query, acho que deveria colocar o +1 depois do partindex, para o resultado não vir com o espaço em branco no começo da string. Como está pegando maiores que 10, o espaço contará! WHERE len(substring(T01000_S_NOME,patindex('% %',T01000_S_NOME),len(T01000_S_NOME)))>10 WHERE len(substring(T01000_S_NOME,patindex('% %',T01000_S_NOME)+1,len(T01000_S_NOME)))>10 Ou então coloca o rtrim / ltrim para garantir que não haja nenhum espaço no começo e no final da string: WHERE rtrim(ltrim(len(substring(T01000_S_NOME,patindex('% %',T01000_S_NOME),len(T01000_S_NOME)))))>10
  2. Tópico movido para Banco de Dados > Demais Bancos.
  3. Bom dia Fernando, Você está utilizando o Wizard para realizar a importação. Quando faço importações, prefiro utilizar SSIS, pois caso dê erro de execução, há como "debugar". Provavelmente pode ter ocorrido um erro de conversão de dados e a importação não foi realizada. Verifique o seguinte: - Certifique que toda coluna numérica tenha apenas números. - Verifique se existe aspas simples nas strings. - Caso tenha colunas como varchar, altere-as para nvarchar (se tiver char, para nchar). Qualquer dúvida, pode postar.
  4. Bom dia Tiago, você está querendo então uma ordenação própria. Em alguns sistemas, já vi ordenações próprias da seguinte forma: - Cria-se uma coluna "Ordem" (por exemplo) e o próprio usuário identifica, através de números, em qual posição o descritivo aparecerá. O "order by" será por esta coluna. Problemas: - Interessante que todas as linhas estejam enumeradas. - Se forem muitas linhas, fica praticamente impossível a ordenação pelo usuário. Caso sua tabela tenha muitas inserções e esta opção não seja legal, posta aí que a gente procura uma outra coisa...
  5. Boa tarde Fernando, Qual a versão do sql que está utilizando e como está realizando a importação?
  6. Boa tarde Tiago, A ordenação está correta: PAIS122 PAIS2 PAIS3 PAIS4 PAIS5 Apensar do número 122 ser maior que os outros, o order by não o identifica como número, uma vez que o mesmo se encontra em um string. Sendo assim, a ordenação está sendo feita levando em consideração os caracteres. A string PAIS1, alfabeticamente, vem primeiro que as demais. Assim que gostaria que viesse o resultado? PAIS2 PAIS3 PAIS4 PAIS5 PAIS122
  7. Tópico movido para o Fórum Banco de Dados > Demais Bancos
  8. fulvio

    PL/SQL

    Bom dia Rogério, SQL - Structured Query Language ou Linguagem de Consulta Estruturada. PL/SQL - Linguagem Procedural da Oracle. T/SQL (ou transact Sql) - Linguagem Procedural da Microsoft.
  9. Bom dia Amigo, você pode fazer esta inserção utilizando o próprio aplicativo, tomando cuidado com a segurança. Ou então você pode fazer um "linked server". Para fazer a atualização simultânea entre os BD's, pode-se criar uma "trigger" na tabela Produto (banco físico). Sempre quando for manipular os dados, poderá espelhá-lo na outra base. Seria interessante você fazer uma análise do custo/benefício da trigger, pois caso a tabela Produto tenha grande manipulação, perderá em performance. Qualquer dúvida pode postar.
  10. Boa tarde Amigo. Então você possui apenas o valor 334,29 e quer encontrá-lo na Base de Dados pesquisando nela toda? É isso? Bem, se for isso você terá que montar o script. O sql possui a sintaxe Sysobjects* que retorna todos os objetos do banco (não somente tabelas). Na coluna "Xtype", possuirá o tipo de objeto (que fará o filtro para pegar apenas tabelas). A sintaxe SysColumns** retorna as colunas das tabelas. O relacionamento entre as duas será a coluna ID, se não me engano (não possuo o SQL instalado nesta máquina aqui). Faça seu script concatenando o nome das tabelas e suas respectivas colunas, e excute para pesquisar o valor desejado. Para não dar erro de sintaxe, utilize o valor entre aspas simples. Independente se a coluna for número ou caracter. Lembrando que dependendo do tamanho da Base, nunca irá terminar... rs. Caso não consiga fazer o script, posta ai que ajudo você. :.) * select * from Sysobjects ** select * from SysColumns
  11. Boa tarde Amigo. Você tem o valor 334,29. Quer procurá-lo em todas as tabelas do BD? Você tem o nome da coluna?
  12. Bom dia Silvio, Faça os testes na sua Base de Dados. Para a conversão 112 --> YYYY, 12 --> YY. Ex,: select convert(varchar, CAMPODATA, 112) from TABELA select convert(varchar, CAMPODATA, 12) from TABELA No exemplo que passei, tive que retirar 4 campos, pois converti para 4 caracteres do ano. você pode converter para 2 campos do ano e retirar 2 caracteres. :.)
  13. Boa tarde Amigo... select * from TABELA where CAMPODATA > (dateadd (minute, -3, getdate()))
  14. Boa tarde Dara, Dê um clique duplo em cima do nome do Job. No lado esquerdo (janela "Select a page"), clique na opção "Notifications". Dê uma olhada na configuração que está na opção "Write to the Windows Application event log".
  15. Boa tarde Silvio, Nos testes que fiz aqui (do script que passei), o aniversário do mês de agosto foi visualizado... Mas vamos lá: - convert(varchar, data, 112) --> conversão da data para string, no formato yymmdd. - substring(ValorConvertido, 5, 4) --> pega a data convertida e retira o ano, deixando mmdd. - Compara as strings. Nesta comparação, como a estrutura está mmdd, dá para filtrar e ordenar por este campo. Vai rodando assim. Ai você vai olhando como o script está sendo montado: select convert(varchar, getdate(), 112) select substring((convert(varchar, getdate(), 112)), 5, 4) Qualquer dúdida, pode postar. :.) Outra coisa: link da sintaxe convert, com os formatos: http://msdn.microsoft.com/pt-br/library/ms187928.aspx
  16. Boa tarde Dara, Já ouvi falar sobre BCP, mas nunca utilizei. http://msdn.microsoft.com/pt-br/library/ms162802.aspx você está pretendendo automatizar as transferências de dados através de arquivo TXT? Mesmo em redes diferentes, há como realizar a conexão entre as bases, mas implicará em permissões de acesso entre as redes (que compromete a segurança). O Ministério utiliza muito XML para transmitir e receber informações. Cria-se um arquivo XML, os dados são inseridos e é calculado o hash (MD5). Assim você garante que nenhum dado foi corrompido na transferência.
  17. Boa tarde Silvio, Agora sim entendi... rs. Fiz um script de teste com uma temporária. Dá uma olhada se é isto mesmo. :.) Se for, só adaptar com os dados da sua base. -- Criação da tabela temporária create table #Datas (data smalldatetime) -- Inserção das informações insert into #Datas values('1983-01-31') insert into #Datas values('1978-04-07') insert into #Datas values('2002-08-03') insert into #Datas values('1937-02-10') insert into #Datas values('1924-04-01') insert into #Datas values('2001-03-02') -- verifica carga na tabela select * from #Datas -- filtra datas e ordena select substring((convert(varchar, data, 112)), 5, 4) as Ordem, data from #Datas where substring((convert(varchar, data, 112)), 5, 4) >= (substring((convert(varchar, getdate(), 112)), 5, 4)) order by Ordem
  18. Bom dia Silvio, Não estou conseguindo te ajudar, pois não estou entendendo o que está querendo. Faz o seguinte: posta algumas datas de aniversário e depois posta o resultado que deseja. Acho que com um exemplo vai ficar mais fácil de entender. :.)
  19. Boa tarde Dara, Sinceramente não gosto do Wizard pra fazer importações de dados, principalmente do 2005... :.( O arquivo está com todos os dados, mas não há carga na tabela de destino. Provavelmente ocorreu um erro na hora da gravação dos dados na tabela. A tabela é criada, mas os dados não são inseridos. É necessário o SP1 instalado e o SSIS. A maioria dos erros ocorre no "Data Flow Task", quando o Wizard roda. Dê uma olhada também nos caracteres especiais que estão contidos no txt, pois podem dar erro de conversão. Particularmente gosto de utilizar o SSIS diretamente para realizar cargas de dados. Caso ocorra erro, é mais fácil de identificar. Caso seja uma carga mais simples, utilizo o BULK INSERT do SQL: http://msdn.microsoft.com/pt-br/library/ms188365.aspx Espero que ajude. Qualquer dúvida, pode postar.
  20. Boa tarde Silvio, Pegando os aniversários de hoje até daqui a 1 ano: select cliente_aniversario from clientes where cliente_aniversario between getdate() and dateadd (year, 1, getdate())
  21. Bom dia Flávio, Ainda acho que você força o erro. Independente da linguagem, o certo seria a verificação da integridade antes da execução do comando. Falo isto pois já tive problemas de Bases não muito bem estruturadas, onde se fala "tenta deletar e se tiver algum problema, o BD retornará erro". E você pegar uma FK com NOCHECK e detornar o Banco... :.( Se quiser saber a respeito do comando em delphi, posta no Forum Delphi, Kylix que eles te ajudarão!
  22. Bom dia Flávio, No lugar do * não funciona. O sexo deverá ser inserido na cláusula where. Ficaria assim: select C.Nome, C.Endereco, C.Telefone, (Select count(*) From clientes where sexo= : XXX) as Qtde from Clientes C where C.Nome = :Parametro ....
  23. Bom dia Flávio, Para você saber se na tabela Fornecedor há corresponde ao codigo 1 (no exemplo que deu), você terá que realizar a verificação. A maioria das vezes realizo a verificação desta forma: if (select top 1 1 from Produtos where codigo in (select codigo from fornecedores)) = 1 Caso exista uma correspondência, você enviará mensagem ao usuário informando que não poderá realizar a exclusão do Produto, pois existe um fornecedor associado. Lembrando que estas verificações devem estar contidas no fonte, uma vez que a mensagem do SQL é um erro. Mas, caso queira excluir Produtos e excluir também o Fornecedor, você poderá utilizar o "delete cascade". OBS.: esta opção não é muito recomendada. Qualquer dúvida, posta aí!! :.)
  24. Boa tarde Amigo!!! O SQL não consegue executar a procedure e com o resultado "setar" a variável. Desta forma não. O erro de sintaxe EXEC é exatamente por causa disso. O que você pode fazer é colocar uma variável de RETORNO na Procedure. Aí sim você conseguirá setar uma variável externa, que aguarda um retorno da Procedure. Olha se isso resolve. :.) Ex.: -- Criação da Procedure create proc dbo.teste @Data1 datetime, @Data2 datetime, @Campo1 int, @CampoRetorno int OutPut as set @CampoRetorno = '152' ----------- declare @int_qtd_chamados as int exec teste @Data1='2010-01-01 00:00:00', @Data2='2010-01-15 23:59:59', @Campo1='1124', @CampoRetorno=@int_qtd_chamados OutPut --select @int_qtd_chamados if @int_qtd_chamados < 100 begin ... end else begin ... end
  25. Bom dia Fernando, INT vai de -2,147,483,648 até 2,147,483,647. BIGINT vai de -9,223,372,036,854,775,808 até 9,223,372,036,854,775,807. Se o campo for auto increment igual você falou, só depois de 2,147,483,647 linhas inseridas que o SQL irá dar erro. Caso você utilize o campo para gravar outros dados, aí você terá que ver se o intervalo comportará. Qualquer dúvida, posta aí.
×
×
  • Criar Novo...