Ilano 0 Denunciar post Postado Janeiro 23, 2009 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
rsegovia 0 Denunciar post Postado Janeiro 23, 2009 talvez sejá o .Rows(0) ? Compartilhar este post Link para o post Compartilhar em outros sites
Ilano 0 Denunciar post Postado Janeiro 23, 2009 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
rsegovia 0 Denunciar post Postado Janeiro 23, 2009 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
Ilano 0 Denunciar post Postado Janeiro 23, 2009 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