Ajuda - Busca - Membros - Calendário
Versão Completa: Preencher dataset com table
Fórum Script Brasil > Programação & Desenvolvimento > .NET
Gafanhoto
Achei milhares de exemplo na internet, mas não consegui encaixar na minha aplicação.

Eu tenho o esse código:

CODE
Function BindingSource() As DataSet

        'Criando o Dataset
        Dim myDataSet As New DataSet("indexadores")

        'Criando a tabela
        Dim tblUsuario As New DataTable("indexadoresFederal")

        myDataSet.Tables.Add(tblUsuario)

        tblUsuario.Columns.Add("cod", GetType(Integer))
        tblUsuario.Columns.Add("categoria", GetType(String))
        tblUsuario.Columns.Add("nome", GetType(String))
        tblUsuario.Columns.Add("telefone", GetType(String))
        tblUsuario.Columns.Add("data", GetType(Date))
        tblUsuario.Columns.Add("link", GetType(String))

        'Criando Registros
        Dim dtrUsuario As DataRow

        Dim enc As New encrypt

        '''''''''''''''''''''''''''''''''''''''''''

        dtrUsuario = tblUsuario.NewRow
        tblUsuario.Rows.Add(dtrUsuario)

        dtrUsuario.Item("cod") = 1
        dtrUsuario.Item("categoria") = "Escritório"
        dtrUsuario.Item("nome") = "João da Silva"
        dtrUsuario.Item("telefone") = enc.Encrypt("99795641", "guilherme")
        dtrUsuario.Item("data") = Date.Today
        dtrUsuario.Item("link") = "1"

        dtrUsuario = tblUsuario.NewRow
        tblUsuario.Rows.Add(dtrUsuario)

        dtrUsuario.Item("cod") = 2
        dtrUsuario.Item("categoria") = "Cliente"
        dtrUsuario.Item("nome") = "Joaquim Bragança"
        dtrUsuario.Item("telefone") = enc.Encrypt("99657691", "guilherme")
        dtrUsuario.Item("data") = Date.Today
        dtrUsuario.Item("link") = "2"

        dtrUsuario = tblUsuario.NewRow
        tblUsuario.Rows.Add(dtrUsuario)

        dtrUsuario.Item("cod") = 3
        dtrUsuario.Item("categoria") = "Cliente"
        dtrUsuario.Item("nome") = "Gisele Falcão"
        dtrUsuario.Item("telefone") = enc.Encrypt("34515346", "guilherme")
        dtrUsuario.Item("data") = Date.Today
        dtrUsuario.Item("link") = "3"

        dtrUsuario = tblUsuario.NewRow
        tblUsuario.Rows.Add(dtrUsuario)

        dtrUsuario.Item("cod") = 4
        dtrUsuario.Item("categoria") = "Escritório"
        dtrUsuario.Item("nome") = "Joana Salazar"
        dtrUsuario.Item("telefone") = enc.Encrypt("33730000", "guilherme")
        dtrUsuario.Item("data") = Date.Today
        dtrUsuario.Item("link") = "4"

        'Retornando DataSet
        Return myDataSet


Ele tá criando a tabela e tá fungando beleza com minha function pra encriptar.

Como eu faço pra pegar esse código e ao invés de gerar uma tabela, preencher com uma table do SQL Server e em determinada coluna usar minha função encrypt?

A estrutura da table que quero pegar é:

idTabela INTEGER
nomeTabela VARCHAR
link VARCHAR ( É nessa que quero usar a função )
quintelab
Ou você cria um método que percorre todas as linhas do DataTable e gera o insert dinamicamente, ou terá que fazer os insert.

Abraços...
Gafanhoto
Mas não é insert. No exemplo tá o INSERT, mas eu quero dar um SELECT, e dando um encrypt em um dos campos.
Gafanhoto
Olha só... essa function tá fungando. Como eu faço pra colocar minha função ENCRYPT no campo link?

ela funciona colocando encrypt ("STRING","guilherme"), no caso seria encrypt(link,"guilherme")

