Jump to content

GridView + SQL Server


NunoOliveira1977
 Share

Recommended Posts

Boa tarde,

Tenho a seguinte dúvida:

- 2 tabelas SQL Server

rg_alertas rg_alertas_paises

------------------ ----------------------------

cod_alerta <-------------> cod_alerta

patologia pais

medida regiao

como dados nas tabelas, tenho:

rg_alertas

----------------------------------------------------------------

cod_alerta | patologia | medida

-------------------------------------------------------------------

1 | patologia teste 1 | medida teste 1

2 | patologia teste 2 | medida teste 2

rg_alertas_paises

----------------------------------------------------------

cod_alerta | pais | regiao

----------------------------------------------------------

1 | Portugal | Algarve

1 | Espanha | Andaluzia

1 | Italia | Corsega

2 | Roménia | Não definida

Resumindo, cada cod_alerta pode ter 1 ou mais registos associados na tabela rg_alertas_paises.

O que pretendia era colocar esta informação, num gridview, da seguinte forma:

gv_Alertas

-------------------------------------------------------------------------------------------------------------------------

cod_alerta | Pais/Regiao | Patologia | Medida

-------------------------------------------------------------------------------------------------------------------------

1 | Portugal (Algarve), Espanha (Anda | Patologia Teste 1 | Medida Teste 1

| luzia), Italia (Corsega) | |

--------------------------------------------------------------------------------------------------------------------------

2 | Roménia (Não definida) | Patologia Teste 2 | Medida Teste 2

--------------------------------------------------------------------------------------------------------------------------

Alguém me consegue ajudar? Tenho andado às voltas e voltas e não consigo implementar.

Obrigado.

Edited by NunoOliveira1977
Link to comment
Share on other sites

Olá...

A query já está a funcionar. Quando colocar gv.datadource = dr, vai aparecer com este aspeto:

Cod_alerta | Pais/Regiao | Patologia | Medida

--------------------------------------------------------------------------------------------------------------

1 | Portugal (Algarve) | Patologia 1 | Medida 1

1 | Espanha (Andaluzia) | Patologia 1 | Medida 1

1 | Italia (Corsega) | Patologia 1 | Medida 1

Existe alguma possibilidade da gridview ficar com este aspeto?

Cod_alerta | Pais/Regiao | Patologia | Medida

--------------------------------------------------------------------------------------------------------------

1 | Portugal (Algarve), Espanha (Andaluzia), | Patologia 1 | Medida 1

| Italia (Corsega) |

-------------------------------------------------------------------------------------------------------------

Ou seja, ficar tudo apenas numa linha?

Obrigado.

Link to comment
Share on other sites

Ufa! A tua pergunta foi mesmo desafiante! E já aprendi algo novo hoje também. Por isso, os meus agradecimentos. 😉

Consegui replicar o que pretendias com este código SQL:

set nocount on;
declare @rg_alertas table (cod_alerta int, patologia varchar(50), medida varchar(50))
declare @rg_alertas_paises table (cod_alerta int, pais varchar(50), regiao varchar(50))
insert into @rg_alertas VALUES (1,'patologia teste 1','medida teste 1')
insert into @rg_alertas VALUES (2,'patologia teste 2 ','medida teste 2')
insert into @rg_alertas_paises VALUES (1,'Portugal','Algarve')
insert into @rg_alertas_paises VALUES (1,'Espanha','Andaluzia')
insert into @rg_alertas_paises VALUES (1,'Italia','Corsega')
insert into @rg_alertas_paises VALUES (2,'Roménia','Não definida')
set nocount off

SELECT DISTINCT alert1.cod_alerta,
STUFF((select ', ' + paises2.pais + '(' + paises2.regiao + ')'
FROM @rg_alertas AS alert2
INNER JOIN @rg_alertas_paises AS paises2 ON paises2.cod_alerta = alert2.cod_alerta
where alert1.cod_alerta = alert2.cod_alerta
and paises1.cod_alerta = paises2.cod_alerta
order by paises2.cod_alerta
FOR XML PATH('')),1,2,''),
alert1.patologia, alert1.medida
FROM @rg_alertas AS alert1
INNER JOIN @rg_alertas_paises AS paises1 ON paises1.cod_alerta = alert1.cod_alerta

Para ti apenas te interessa a query. Ignora o resto.

Cumps!

Edited by Guest
geshi
Link to comment
Share on other sites

Bom dia,

Dim cmdRegistaPaisesAlerta As New SqlCommand
			cmdRegistaPaisesAlerta.CommandText = "INSERT INTO rg_alertas_paises(cod_alerta,cod_pais,pais,regiao,quem,quando) VALUES (@cod_alerta,@cod_pais,@pais,@regiao,@quem,@quando)"

		'define os parameters do command
			cmdRegistaPaisesAlerta.Parameters.Add("@cod_alerta", SqlDbType.Int)
			cmdRegistaPaisesAlerta.Parameters.Add("@cod_pais", SqlDbType.Int)
			cmdRegistaPaisesAlerta.Parameters.Add("@pais", SqlDbType.NVarChar)
			cmdRegistaPaisesAlerta.Parameters.Add("@regiao", SqlDbType.NVarChar)
			cmdRegistaPaisesAlerta.Parameters.Add("@quem", SqlDbType.NVarChar)
			cmdRegistaPaisesAlerta.Parameters.Add("@quando", SqlDbType.NVarChar)

		cmdRegistaPaisesAlerta.Connection = con

		'atribui os parameters com dados da gv_paises_regioes
		For i As Integer = 0 To gv_paises_regioes.Rows.Count - 1
				cmdRegistaPaisesAlerta.Parameters(0).Value = gv_paises_regioes.Rows(i).Cells(0).Text
				cmdRegistaPaisesAlerta.Parameters(1).Value = gv_paises_regioes.Rows(i).Cells(1).Text
				cmdRegistaPaisesAlerta.Parameters(2).Value = gv_paises_regioes.Rows(i).Cells(2).Text
				cmdRegistaPaisesAlerta.Parameters(3).Value = gv_paises_regioes.Rows(i).Cells(3).Text
				cmdRegistaPaisesAlerta.Parameters(4).Value = gv_paises_regioes.Rows(i).Cells(4).Text
				cmdRegistaPaisesAlerta.Parameters(5).Value = gv_paises_regioes.Rows(i).Cells(5).Text
			cmdRegistaPaisesAlerta.ExecuteNonQuery()
		Next
Edited by apocsantos
geshi
Link to comment
Share on other sites

Olá, bom dia

os campos da tabela são:

cod_alerta - int

cod_pais - int

pais - nvarchar(200)

regiao - nvarchar(100)

quem - nvarchar(100)

quando - nvarchar(100)

E os carateres esquisitos que aparecem, são por exemplo:

Pais - quando faço o insert into com Austrália aparece Austrália

Regiao - quando faço o insert into com Armádelè aparece Armádalè

Para remediar altero manualmente na bd.

Do que será?

Link to comment
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
 Share

×
×
  • Create New...

Important Information

By using this site you accept our Terms of Use and Privacy Policy. We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.