Ir para conteúdo
Fórum Script Brasil

fulvio

Moderadores
  • Total de itens

    1.218
  • Registro em

  • Última visita

Tudo que fulvio postou

  1. Bom dia Amigo. Em um mesmo script, você pode referenciar a tabela "usuario" duas vezes, ok? Aí você consegue identificar os usuários credores e devedores. Depois basta você fazer os relacionamentos. Ex.: select * from usuario as credito, usuario as debito, conta_corrente as cc where ..... Qualquer dúvida, pode postar!! :.)
  2. fulvio

    Dúvida em Query

    Boa tarde Amigo. É.... questão muito boa esta.... rs. A pesquisa deveria ser realizada utilizando apenas 1 select? Não coloquei as tabelas departamento e divisão. Como o resultado é os empregados de todas as divisões, não achei necessário. Mas basta realizar o join com estas tabelas no script, ok? Coloquei um exemplo do script logo abaixo: Execute o script passo a passo. Coloquei alguns comentários no script. Espero q tire suas dúvidas. :.) -- Criação de temporárias create table #Venc_Emp (matr int, codVencimento int) create table #vencimento (codVencimento int, valor int) create table #Desc_Emp (matr int, codDesconto int) create table #desconto (codDesconto int, valor int) -- Inserção dos dados insert into #Venc_Emp values (13245, 1) insert into #Venc_Emp values (132, 2) insert into #vencimento values (1, 600) insert into #vencimento values (2, 800) insert into #Desc_Emp values (13245, 5) insert into #Desc_Emp values (132, 6) insert into #desconto values (5, 10) insert into #desconto values (6, 30) select * from #Venc_Emp select * from #vencimento select * from #Desc_Emp select * from #desconto -- Soma dos vencimentos e soma dos descontos select sum(v.valor) as Vencimentos, sum(d.valor) as Descontos from #Venc_Emp ve, #vencimento v, #Desc_Emp de, #desconto d where ve.matr=de.matr and ve.codVencimento=v.codVencimento and de.codDesconto=d.codDesconto -- Média dos valores salarias. select (sum(v.valor) - sum(d.valor)) / (select count(matr) from #Venc_Emp) as Media from #Venc_Emp ve, #vencimento v, #Desc_Emp de, #desconto d where ve.matr=de.matr and ve.codVencimento=v.codVencimento and de.codDesconto=d.codDesconto -- Salario dos empregados. select ve.matr, (sum (v.valor) - sum(d.valor)) as Salario from #Venc_Emp ve, #vencimento v, #Desc_Emp de, #desconto d where ve.matr=de.matr and ve.codVencimento=v.codVencimento and de.codDesconto=d.codDesconto group by ve.matr -- Resultado da pesquisa, sendo realizada em um select. -- Peguei o select "Salario dos empregados" e depois do comando having, coloquei o select "Média dos valores salarias" select ve.matr from #Venc_Emp ve, #vencimento v, #Desc_Emp de, #desconto d where ve.matr=de.matr and ve.codVencimento=v.codVencimento and de.codDesconto=d.codDesconto group by ve.matr having (sum (v.valor) - sum(d.valor)) > (select (sum(v.valor) - sum(d.valor)) / (select count(matr) from #Venc_Emp) from #Venc_Emp ve, #vencimento v, #Desc_Emp de, #desconto d where ve.matr=de.matr and ve.codVencimento=v.codVencimento and de.codDesconto=d.codDesconto)
  3. Boa tarde Amigo. você pode retirar caracteres especiais utilizando o comando replace do SQL. Outra coisa muito importante também: você terá q identificar qual o collate q está utilizando... Vou dar um exemplo. Criei uma tabela temporária com dois collates diferentes. -- criação da tabela create table #teste (nome1 varchar(10) collate Latin1_General_CS_AS, nome2 varchar(10) collate Latin1_General_CI_AI) -- inserção dos dados insert into #teste (nome1, nome2) values ('CONCEIÇÃO', 'CONCEIÇÃO') -- utilização do replace select replace(nome1, 'ç', 'c') from #teste select replace(nome2, 'ç', 'c') from #teste Dependendo do collate, você terá q prestar atenção em algumas alterações inesperadas q podem ocorrer (exemplo do segundo select acima). Uma dúvida: será q vale a pena você manipular toda sua base pra retirar estes caracteres? Não seria interessante você fazer um processo de tratamento dos dados, antes de enviar/disponibilizar a NF? Espero ter ajudado. Caso tenha alguma duvida... :.)
  4. Fala Felipe!! Fico feliz por ter conseguido!! :.) É isso mesmo. Agora basta tirar os # das tabelas e colocar os campos certos nas inserções. Estamos ai pra ajudar!! Qualquer coisa q precisar, pode postar!!! rs... Um abraço e até mais.
  5. Boa tarde Felipe. Calma... com calma a gente chega lá!!! rs... Pra exemplificar, decidi gerar os scripts com inserções e manipulações de tabelas temporárias. Vamos por partes... Criação de tabelas temporárias em instância (executar apenas 1 vez): create table #TB_PESSOA (codigo int identity, email varchar(200)) create table #TB_PESSOA_FISICA (codigo int, nome varchar(200)) Criação da Procedure: CREATE procedure SP_TESTE_1_F @ordem char(2), @nome varchar(200), @email varchar(200), -- declaração de variável, com valor default @codigo int = NULL as if (@ordem) = 'i' -- insere um registro begin if exists(select email from #TB_PESSOA where email = @email) begin select 'E-MAIL já CADASTRADO' as email return end else begin insert into #TB_PESSOA (email) values (@email) end end if (@ordem) = 'u' -- Altera um registro begin update #TB_PESSOA set email=@email where codigo = @codigo end if (@ordem) = 'd' --Exclui um registro begin delete from #TB_PESSOA where codigo = @codigo end if (@ordem) = 'if' -- insere um registro begin if exists(select email from #TB_PESSOA where email = @email) begin select 'E-MAIL já EXISTENTE' as email return end else begin begin transaction insert into #TB_PESSOA (email) values (@email) set @codigo = (select max(codigo) from #TB_PESSOA) insert into #TB_PESSOA_FISICA (codigo, nome) values (@codigo, @nome) commit transaction end end Abri uma transação apenas quando a manipulação é realizada nas duas tabelas. Quando a manipulação é realizada em uma tabela, não há necessidade. Fiz as inserções de acordo com a sua lógica: verifica o email da pessoa na tabela TB_PESSOA. Caso não exista, insere nas tabelas TB_PESSOA e TB_PESSOA_FISICA (no ultimo IF). Chamada da Procedure: -- inserção de um registro - aqui você não precisa colocar o @codigo, pois ele possui valor default EXEC SP_TESTE_1_F @ordem = 'i', @nome = 'felipe lima', @email = 'felipe.lima@google.com' select * from #TB_PESSOA select * from #TB_PESSOA_FISICA -- alteração de um registro - ai você coloca o @codigo EXEC SP_TESTE_1_F @ordem = 'u', @nome = 'felipe lima', @email = 'felipe.lima@yyyyyyyy.com.br', @codigo=1 -- aqui você coloca o codigo, de acordo com o registro q deseja alterar. select * from #TB_PESSOA select * from #TB_PESSOA_FISICA -- exclusão de um registro - ai você coloca o @codigo EXEC SP_TESTE_1_F @ordem = 'd', @nome = 'felipe lima', @email = 'felipe.lima@yyyyyyyy.com.br', @codigo=1 -- aqui você coloca o codigo, de acordo com o registro q deseja excluir. select * from #TB_PESSOA select * from #TB_PESSOA_FISICA -- inserção de um registro na tabela #TB_PESSOA_FISICA - aqui você não precisa colocar o @codigo, pois ele possui valor default EXEC SP_TESTE_1_F @ordem = 'if', @nome = 'felipe lima', @email = 'felipe.lima@aaaaaaaaaaaaa.com' select * from #TB_PESSOA select * from #TB_PESSOA_FISICA Faz os testes aí. Caso tenha alguma dúvida, pode postar. Se tiver tudo OK, implemente na sua estrutura!!! :.)
  6. Boa tarde Amigo. Sim, pelo Sql você consegue agendar a execução. Eu acho o Sql 2005 um pouco mais “chato” de criar estas rotinas... :.) Vou explicar pra você mais superficial, pois são muitos detalhes e o melhor seria pegar um tutorial passo a passo Mas vamos lá!! :.) Tenho duas alternativas pra você executar este processo. A primeira q vou colocar é a mais fácil, digamos assim... rs. A segunda é mais complexa, mas vale a pena você dar uma “quebrada de cabeça”, pois conhecerá mais a ferramenta e, caso se depare com uma implementação destas, não assustará!!!! rs. 1ª alternativa (mais fácil): - Criar um pacote de integração de dados (SSIS). No Sql 2000, seria as famosas DTS. No 2005 não existe mais. - Criar uma tabela temporária na Base de Dados, com as informações do arquivo csv. - Executar o pacote SSIS, dando carga na tabela temporária. - Criar o Job com 1step, com um script simples de sql para carga da tabela temporária para principal. OBS.: na explicação da 2ª alternativa, eu vou informando como realizar estes passos... 2ª alternativa: - Criar um pacote de integração de dados (SSIS). No Sql 2000, seria as famosas DTS. No 2005 não existe mais. - Salvar o projeto. - Publicá-lo no servidor. - Criar o Job e agendá-lo para execução. Seria interessante você fazer alguns testes pra ver o processo. Caso tenha alguma dúvida, pegar um tutorial ou postar no fórum mesmo!! :.) Criar um pacote SSIS: - Abrir o “SQL Server Business Intelligence Development Studio”. - Clicar em Arquivo, Novo, Projeto. - Escolher a opção “Integration Services Project”. - Clique na opção Toolbox (às vezes ela fica minimizada na esquerda). - Clique e arraste para a tela principal, o objeto “Data Flow Task”. - Clique duplo no objeto q acabou de arrastar, ou clique na segunda aba – “Data Flow”. - Clique na opção Toolbox novamente, e arraste os objetos “Flat File Source” e “OLE DB Destination” (esse fica lá embaixo). - Clique duplo no objeto “Flat File Source” e faça a configuração (dê uma olhada, é bem intuitivo). - Quando clicar no objeto acima, vai aparecer uma seta verde. Clique nela e arraste até o objeto “OLE DB Destination”. - Clique duplo no objeto “OLE DB Destination” e faça a configuração (configurar a vinculação entre os campos origem e destino). - Salve e está OK. :.) - você pode executar seu projeto na tela mesmo, clicando no botão “Start Debugging”. Crie um arquivo e uma tabela na Base, para fazer os testes. Caso tenha erro, vá a guia “Progress” e identifique o erro. - NESTE PONTO, caso queira gerar uma tabela temporária e inserir os dados do arquivo csv (1ª alternativa). Publicá-lo no servidor: (não precisará fazer na 1ª alternativa) - Na mesma tela q estava, vamos fazer uma configuração. - Clique em “Project”, “Integration Services Project Properties...”. - Na opção “CreateDeploymentUtility”, coloque TRUE. - Digite o caminho no campo “DeploymentOutputPath”. - Após criação, vá a pasta onde foi gravado o arquivo. - Clique duplo no objeto “Integration Services Project.SSISDeploymentManifest”. - O Wizard abrirá. Escolha a opção “SQL Server deployment” e faça as configurações. - Quando tiver concluído, você acabou de publicar seu pacote no servidor. :.) Criar o Job e agendá-lo para execução: - Abrir o “SQL Server Management Studio”. - Abrir o “Object Explorer”. - Clicar com o botão direito do mouse na opção “SQL Server Agent”. Escolher a opção New, Job. - Na primeira que aparece, configurar (atenção para o campo Owner, onde identificará qual login/usuário executará o processo). - Clicar na opção “Steps” (direita, acima). Clicar em “New...”. - No campo Type, escolher “SQL Server Integration Services Package”. (NESTE PONTO, você pode deixar na opção “Transact SQL script” e colocar seu script SQL de leitura da tabela temporária e gravação na principal, na caixa “Command” - que seria a 1ª alternativa - vá para a opção “Schedules”). - No campo Run as , escolher “SQL Agent Service Acount”. - Na opção “Package source”, escolher “SQL Server”. Configurar servidor / login. - Na ultima opção da tela, terá a opção Package. Nela você encontrará seu projeto publicado. Verificar as outras configurações. Clicar em OK. - Clicar na opção “Schedules” (direita, acima). Clicar em “New...”. Nesta tela, você fará a configuração, finalmente, dos dias / horas q o processo executará!!! - Depois de realizar as configurações e dar OK, você poderá executar o JOB manualmente, pra ver se está tudo ok (execução de testes). Clique no nome do job com o botão da direita e selecione a opção “Start Job”. É.... muita coisa mesmo. Mas se conseguir fazer um, os outros serão automáticos!!! Espero q ajude. Não deixe de pesquisar também tutoriais e exemplos com imagens do processo. Qualquer dúvida, estamos ai!!
  7. Bom dia Felipe, O problema está na sintaxe: @codigo = select max(cd_pessoa) from tb_pessoa. A correta: Set @codigo = (select max(cd_pessoa) from tb_pessoa) Olha se dá certo ai... qualquer coisa, pode postar.
  8. Bom dia Amigo. você pode agendar o processo no próprio Sql Sever, através de JOB´s. Qual versão do Sql você utiliza? As interfaces são um pouco diferentes, mas a estrutura será a mesma.
  9. Boa tarde Felipe. Estamos aqui para ajudar!! :.) Vamos lá: - O campo CD_PESSOA é IDENTITY: para resgatar então o identity, basta pegar o maior número do campo CD_PESSOA - select max(cd_pessoa) from TB_PESSOA. OBS.: para q esta implementação seja 100% segura (porque você está pegando o max da tabela cd_pessoa), você tem q garantir q a execução será realizada dentro de uma transação (o que já está ocorrendo). Pegue o valor do campo CD_PESSOA, grave em uma variável e depois a utilize na inserção da tabela TB_PESSOA_FISICA. Em relação ao valor do campo @codigo: - se você precisar do código para alterar ou excluir os registros, você passa o valor do código que está querendo manipular. - Para inserir novo registro, não precisará dele (claro, pois não o terá... rs...). Então na declaração da procedure, coloque-o com valor default (null ou zero, ....). Sintaxe: @codigo int=NULL. Se você não passar nenhum parâmetro na chamada a procedure, ela receberá o valor default. - Caso o campo @codigo não seja útil, retire-o da chamada. Pelo q vi, os IF´s já identificam qual processo realizar. Nesta estrutura, eu não passaria como parâmetro o @codigo. Dê uma olhada nisto também. - Se retirar o campo @codigo, declare-o internamente para manipulação. Ai você atribui o max da tabela CD_PESSOA para ele (depois q realizar o insert nela) e o utiliza pra inserção na tabela TB_PESSOA_FISICA. Bem, acho q é isso. Caso tenha alguma dúvida, pode postar ai!!! Se tiver problemas em realizar a implementação, posta o script. Até mais. :.)
  10. você está utilizando a opção "Windows Authentication"? Tenta alterar para "SQL Server Authentication". Ai você coloca o nome do Servidor, login e senha.
  11. Bom dia Amigo. Tenta declarar o objeto com outro nome na rotina HandleStateChange()...
  12. Bom dia Felipe. Em relação ao seu script: - Na sintaxe IF...ELSE: como sempre depois dos ELSE’s você utiliza a sintaxe IF, creio q não precise dos ELSE´s (retirei do script abaixo). - você falou q realiza manipulação de 2 tabelas: como a tabela TB_PESSOA é a mãe, a inserção deve ser nela primeiramente (no script a inserção está sendo realizada na filha primeiramente). - Sobre a chave “cd_pessoa”: ela é criada quando se realiza a inserção na tabela TB_PESSOA? Caso positivo, a recuperação dela tem q ser realizada depois do insert na tabela TB_PESSOA. você realiza o insert e depois recupera a PK, passando para a tabela TB_PESSOA_FISICA o valor. - Dica: a transação que você abre em cada manipulação “begin transaction”, pode ser aberta no começo da Procedure, pois a procedure manipula apenas as duas tabelas. Alterei o script q postou, retirando os else´s e alterando a ordem nas inserções. Caso não funcione, dê uma olhada no insert da tabela TB_PESSOA: insert into TB_PESSOA (ds_tipo_pessoa, ds_email, dt_cadastro, dt_atualização, fl_bloqueio) values (@tipo, @email, @cadastro, @atualizacao, @bloqueio) - você tem q identificar a PK inserção, caso você passe ela para a Procedure (@CODIGO). Caso a PK seja criada na hora da inserção (auto-incremento), ai você terá q recuperá-la, como explicado acima. Dá uma olhada ai. Caso tenha alguma duvida, posta ai... PROCEDURE SP_TESTE_1 @tipo decimal(10,2), @email varchar(200), @cadastro datetime, @atualizacao datetime, @bloqueio decimal(10,2), @ordem char(1), @nome varchar(200), @cpf numeric(11), @rg varchar(20), @nascimento smalldatetime, @civil varchar(20), @sexo varchar(20), @profissao varchar(45), @codigo integer AS if (@ordem) = 'i' -- insere um registro begin if exists(select ds_email from TB_PESSOA where ds_email = @email) begin select @email = 'E-MAIL já CADASTRADO' return (@email) end else begin select @email = '' begin transaction insert into TB_PESSOA ( ds_tipo_pessoa, ds_email, dt_cadastro, dt_atualização, fl_bloqueio) values ( @tipo, @email, @cadastro, @atualizacao, @bloqueio) -- set @codigo = @@identity end end if (@ordem) = 'u' -- Altera um registro begin select @email = '' begin transaction update TB_PESSOA set ds_tipo_pessoa = @tipo, ds_email = @email, dt_cadastro = @cadastro, dt_atualização = @atualizacao, fl_bloqueio = @bloqueio where ds_email = @email end if (@ordem) = 'd' --Exclui um registro begin select @email = '' begin transaction delete from TB_PESSOA where ds_email = @email end if (@ordem) = 'i_fisica' -- insere um registro begin if exists(select ds_nome from TB_PESSOA_FISICA where ds_nome = @nome) begin select @nome = 'NOME já EXISTENTE' return (@nome) end else begin select @nome = '' begin transaction insert into TB_PESSOA (ds_tipo_pessoa, ds_email, dt_cadastro, dt_atualização, fl_bloqueio) values (@tipo, @email, @cadastro, @atualizacao, @bloqueio) insert into TB_PESSOA_FISICA (cd_pessoa, ds_nome, nr_cpf, ds_rg, dt_nascimento, tp_estado_civil, tp_sexo, tp_profissao) values ( @codigo, @nome, @cpf, @rg, @nascimento, @civil, @sexo, @profissao) -- set @codigo = @@identity end end if @@error <> 0 begin rollback transaction return(1) end else begin commit transaction return(0) end
  13. Bom dia André. No campo "Server name", tenta colocar o nome da sua máquina ou o IP. Quando preciso rodar o sql na máquina local, sempre acesso via IP. Se não der certo, abre o combo do "Server name" e clica na ultima opção "<Browse for more...>". Vai abrir uma tela já na aba "Local Servers". Abra a opção "Database Engine" e vê se aparece o banco. Olha se consegue fazer a conexão assim... :.)
  14. Olá Amigo. A interface ficou ruim mesmo.... :.( Mas não entendi sua duvida: você não sabe o "Server Name"? É o nome do servidor... No Enterprise Management você tem a opção SQL Server Group, que lista os servidores que possui (ou q você inseriu). Pega o nome do servidor ali. Caso não seja esta a sua dúvida, posta ai q tentaremos resolver..
  15. Bom dia Amigo! No select q está querendo fazer, não tem como você colocar os meses faltantes sem q eles não apareçam na tabela onde se encontra as datas... o interessante seria você tratar estar informações no próprio código. você passaria as informações que possuía e no fonte acrescentaria as faltantes. Mas pelo sql dá pra fazer também!!! você terá q criar uma temporária e acrescentar os meses faltantes. Abaixo segue o script. Outra coisa: no script coloquei 12 meses, sem levar em consideração o ano (uma vez q você seleciona apenas o mês). Espero q ajude!!! :.) -- Criação de temporária contendo as datas q passou, com as vendas. create table #teste (Data datetime, Vendas int) -- inserção dos dados insert into #teste (data, vendas) values ('2009-05-01', 200) insert into #teste (data, vendas) values ('2009-05-26', 133) insert into #teste (data, vendas) values ('2009-06-05', 25) insert into #teste (data, vendas) values ('2009-01-30', 13) --select * from #teste -- Resultado esperado, mas apenas com os meses encontrados na tabela. SELECT month(Data), sum(vendas) from #teste group by month(Data) -- Criação de temporária para inserção de todos os meses. Create table #MesesVendas (Mes int, Vendas int) insert into #MesesVendas (Mes, Vendas) SELECT month(Data), sum(vendas) from #teste group by month(Data) -- loop pra preencher os meses com zero. declare @Cont int set @Cont = 1 while @Cont < 13 Begin if @cont not in (select mes from #MesesVendas) insert into #MesesVendas (Mes, Vendas) values (@Cont, 0) Set @Cont = @Cont + 1 End select * from #MesesVendas order by Mes
  16. Bom dia Amigo... Estava dando uma olhada no script, e fiquei com uma dúvida. rs. Entendi o q está querendo fazer, mas quando você utiliza o GROUP BY, o retorno é um agrupamento simples dos campos. A dúvida: Sum(T.Tempo) AS [TT] retorna a soma correta do campo? Fiz um exemplo logo abaixo, pra entender o q estou querendo explicar... -- criação da tabela create table #tmp (ordem int, valor int) -- inserção dos dados insert into #tmp (ordem, valor) values (12345, 3296) insert into #tmp (ordem, valor) values (12345, 3113) -- esse select faz a soma select ordem, sum(valor) from #tmp where ordem=12345 group by ordem -- esse select não faz a soma, pois o campo q possui o valor está na clausula group by select ordem, sum(valor) from #tmp where ordem=12345 group by ordem, valor Dá uma olha no group by. Mas caso a estrutura do GROUP BY não possa ser alterada, pois os dados tem q estar agrupados desta forma, pode utilizar a função COMPUTE. Exemplo: select ordem, valor from #tmp group by ordem, valor COMPUTE SUM(valor) OBS.: roda todos os select´s e dá uma olhada como ficam os resultados. Perceba q no ultimo select, retirei o sum do campo valor, pois senão dá erro... :.) Testa aí e depois me fala. Espero q ajude...
  17. fulvio

    Problema no SQLSMS

    Bom dia Marco. você gostaria de rodar o script de uma vez, ao invés de ir na estrutura das tabelas e realizar as modificações, é isso? Caso seja, abra o Microsoft SQL Server Management Studio 2008. Faça o login no Banco, clique no botão New Query (acima do lado esquerdo), cole o script e depois clique em Execute. Espero q ajude!!! :.)
  18. É.... ai vai ter q fazer duas conversões.... :.) você converte pra data no formato dd/mm/yy (que o 103). O Sql retira os campos de hora/min/seg. Depois você converte novamente pra data, ordenando. Coloquei a alteração logo abaixo. Roda aí e depois me fala se deu certo!!! select distinct convert (Datetime,(convert (varchar,data, 103)), 103) data from ly_agenda where turma = 'CEAHR_N1' and disciplina = '7266-31' and ano = 2009 and semestre = 1 and num_func = '5' order by data Assim também funciona. Mas o resultado virá com o dobro do tamanho. Caso este ponto seja irrelevante no contesto do aplicativo, beleza!!! :.)
  19. Bom dia Rodrigo, Utilizo outra sintaxe para deletar FK... Ao invés de "drop foreign", utilizo "DROP CONSTRAINT". Coloquei um exemplo ai embaixo. Roda passo a passo e vai dando sp_help nas tabelas pra ver a estrutura. -- Criação de tabelas de exemplo create table dbo.tb_teste (cp_unidade int) create table dbo.tb_teste1 (Chave int) -- Inserindo chave primária ALTER TABLE tb_teste ADD Chave INT IDENTITY CONSTRAINT Chave PRIMARY KEY -- Inserindo chave estrangeira ALTER TABLE tb_teste1 ADD CONSTRAINT FK_teste FOREIGN KEY (chave) REFERENCES tb_teste (chave) -- Excluindo chave estrangeira ALTER TABLE tb_teste1 DROP CONSTRAINT FK_teste
  20. Bom dia Rodrigo, Antes de criar a tabela, identifica pro Sql q a tabela será um objeto do BD. Faz um teste ai e depois me fala se deu certo... :.) Coloquei a identificação "dbo." antes do nome da tabela. CREATE TABLE dbo.tblprofessor (codprofessor INTEGER PRIMARY KEY, nome varchar (50), endereco varchar (50), )
  21. Bom dia Amigo, O problema é q o sql realiza a conversão e depois a ordenação. Sendo assim, o sql não ordena como data, mas sim realiza uma ordenação por caracteres... por isso q apenas os dias estão ordenados. Uma duvida: na gravação das datas existe apenas a data, ou tem também hora / min / seg.? Quando você insere apenas a data no campo datetime, o sql completa com 00:00:00. Se este for o seu caso, você pode fazer um distinct sem a conversão, ok? O resultado será ordenado normalmente, e no fonte do seu aplicativo, antes da exibição dos dados, você fará a formatação da data (colocará DD/MM, ou MM/DD, retirará os zeros, etc). Caso a gravação dos dados na base tenha hora / min / seg., ai o distinct não funcionará... :.) Se este for o caso, posta aí q a gente resolve. Espero ter ajudado!!!
  22. Boa tarde Rodrigo, posta a query q está rodando ai... :.)
  23. Boa tarde Amigo... Se você tiver, pode utilizar a própria ferramenta do SQL , o "SQL Server Business Intelligence Development Studio". Passos: - Abra-o. - Clique em File / New / Project. - Selecione Integration Services Project. - Do lado esquerdo, você verá uma listagem: Toolbox. Se não aparecer, procure no menu de icones. - Arraste o objeto Data Flow Task para a janela Control Flow. - Dê um clique duplo no objeto, ou clique na janela Data Flow. - Vá no tollbox novamente e arraste o objeto Excel Source. - Dê um clique duplo no objeto. Após abrir, clique em New e procure seu arquivo xls. Na tela, você terá algumas opções de configurações, visão dos dados, seleção de planilha, etc... dá uma navegada... A tela é bem intuitiva. - Depois clique em OK. - Arraste o objeto OLE DB Destination, localizado no Toolbox. - Clique no objeto Excel Source. você verá duas setas (verde e vermelha). Ligue a seta verde no objeto q acabou de arrastar. - Dê um clique duplo no objeto OLE DB Destination. Configure os dados do seu Banco de Dados: nome, login, senha, etc.... você também terá ai, umas opções de configurações, visão dos dados, mapeamento, seleção de tabela, etc. você terá que ligar os campos origem / destino. A tela é bem intuitiva. - Depois clique em OK. - Se tiver alguma coisa de errado, o próprio aplicativo colocará uma bolinha vermelha com um X, informando o q está de errado. - Caso contrário, é só clicar no Start Debugging (seta Play). - você verá o andamento da carga sendo realizada na tabela do BD. Caso tenha alguma dúvida, pode postar ai q a gente resolver!! rs... Espero ter ajudado. :.) Ahm... outra coisa q esqueci de falar... Crie uma tabela (auxiliar) com todos os dados do xls. Depois você faz as verificações necessárias, alterando ou inserindo as informações na tabela principal.
  24. Ola Hellyson... beleza. Fico feliz por ter ajudado!!! Precisando é só falar. :.)
  25. Bom dia André, Sinceramente não sei o porque disto. Provavelmente o objeto possui alguma particularidade... outra coisa é q você testa o estado do objeto. Se o seu estado ficar mudando diretamente, podemos explicar o porque da DTS não retornar sucesso e travar. O teste q pode fazer é alterar o "objXmlHttp.onreadystatechange", e retirar o DTSTaskGlobalVariables. Se chegar a alguma conclusão, posta aí pra gente saber também!!! :.) Até mais.
×
×
  • Criar Novo...