
fulvio
Moderadores-
Total de itens
1.218 -
Registro em
-
Última visita
Tudo que fulvio postou
-
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
-
Tópico movido para Banco de Dados > Demais Bancos.
-
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.
-
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...
-
Boa tarde Fernando, Qual a versão do sql que está utilizando e como está realizando a importação?
-
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
-
Tópico movido para o Fórum Banco de Dados > Demais Bancos
-
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.
-
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.
-
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
-
Boa tarde Amigo. Você tem o valor 334,29. Quer procurá-lo em todas as tabelas do BD? Você tem o nome da coluna?
-
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. :.)
-
Boa tarde Amigo... select * from TABELA where CAMPODATA > (dateadd (minute, -3, getdate()))
-
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".
-
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
-
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.
-
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
-
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. :.)
-
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.
-
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())
-
(Resolvido) verificar os relacionamentos criados antes de excluir
pergunta respondeu ao flavioavilela de fulvio em SQL Server
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! -
(Resolvido) contar registros na mesma consulta
pergunta respondeu ao flavioavilela de fulvio em SQL Server
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 .... -
(Resolvido) verificar os relacionamentos criados antes de excluir
pergunta respondeu ao flavioavilela de fulvio em SQL Server
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í!! :.) -
(Resolvido) setar @variavel com resultado de procedure
pergunta respondeu ao fercosmig de fulvio em SQL Server
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 -
(Resolvido) Alterar tamanho do campo da tabela
pergunta respondeu ao fernandomilicia de fulvio em SQL Server
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í.