PIVOT nao é suportado no vb.net
-
terça-feira, 24 de abril de 2012 23:31
Boas
podem me dar uma ajuda neste tópico?
por ser um problema no vb.net eu postei no forum vb.net. Mas como tem haver com código sql talvez voces possam dar uma ajuda, modificando o código.
Agradeço desde já ajuda
http://social.msdn.microsoft.com/Forums/pt-BR/vsvbasicpt/thread/e0bf53ef-4019-46b6-8d0b-5e05daf5324f
Visual Basic 2008 Express Edition SQL Server Management Studio flashedr8@gmail.com
Todas as Respostas
-
quarta-feira, 25 de abril de 2012 20:56
pessoal alguém me ajuda neste assunto?
por favor
Visual Basic 2008 Express Edition SQL Server Management Studio flashedr8@gmail.com
-
quarta-feira, 25 de abril de 2012 21:14
A query esta direto no controle?
tenta colocar numa procedure e associar a saida da procedure ao controle...
-
quarta-feira, 25 de abril de 2012 21:23
Essa query está no dataset que vai ser usado para fazer um relatório no report viewer.
O que estou a tentar fazer é arranjar uma solução para não ter que usar o pivot, visto que o vb.net não aceita o pivot.
Entendeu? Acha que existe alternativa no uso do pivot nesse código?
Obrigado pela resposta
Visual Basic 2008 Express Edition SQL Server Management Studio flashedr8@gmail.com
- Editado Jonas São Paulo quarta-feira, 25 de abril de 2012 21:24
-
quarta-feira, 25 de abril de 2012 22:03
Todo nosso sistema é baseado em procedures.
Nao colocamos querys em controles. Temos procedures ate para as querys mais simples.
E os controles do vb.net sao associados as procedures.
Temos varias procedures com comandos com pivot.
Nao ha qualquer problema em usar estas procedures no vb.net.
-
quarta-feira, 25 de abril de 2012 22:07
E como transformo o meu código em procedures?
Mas percebeu onde estou a tentar usar esse código?
Obrigado
WITH CTE AS( SELECT DISTINCT SUBSTRING(nome, 0, 5) AS nome, RIGHT(nome,LEN(nome)-12) as Equipa FROM actividades) -- TESTE PIVOT SELECT NOME, CASE WHEN [A] = 1 THEN 'SIM' END AS [EQUIPA A], CASE WHEN [B] = 1 THEN 'SIM' END AS [EQUIPA B], CASE WHEN [C] = 1 THEN 'SIM' END AS [EQUIPA C], CASE WHEN [F] = 1 THEN 'SIM' END AS [EQUIPA F] FROM (SELECT nome, Equipa FROM CTE) AS SourceTable PIVOT ( COUNT(Equipa) FOR Equipa IN ([A],[B],[C],[F]) ) AS PivotTable1
Visual Basic 2008 Express Edition SQL Server Management Studio flashedr8@gmail.com
-
quarta-feira, 25 de abril de 2012 22:12
Para transformar em procedure basta colocar um:
Create procedure dbo.nomeprocedure
@parametro tipo,
@parametro tipo
as
seu codigo aqui
------------------------------------------------
A procedure voce cria no Management Studio. É melhor.
Nao tenho programado em VB nos ultimos anos e nao tenho como lhe ajudar na associacao do controle a procedure.
-
quarta-feira, 25 de abril de 2012 22:24
Este código é uma consulta.
O objectivo deste código era usa-lo num relatório do vb.net.
Para depois na construção do relatório fosse usar as colunas criadas durante a consulta.
Se calhar o que vou ter que fazer é alterar o código sql para não ter problemas no vb.net.
Acha que é possivel?
obrigado
Visual Basic 2008 Express Edition SQL Server Management Studio flashedr8@gmail.com
-
quarta-feira, 25 de abril de 2012 23:14
Se fizer como te falei, a procedure funcionara como uma consulta.
A saida da procedure sera um resultset identico a query que voce postou acima.
Mas ao inves de colocar a query no controle, voce coloca a procedure.
Faça um teste.
-
quarta-feira, 25 de abril de 2012 23:18
então no dataset do vb.net ia por o seguinte código:
Certo?
Create procedure dbo.teste
@parametro nome,
@parametro equipa
@parametro A
@parametro B
@parametro C
@parametro F
as
WITH CTE AS( SELECT DISTINCT SUBSTRING(nome, 0, 5) AS nome, RIGHT(nome,LEN(nome)-12) as Equipa FROM actividades) -- TESTE PIVOT SELECT NOME, CASE WHEN [A] = 1 THEN 'SIM' END AS [EQUIPA A], CASE WHEN [B] = 1 THEN 'SIM' END AS [EQUIPA B], CASE WHEN [C] = 1 THEN 'SIM' END AS [EQUIPA C], CASE WHEN [F] = 1 THEN 'SIM' END AS [EQUIPA F] FROM (SELECT nome, Equipa FROM CTE) AS SourceTable PIVOT ( COUNT(Equipa) FOR Equipa IN ([A],[B],[C],[F]) ) AS PivotTable1
Visual Basic 2008 Express Edition SQL Server Management Studio flashedr8@gmail.com
-
quarta-feira, 25 de abril de 2012 23:36
Nao.
Voce cria a procedure no banco. Eu crio procedures pelo Manegement Studio do SQL Server 2008.
Apos a procedure ser criada e estar funcionando, voce associa a procedure ao controle. Mas nisto eu nao posso te ajudar. Nao programo em VB.Net.
A procedure é quase isto que voce colocou ai em cima, mas acho que voce nao precisa dos parametros
Create procedure dbo.teste
as
WITH CTE AS(....
-
quarta-feira, 25 de abril de 2012 23:42
Mas não está a dar. E não sei associar esses procedure ao vb.net
Ceilton você pode-me ajudar a alterar o código? Alterar o código sql ser ter que utilizar o pivot?
Pois é o pivot que me está a dar problemas. Se arrnjar uma alternativa ao pivot beleza. Acha que é possivel?
Obrigado
Visual Basic 2008 Express Edition SQL Server Management Studio flashedr8@gmail.com
-
quinta-feira, 26 de abril de 2012 08:55
ola
Preciso da vossa ajuda
Depois de muito googlar não consigo usar o comando pivot no vb.net.
Preciso de alterar o meu código de maneira a não ter que usar o pivot. só assim é que o vou conseguir usar no vb.net.
O código é uma query que faz a pesquisa pelos nomes se estes terminarem em A,B,C ou F ele escreve o nome e na coluna da respectiva letra escreve sim.
O código é este:
Agradeço a vossa ajuda, estou mesmo a precisar de resolver este assunto. Conto com voces.
Obrigado
WITH CTE AS( SELECT DISTINCT SUBSTRING(nome, 0, 5) AS nome, RIGHT(nome,LEN(nome)-12) as Equipa FROM actividades) -- TESTE PIVOT SELECT NOME, CASE WHEN [A] = 1 THEN 'SIM' END AS [EQUIPA A], CASE WHEN [B] = 1 THEN 'SIM' END AS [EQUIPA B], CASE WHEN [C] = 1 THEN 'SIM' END AS [EQUIPA C], CASE WHEN [F] = 1 THEN 'SIM' END AS [EQUIPA F] FROM (SELECT nome, Equipa FROM CTE) AS SourceTable PIVOT ( COUNT(Equipa) FOR Equipa IN ([A],
Visual Basic 2008 Express Edition SQL Server Management Studio flashedr8@gmail.com
- Mesclado Heloisa PiresModerator quarta-feira, 6 de junho de 2012 14:20 mesmo assunto
-
quinta-feira, 26 de abril de 2012 12:07
Bom dia Jonas,
Veja um exemplo de como simular o pivot sem utilizar o comando pivot.
WITH CTE AS( SELECT DISTINCT SUBSTRING(nome, 0, 5) AS nome, RIGHT(nome,LEN(nome)-12) as Equipa FROM actividades) -- PIVOT SQL SERVER 2000 SELECT NOME, [EQUIPA A] = REPLACE(1,COUNT( CASE WHEN Equipa = 'A' THEN EQUIPA END),'SIM'), [EQUIPA B] = REPLACE(1,COUNT( CASE WHEN Equipa = 'B' THEN EQUIPA END),'SIM'), [EQUIPA C] = REPLACE(1,COUNT( CASE WHEN Equipa = 'C' THEN EQUIPA END),'SIM'), [EQUIPA D] = REPLACE(1,COUNT( CASE WHEN Equipa = 'F' THEN EQUIPA END),'SIM') FROM CTE GROUP BY NOME
AdrianoAdriano Nascimento
-
quinta-feira, 26 de abril de 2012 12:17
Bom dia Jonas,
Este post esta duplicado.
Veja o link http://social.msdn.microsoft.com/Forums/pt-BR/520/thread/4b9478a7-2323-4498-bee0-52f90ddbed85
Se possivel exclua um para facilitar na ajuda dos amigos do forum.
Adriano Nascimento
Adriano Nascimento
-
quinta-feira, 26 de abril de 2012 13:09
Adriano funcionou :)
Falta é um pormenor.
No caso do não ter equipa ele escreve "1". COmo faço para se caso não tiver equipa ele escrever nulo?
Tive a tentar mudar mas sem resultado
Obrigado
Visual Basic 2008 Express Edition SQL Server Management Studio flashedr8@gmail.com
-
quinta-feira, 26 de abril de 2012 13:22
Ops, foi mal, errei no Replace.
Veja se o exemplo abaixo te ajuda.
WITH CTE AS( SELECT DISTINCT SUBSTRING(nome, 0, 5) AS nome, RIGHT(nome,LEN(nome)-12) as Equipa FROM actividades) -- PIVOT SQL SERVER 2000 SELECT NOME, [EQUIPA A] = CASE WHEN COUNT( CASE WHEN Equipa = 'A' THEN EQUIPA END) = 1 THEN 'SIM' ELSE NULL END, [EQUIPA B] = CASE WHEN COUNT( CASE WHEN Equipa = 'B' THEN EQUIPA END) = 1 THEN 'SIM' ELSE NULL END, [EQUIPA C] = CASE WHEN COUNT( CASE WHEN Equipa = 'C' THEN EQUIPA END) = 1 THEN 'SIM' ELSE NULL END, [EQUIPA D] = CASE WHEN COUNT( CASE WHEN Equipa = 'D' THEN EQUIPA END) = 1 THEN 'SIM' ELSE NULL END, [EQUIPA F] = CASE WHEN COUNT( CASE WHEN Equipa = 'F' THEN EQUIPA END) = 1 THEN 'SIM' ELSE NULL END FROM CTE GROUP BY NOME
Adriano NascimentoAdriano Nascimento
- Marcado como Resposta Jonas São Paulo quinta-feira, 26 de abril de 2012 13:43
-
quinta-feira, 26 de abril de 2012 13:44
Adriano resultou :)
Muito Obrigado
Adoro voce :)
Com todo a compostura, claro :)
Visual Basic 2008 Express Edition SQL Server Management Studio flashedr8@gmail.com

