
fulvio
Moderadores-
Total de itens
1.218 -
Registro em
-
Última visita
Tudo que fulvio postou
-
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!! :.)
-
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)
-
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... :.)
-
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.
-
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!!! :.)
-
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!!
-
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.
-
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.
-
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. :.)
-
você está utilizando a opção "Windows Authentication"? Tenta alterar para "SQL Server Authentication". Ai você coloca o nome do Servidor, login e senha.
-
Task não retorna sucesso quando se utiliza objeto Msxml2.XMLHttp
pergunta respondeu ao andrevgm de fulvio em SQL Server
Bom dia Amigo. Tenta declarar o objeto com outro nome na rotina HandleStateChange()... -
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
-
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... :.)
-
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..
-
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
-
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...
-
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!!! :.)
-
É.... 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!!! :.)
-
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
-
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), )
-
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!!!
-
Boa tarde Rodrigo, posta a query q está rodando ai... :.)
-
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.
-
Ola Hellyson... beleza. Fico feliz por ter ajudado!!! Precisando é só falar. :.)
-
Task não retorna sucesso quando se utiliza objeto Msxml2.XMLHttp
pergunta respondeu ao andrevgm de fulvio em SQL Server
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.