CODE
Function dataset() As DataSet

        Dim enc As New encrypt()

        Dim strConn As String = "Data Source=TI;Initial Catalog=lefisc;Integrated Security=True"
        Dim strSQL As String = "SELECT idTabela, nomeTabela, link FROM indexadoresFederais"
        Dim da As New SqlDataAdapter(strSQL, strConn)

        Dim ds As New DataSet()
        da.Fill(ds, "indexadoresFederais")

        Return ds

    End Function



Até tentei usar um

Dim strSQL As String = "SELECT idTabela, nomeTabela, " + encrypt(+"link," + "guilherme") + " FROM indexadoresFederais"

mas não fungou
quintelab
Depois que executar o select você terá que percorrer todos os itens do seu DataSet para utilizar sua função. Pode usar um for ou foreach.

Abraços...
Gafanhoto
Desculpa a minha ignorância, mas só consegui fazer com uma SUB, e uma SUB não retorna nada.
Só consigo encriptar os dados e retornar em uma msgbox.

Como eu faço pra transformar essa sub abaixo em uma function que vai me retornar um dataset abastecido com o campo LINK encriptado?

CODE
Private Sub CarregaDados()

        Dim enc As New encrypt

        Dim conn As New SqlConnection()
        Dim DR As SqlDataReader

        conn.ConnectionString = "Data Source=TI;Initial Catalog=lefisc;Integrated Security=True"
        Dim cmd As SqlCommand = conn.CreateCommand

        cmd.CommandText = "SELECT idTabela, nomeTabela, link FROM indexadoresFederais"
        conn.Open()

        DR = cmd.ExecuteReader()

        While DR.Read
            MsgBox(enc.Encrypt(DR.Item(0), "guilherme"))
        End While

        dr.Close()
        conn.Close()

    End Sub
quintelab
Faz tempo que não mexo com vb, se não me engano basta trocar Sub por Function e depois do CarregaDados() colocar as String.

Abraços...
Gafanhoto
Olha só... consegui fazer funcionar beleza o código acima.

Mas quero tratar um dos campos em tempo de execução. Até olhei um artigo teu quintelab, bem antigo já aqui da script brasil mesmo.
http://scriptbrasil.com.br/forum/index.php?showtopic=132091

To fazendo assim:

CODE
Protected Sub GridView1_RowDataBound(ByVal sender As Object, ByVal e As System.Web.UI.WebControls.GridViewRowEventArgs) Handles GridView1.RowDataBound

        Dim enc As New encrypt

        If e.Row.RowType = DataControlRowType.DataRow Then
            Dim vLink As String = Convert.ToString(DataBinder.Eval(e.Row.DataItem, "link"))
            vLink = enc.Encrypt(vLink, "guilherme")
            e.Row.Cells(1).Text = vLink
        End If

    End Sub


Tá funcionando, mas na realidade eu queria fazer o seguinte:

e.Row.Cells(1).NavigateURL = vLink

Mas não existe.... Quero que o link do campo TITULO receba essa variável vLink

Como faço isso?
Gafanhoto
Eu até consegui fazer ele gerar o link usando uma variável de sessão:

CODE
Protected Sub GridView1_RowDataBound(ByVal sender As Object, ByVal e As System.Web.UI.WebControls.GridViewRowEventArgs) Handles GridView1.RowDataBound

        Dim enc As New encrypt
        If e.Row.RowType = DataControlRowType.DataRow Then
            Dim vLink As String = Convert.ToString(DataBinder.Eval(e.Row.DataItem, "link"))
            vLink = enc.Encrypt(vLink, "guilherme")
            Session("NDF") = vLink
        End If
    End Sub


Daí lá no navigateURL eu pus session("NDF")

Mas não sei porque a primeira linha não pega a session, só da segunda em diante.
quintelab
Na primeira linha ele entra no evento certinho ali? A session tem valor quando entra a primeira vez?

Abraços...
Esta é uma versão simplificada de nosso conteúdo principal. Para ver a versão completa com maiores informações, formatação e imagens, por favor clique aqui.
Invision Power Board © 2001-2012 Invision Power Services, Inc.