Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Ilano

[Resolvido] O q está errado neste código?

Recommended Posts

Olá pessoal,

 

Estou tentando fazer o seguinte procedimento:

 

Cadastrar um curso e vinculá-lo, em outra tabela, às Unidades já cadastradas. Para isso precisarei criar um loop, só q o código abaixo só está fazendo isso com a primeira linha

 

 

Private Sub VincularCursosUnidades()

Dim Ds, Ds2 As Data.DataSet

Dim Grid As New WebControls.DataGrid

Dim Gi As DataGridItem

 

 

'Consulto o curso recém-cadastrado.

Ds = Cursos.Consultar(" Cur_Nome = '" & Trim(UCase(TxtNome.Text)) & "' AND Area_Codigo = " & DDLAreas.SelectedValue)

 

 

'Consulto todas as unidades

Ds2 = Unidades.Consultar("")

Grid.DataSource = Ds2

Grid.DataBind()

 

 

'Verifico se o DataSource está preenchido

If Not Ds2 Is Nothing Then

If Ds2.Tables(0).Rows.Count > 0 Then

 

'Entro no Loop para fazer os inserts

For Each Gi In Grid.Items

With Grid

With CursoUnidade

.Codigo = 0

.Curso = Ds.Tables(0).Rows(0)("Cur_Codigo")

.Unidade = Ds2.Tables(0).Rows(0)("Ud_Codigo")

.Ativo = "S"

End With

CursoUnidade.Inserir()

End With

Next

 

End If

End If

 

End Sub

 

Grato,

 

Ilano.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Olá rsegovia,

 

Mudei o código para esse:

 

I = 0

If Not Ds2 Is Nothing Then

If Ds2.Tables(0).Rows.Count > 0 Then

For Each Gi In Grid.Items

With Grid

With CursoUnidade

.Codigo = 0

.Curso = Ds.Tables(0).Rows(0)("Cur_Codigo")

.Unidade = Ds2.Tables(0).Rows(I)("Ud_Codigo")

.Ativo = "S"

End With

CursoUnidade.Inserir()

I = Ds2.Tables(0).Rows(I)("Ud_Codigo") + 1

End With

Next

End If

O problema é: e se uma unidade tiver sido excluída e ficando um furo na chave primária? Ocorrerá um erro. E agora, como resolver???

Compartilhar este post


Link para o post
Compartilhar em outros sites

Vamos ver se eu entendi.

 

Você tem um dataset e precisa percorrer esse dataset, e, atravez dos dados dele preencher um outro campo / fazer uma ação.

 

se for isso, faça um for dentro do dataset mesmo

 

for (int i = 0; i < Ds.Tables[0].Rows.Count; i++)
{
			  DataRow dr;
			  dr = Ds.Tables[0].Rows[i];
			  campo = dr["campo"];
}

acho q fica mto mais facil...

 

Abraços

Compartilhar este post


Link para o post
Compartilhar em outros sites

Valeu rsegovia! http://forum.imasters.com.br/public/style_emoticons/default/joia.gif

 

Funcionou!!!! Aí está o código completo para quem precisar:

 

Private Sub VincularCursosUnidades()

Dim Ds, Ds2 As Data.DataSet

Dim Grid As New WebControls.DataGrid

Dim dr As Data.DataRow

 

'Consulto o curso

Ds = Cursos.Consultar(" Cur_Nome = '" & Trim(UCase(TxtNome.Text)) & "' AND Area_Codigo = " & DDLAreas.SelectedValue)

 

'Listo todas as unidades cadastradas

Ds2 = Unidades.Consultar("")

Grid.DataSource = Ds2

Grid.DataBind()

 

If Not Ds2 Is Nothing Then

If Ds2.Tables(0).Rows.Count > 0 Then

'Entro no Loop

For I As Integer = 0 To Ds2.Tables(0).Rows.Count - 1

With Grid

With CursoUnidade

dr = Ds2.Tables(0).Rows(I)

.Codigo = 0

.Curso = Ds.Tables(0).Rows(0)("Cur_Codigo")

.Unidade = dr("Ud_Codigo")

.Ativo = "S"

End With

CursoUnidade.Inserir()

End With

Next

End If

End If

 

End Sub

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.