none
Nested DataSet RRS feed

  • Pergunta

  • Fala Pessoal, tudo bem..??

    Pessoal é o seguinte, tenho uma situação e não sei como sair dela.....seguinte:

    Tenho uma tabela no banco com o IDUsuario e Nome do Usuario ( TB_Usuario) uma outra tabela relacionada a esta chamada TB_ProgUsuarios que contém os campos IDPrograma,IDUsuario,Programa. Um usuário pode ter varios programas.

    A questão é, preciso mostrar em um repeater, o usuário e seus programas, como faço para juntar o resultado de duas consultas em um único dataset e mostrar no repeater..? Estou tentanto usar repeater aninhados e tal mas não to conseguindo aninhar os datasets . Alguém sabe coo fazer...????????

    Abs

    quinta-feira, 8 de abril de 2010 12:58

Respostas

  • Isso ocorre pq nem todos os registros da tabela Tb_ProgUsuarios q sua consulta retorna, tem um IDUsuario válido
    • Marcado como Resposta x.programmer quarta-feira, 14 de abril de 2010 01:36
    segunda-feira, 12 de abril de 2010 14:50
  • Isso ocorre porque nem todos os registros da tabela TB_ProgUsuarios que estão sendo lisados no seu select possuem um IDUsuario válido
    • Marcado como Resposta x.programmer quarta-feira, 14 de abril de 2010 01:36
    segunda-feira, 12 de abril de 2010 13:24

Todas as Respostas

  • DataRelation Tran_Detail = new DataRelation("ds", ds.Tables[0].Columns["TransID"], ds.Tables[1].Columns["TransID"]);
    ds.Relations.Add(Tran_Detail);
    ds.Nested = true;
    Esse exemplo a cima retirei desse site http://www.knowdotnet.com/articles/datarelation.html

    Acho que isso resolverá seu problema é só trocar o nome das colunas para o nome das colunas que você quer vincular, mas qualquer coisa pesquisa sobre DataRelation.

    quinta-feira, 8 de abril de 2010 13:37
  • Cara, não funcionou não. Olha meu código:

     

      Dim strSQL As New System.Text.StringBuilder
                Dim strSQLProg As New System.Text.StringBuilder
    
                Dim da As SqlDataAdapter
                Dim daProg As SqlDataAdapter
                Dim ds As DataSet
    
                strSQL.Append("SELECT ")
                strSQL.Append("U.CODUSUARIO AS CODUSUARIO, ")
                strSQL.Append("U.NOME AS NOME, ")
                strSQL.Append("U.APELIDO AS APELIDO, ")
                strSQL.Append("U.EMAIL AS EMAIL, ")
                strSQL.Append("U.FOTO AS FOTO ")
                strSQL.Append("FROM ")
                strSQL.Append("dbo.vwUsuarios AS U ")
                strSQL.Append("WHERE ")
                strSQL.Append("U.INATIVO = 0 ")
                strSQL.Append(" AND U.CODPERFIL = " + usrto.usuarioPerfil.ToString())
                If usrto.codEstado <> 0 Then
                    strSQL.Append(" AND U.CODESTADO = " + usrto.codEstado.ToString())
                End If
                If usrto.codCidade <> 0 Then
                    strSQL.Append(" AND U.CODCIDADE = " + usrto.codCidade.ToString())
                End If
                If usrto.codCidade <> 0 Then
                    strSQL.Append(" AND U.BAIRRO = '" + usrto.Bairro.ToString() + "'")
                End If
    
    
    
                conn.Open()
                ds = New DataSet
                da = New SqlDataAdapter(strSQL.ToString(), conn)
                da.Fill(ds, "user")
    
    
                strSQLProg.Append("SELECT ")
                strSQLProg.Append("P.CODUSUARIO AS CODUSUARIO, ")
                strSQLProg.Append("P.CODPROGRAMA AS CODPROGRAMA, ")
                strSQLProg.Append("P.PROGRAMA AS PROGRAMA, ")
                strSQLProg.Append("'busca_yes.png' AS IMAGEM  ")
                strSQLProg.Append("FROM ")
                strSQLProg.Append("vwHistoricos AS P ")
                strSQLProg.Append("WHERE ")
                strSQLProg.Append("P.CODUSUARIO IS NOT NULL ")
                strSQLProg.Append(" AND P.INATIVO = 0 ")
    
                daProg = New SqlDataAdapter(strSQLProg.ToString(), conn)
                daProg.Fill(ds, "prog")
    
                ds.Relations.Add("myrelation", _
                                 ds.Tables("user").Columns("CODUSUARIO"), _
                                 ds.Tables("prog").Columns("CODUSUARIO"))
    
                Return ds

    Não sei mais o que fazer.....tem como dar um help ai..?

    Abs

    quinta-feira, 8 de abril de 2010 18:58
  • Falou utilizar no final:

    ds.Nested = true

    sexta-feira, 9 de abril de 2010 12:19
  • O Dataset não tem esta opção, pelo menos no framework 3.5.
    segunda-feira, 12 de abril de 2010 00:44
  • Dá uma olhada neste link, veja se te ajuda:

    http://www.dotnetjohn.com/articles.aspx?articleid=63

    segunda-feira, 12 de abril de 2010 10:58
  • Cara, segui  o link que você recomendou ( e muitos outros) mas ocorre o seguinte erro:

     

    "Esta restrição não pode ser ativada porque nem todos os valores possuem valores pai correspondentes."

     

    Você sabe o por que disso..?? Já to ficando desesperado aqui....rsrs

    Abs

    segunda-feira, 12 de abril de 2010 12:31
  • Isso ocorre porque nem todos os registros da tabela TB_ProgUsuarios que estão sendo lisados no seu select possuem um IDUsuario válido
    • Marcado como Resposta x.programmer quarta-feira, 14 de abril de 2010 01:36
    segunda-feira, 12 de abril de 2010 13:24
  • Isso ocorre pq nem todos os registros da tabela Tb_ProgUsuarios q sua consulta retorna, tem um IDUsuario válido
    • Marcado como Resposta x.programmer quarta-feira, 14 de abril de 2010 01:36
    segunda-feira, 12 de abril de 2010 14:50
  • Consegui finalmenteb resolver André, tive de corrigir falhas no meu select,

    Fico Grato pela ajuda.

    Abraços.

    quarta-feira, 14 de abril de 2010 01:36