Ir para conteúdo
Fórum Script Brasil
  • 0

Tabelas no Dataset. Como fazer?


Carlos Rocha

Pergunta

Tabelas no Dataset. Como fazer?

Preciso criar um dataset via código mas não vou usar tabelas do MySql nele.

Quero criar tabelas dinamicas nele.

Se eu colocar uma ferramenta Dataset da tollbox no Form, tem a propriedade Tables onde crio as tabelas do dataset la.

Como faço via código esse dataset e as tabelas dele?

Nesse código tenho um, funçao que retorna um dataset:

Como inserir uma tabela cientes com seus fileds ID e Nome nele?

Public Function ExecuteDS(ByVal sql As String, ByRef tabela As String) As DataSet

Dim ds As New DataSet

Dim da As MySqlDataAdapter = New MySqlDataAdapter()

Try

OpenConnection()

cmd.CommandType = CommandType.Text

cmd.CommandText = sql

cmd.Connection = Conexao

da.SelectCommand = cmd

da.Fill(ds, tabela)

dt = ds.Tables(tabela)

da.Dispose()

Return ds

Catch ex As Exception

MsgBox(ex.Message)

End Try

Return ds

End Function

Link para o comentário
Compartilhar em outros sites

1 resposta a esta questão

Posts Recomendados

  • 0

Sabe, descobri uma coisa.

Quando no banco vai uma linha em branco, essa linha é última linha do datagridview que sempre esta vazia.

Dessa forma, é mais prudente enviar os dados para uma tabela temporaria e dela para o banco.

Acontece que estou tendo dois problemas dessa forma.

Uma na hora de inserir registros e duas na hora de editar pedidos.

O problema da edição é que, quando salvo da Ok mas quando salvo outro pedido sem antes fechar e abrir o forme da um erro dizendo que não há linha na posição tal e limpa a tabela.

eis o código:

E na hora de inmserir um, segundo pedido, da erro de indice:

Imports MySql.Data.MySqlClient
Public Class Pedidos
    'INICIO DAS DECLARAÇÕES DAS VARIAVEIS GLOBAIS
    Dim accDb As New DBConnection
    Dim registrocliente As Integer
    Dim registroproduto As Integer
    Dim registroitem As Integer
    Dim registropedido As Integer
    Dim registropedidos As Integer
    Dim I As Integer = 0
    Dim O As Integer = 0
    Dim W As Integer = 0
    Dim Proximopedido As New Integer
    Dim ds As DataSet = Nothing
    Dim ds_itens As DataSet = Nothing
    Dim ds_itens_temp As DataSet = Nothing
    Dim dt As DataTable
    Dim dr As DataRow
    Dim TabelaClientes As String = "clientes"
    Dim TabelaProdutos As String = "produtos"
    Dim TabelaPedidos As String = "pedidos"
    Dim TabelaDetalhesPedidos As String = "detalhespedidos"

    'FIM DAS DECLARAÇÕES DAS VARIAVEIS GLOBAIS
    ''''''''''''''''''''''''''''''''''''''''''
    'INICIO DO BLOCO DE FUNÇÕES
    Private Sub exibirDados(ByVal m As Integer)
        Dim i As Integer = dt.Rows.Count - 1
        If m < 0 OrElse i < 0 Then Exit Sub
        dr = dt.Rows(m)
        LabelCodigoPed.Visible = True
        codigoped.Visible = True
        codigoped.Text = dr("pedidoID")
        codigocli.Text = dr("clienteID")
        cliente.Text = dr("nome")
        data.Text = dr("data")
    End Sub
    Private Sub atribuirDados(ByVal dr As DataRow)
        dr("data") = data.Text
    End Sub
    Public Sub CarregaPagina()
        Dim sqlpedidos As String = "select p.pedidoID, p.clienteID, p.ativo, p.data, c.nome as nome from  pedidos p inner join clientes c ON  p.clienteID = c.clienteID  where p.ativo='S' order by pedidoID"
        ds = accDb.ExecuteDS(sqlpedidos, TabelaPedidos)
        dt = ds.Tables(tabelapedidos)
        registropedidos = dt.Rows.Count - 1
        ' com primarykey
        dt.PrimaryKey = New DataColumn() {dt.Columns(0)}
        dr = dt.Rows.Find(registropedidos)
        registropedidos = dt.Rows.IndexOf(dr)
        ' com primarykey
        desabilita()
        If dt.Rows.Count = 0 Then
            Primeiro.Enabled = False
            Anterior.Enabled = False
            Proximo.Enabled = False
            Ultimo.Enabled = False
            Atualizar.Enabled = False
            Eliminar.Enabled = False
        End If
        If dt.Rows.Count > 0 Then
            registropedidos = 0
            Primeiro_Click(Nothing, Nothing)
        Else
            registropedidos = -1
        End If
    End Sub
    Private Sub listaitens()
        'carrega ítens pedidos
        Dim sqlitens As String = "Select * from " & TabelaDetalhesPedidos & " where pedidoID=" & dr("pedidoID")
        ds_itens = accDb.ExecuteDS(sqlitens, TabelaDetalhesPedidos)
        DGWPedidos.DataSource = ds_itens.Tables(0).DefaultView
        mostracolunas()
        total.Text = 0.0
        For Each linha As DataGridViewRow In DGWPedidos.Rows
            total.Text += linha.Cells(6).Value
            total.Text = FormatCurrency(total.Text, "0.00")
        Next
    End Sub
    Public Sub entrega_item_item()
        Dim Sqlitens As String = "Select * from detalhespedidos where pedidoID=" & codigoped.Text
        ds_itens_temp = accDb.ExecuteDSTEMP(Sqlitens)
        For Each linha As DataRow In ds_itens.Tables(0).Rows
            ds_itens_temp.Tables(0).Rows.Add(linha(0), linha(1), linha(2), linha(3), linha(4), linha(5), linha(6))
        Next linha
    End Sub
    Public Sub desabilita()
        For Each c As Control In Me.gritens.Controls
            If TypeOf c Is TextBox OrElse TypeOf c Is Button Then
                c.Enabled = False
            End If
        Next
        For Each c As Control In Me.grpitens.Controls
            If TypeOf c Is TextBox OrElse TypeOf c Is Button Then
                c.Enabled = False
            End If
        Next
    End Sub
    Public Sub habilita()
        For Each c As Control In Me.gritens.Controls
            If TypeOf c Is Button OrElse TypeOf c Is DataGridView Then
                c.Enabled = True
            End If
        Next
        For Each c As Control In Me.grpitens.Controls
            If TypeOf c Is Button OrElse TypeOf c Is DataGridView Then
                c.Enabled = True
            End If
        Next
    End Sub
    Public Sub limpacampos()
        For Each c As Control In Me.grpitens.Controls
            If TypeOf c Is TextBox Then
                c.Text = ""
            End If
        Next
    End Sub
    Public Sub limpagrid()
        If DGWPedidos.DataSource IsNot Nothing Then
            DGWPedidos.DataSource = Nothing
            refazer_dgw()
        Else
            DGWPedidos.Rows.Clear()
            refazer_dgw()
        End If
    End Sub
    Private Sub mostracolunas()
        DGWPedidos.Columns.Item(0).HeaderText = "CODIGO PEDIDO"
        DGWPedidos.Columns.Item(1).HeaderText = "CODIGO PRODUTO"
        DGWPedidos.Columns.Item(2).HeaderText = "TIPO UNIDADE"
        DGWPedidos.Columns.Item(3).HeaderText = "DESCRIÇÃO"
        DGWPedidos.Columns.Item(4).HeaderText = "PREÇO UNITÁRIO"
        DGWPedidos.Columns.Item(5).HeaderText = "QTDE"
        DGWPedidos.Columns.Item(6).HeaderText = "SUBTOTAL"
    End Sub
    Public Sub ProximoRegistro()
        Dim sqlUltimoIDPedido As String = "select max(pedidoID) from " & TabelaPedidos & " order by pedidoID"
        Dim dsUltimoIDPedido As DataSet = accDb.ExecuteDS(sqlUltimoIDPedido, TabelaPedidos)
        Dim drUltimoIDPedido As DataRow

        If dsUltimoIDPedido.Tables(0).Rows.Count = 0 Then
            Proximopedido = 1
        Else
            For Each drUltimoIDPedido In dsUltimoIDPedido.Tables(TabelaPedidos).Rows
                If IsDBNull(drUltimoIDPedido.Item(0)) Then
                    Proximopedido = 1
                Else
                    Proximopedido = drUltimoIDPedido.Item(0) + 1
                End If
            Next drUltimoIDPedido
        End If
    End Sub
    Public Sub refazer_dgw()
        If DGWPedidos.Columns.Count = 0 Then
            DGWPedidos.AutoGenerateColumns = False
            Dim txt1 As New DataGridViewTextBoxColumn()
            Dim txt2 As New DataGridViewTextBoxColumn()
            Dim txt3 As New DataGridViewTextBoxColumn()
            Dim txt4 As New DataGridViewTextBoxColumn()
            Dim txt5 As New DataGridViewTextBoxColumn()
            Dim txt6 As New DataGridViewTextBoxColumn()
            Dim txt7 As New DataGridViewTextBoxColumn()
            DGWPedidos.SelectionMode = DataGridViewSelectionMode.FullRowSelect
            txt1.HeaderText = "CODIGO PEDIDO"
            txt2.HeaderText = "CODIGO PRODUTO"
            txt3.HeaderText = "TIPO UNIDADE"
            txt4.HeaderText = "DESCRIÇÃO"
            txt5.HeaderText = "PREÇO UNITÁRIO"
            txt6.HeaderText = "QTDE"
            txt7.HeaderText = "SUBTOTAL"

            txt1.DataPropertyName = "pedidoID"
            txt2.DataPropertyName = "produtoID"
            txt3.DataPropertyName = "unidade"
            txt4.DataPropertyName = "descricao"
            txt5.DataPropertyName = "preço"
            txt6.DataPropertyName = "quantidade"
            txt7.DataPropertyName = "subtotal"

            DGWPedidos.Columns.Add(txt1)
            DGWPedidos.Columns.Add(txt2)
            DGWPedidos.Columns.Add(txt3)
            DGWPedidos.Columns.Add(txt4)
            DGWPedidos.Columns.Add(txt5)
            DGWPedidos.Columns.Add(txt6)
            DGWPedidos.Columns.Add(txt7)
        End If
    End Sub
    Private Sub incluirRegistro()
        Dim sqlpedidos As String = "INSERT INTO " & TabelaPedidos & " (clienteID,ativo,data)VALUES ('" & codigocli.Text & "','S','" & Format(Date.Today, "yyyy-MM-dd") & "')"
        Dim ds_pedidos As DataSet = accDb.ExecuteDS(sqlpedidos, TabelaPedidos)
        For Each linha As DataGridViewRow In DGWPedidos.Rows
            Dim sqlitens As String = "INSERT INTO " & TabelaDetalhesPedidos & " (pedidoID,produtoID,unidade,descricao,preço,quantidade,subtotal) VALUES ('" & DGWPedidos.Rows(I).Cells(0).Value & "','" & DGWPedidos.Rows(I).Cells(1).Value & "','" & DGWPedidos.Rows(I).Cells(2).Value & "','" & DGWPedidos.Rows(I).Cells(3).Value & "','" & DGWPedidos.Rows(I).Cells(4).Value & "','" & DGWPedidos.Rows(I).Cells(5).Value & "','" & DGWPedidos.Rows(I).Cells(6).Value & "')"
            accDb.ExecuteDS(sqlitens, TabelaDetalhesPedidos)
            I = I + 1
        Next linha

        Try
            MessageBox.Show("Pedidos incluido com sucesso.")
            DGWPedidos.DataSource = Nothing
            CarregaPagina()
        Catch ex As Exception
            MessageBox.Show("Erro ao efetuar a conexão com a base de dados : " + ex.Message)
        End Try
    End Sub
    Private Sub atualizarRegistro(ByVal dr As DataRow)
        Dim sqlpedidos As String = "UPDATE " & TabelaPedidos & " SET clienteID='" & codigocli.Text & "' where pedidoID='" & dr("pedidoID") & "'"
        Dim sqlitensdeletaitens As String = "delete from " & TabelaDetalhesPedidos & "  where pedidoID='" & dr("pedidoID") & "'"
        accDb.ExecuteDS(sqlitensdeletaitens, TabelaDetalhesPedidos)
        accDb.ExecuteDS(sqlpedidos, TabelaPedidos)
        For Each linha As DataRow In ds_itens_temp.Tables(0).Rows
            Dim sqlitens As String = "INSERT INTO " & TabelaDetalhesPedidos & " (pedidoID,produtoID,unidade,descricao,preço,quantidade,subtotal) VALUES ('" & ds_itens_temp.Tables(0).Rows(I).Item(0) & "','" & ds_itens_temp.Tables(0).Rows(I).Item(1) & "','" & ds_itens_temp.Tables(0).Rows(I).Item(2) & "','" & ds_itens_temp.Tables(0).Rows(I).Item(3) & "','" & ds_itens_temp.Tables(0).Rows(I).Item(4) & "','" & ds_itens_temp.Tables(0).Rows(I).Item(5) & "','" & ds_itens_temp.Tables(0).Rows(I).Item(6) & "')"
            accDb.ExecuteDS(sqlitens, TabelaDetalhesPedidos)
            I = I + 1
        Next linha

        Try
            MessageBox.Show("Pedidos atualizado com sucesso.")
            DGWPedidos.DataSource = Nothing
            CarregaPagina()
        Catch ex As Exception
            MessageBox.Show("Erro ao efetuar a conexão com a base de dados : " + ex.Message)
        End Try
    End Sub
    Private Sub eliminarRegistro(ByVal dr As DataRow)
        Dim sql As String = "UPDATE " & TabelaPedidos & " SET ativo = 'N' where pedidoID = " & dr("pedidoID")
        ds = accDb.ExecuteDS(sql, TabelaPedidos)
        Proximo_Click(Nothing, Nothing)
        Try
            MessageBox.Show("Pedido excluido com sucesso.")
        Catch ex As Exception
            MessageBox.Show("Erro ao efetuar a conexão com a base de dados : " + ex.Message)
        End Try
    End Sub
    'FIM DO BLOCO DE FUNÇÕES
    ''''''''''''''''''''''''''''''
    'INICIO DO BLOCO DE PROCIDURES
    Private Sub Pedidos_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
        'carrega pedidos
        CarregaPagina()
    End Sub
    Private Sub Primeiro_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Primeiro.Click
        registropedidos = 0
        exibirDados(registropedidos)
        listaitens()
    End Sub

    Private Sub Anterior_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Anterior.Click
        registropedidos = registropedidos - 1
        If registropedidos < 0 Then registropedidos = 0
        exibirDados(registropedidos)
        listaitens()
    End Sub

    Private Sub Proximo_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Proximo.Click
        Dim i As Integer = dt.Rows.Count - 1
        registropedidos = registropedidos + 1
        If registropedidos > i Then registropedidos = i
        exibirDados(registropedidos)
        listaitens()
    End Sub

    Private Sub Ultimo_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Ultimo.Click
        registropedidos = dt.Rows.Count - 1
        exibirDados(registropedidos)
        listaitens()
    End Sub
    Private Sub bcliente_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles bcliente.Click
        Dim dialogo As New frmClientes
        dialogo.ShowDialog()
        If dialogo.DialogResult = Windows.Forms.DialogResult.OK Then
            Dim sql As String = "Select * from " & TabelaClientes & " where clienteID = '" & dialogo.registrocliente & "'"
            ds = accDb.ExecuteDS(sql, TabelaClientes)
            Dim dr As DataRow
            For Each dr In ds.Tables(0).Rows
                codigocli.Text = dr.Item("clienteID")
                cliente.Text = dr.Item("nome")
                registrocliente = dr.Item("clienteID")
            Next dr
        Else
            MsgBox("Não foi selecionado nenhum cliente.")
            codigocli.Text = ""
            cliente.Text = ""
        End If
    End Sub
    Private Sub bproduto_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles bproduto.Click
        Dim dialogo As New frmProdutos
        dialogo.ShowDialog()
        If dialogo.DialogResult = Windows.Forms.DialogResult.OK Then
            Dim sql As String = "Select * from " & TabelaProdutos & " where produtoID = '" & dialogo.registroproduto & "'"
            ds = accDb.ExecuteDS(sql, TabelaProdutos)
            Dim dr As DataRow
            For Each dr In ds.Tables(0).Rows
                codigoprod.Text = dr.Item("produtoID")
                produto.Text = dr.Item("descricao")
                preço.Text = dr.Item("preço")
                unidade.Text = dr.Item("unidade")
                registroproduto = dr.Item("produtoID")
            Next dr
        Else
            MsgBox("Não foi selecionado nenhum cliente.")
            codigocli.Text = ""
            cliente.Text = ""
        End If
    End Sub

    Private Sub Novo_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Novo.Click
        If Novo.Text = "Novo" Then
            limpacampos()
            limpagrid()
            ProximoRegistro()
            codigoped.Text = Proximopedido
            habilita()
            data.Text = Date.Today
            Primeiro.Enabled = False
            Proximo.Enabled = False
            Anterior.Enabled = False
            Ultimo.Enabled = False
            Atualizar.Enabled = False
            Eliminar.Enabled = False
            Encerrar.Text = "Cancela"
            Novo.Text = "Incluir"
            bcliente.Enabled = True
            bproduto.Enabled = True
            Incluir.Enabled = True
            Excluir.Enabled = True
            qtde.Enabled = True
            bcliente_Click(Nothing, Nothing)
        ElseIf Novo.Text = "Incluir" Then
            incluirRegistro()
            desabilita()
            Novo.Text = "Novo"
            Encerrar.Text = "Encerrar"
            Primeiro.Enabled = True
            Proximo.Enabled = True
            Anterior.Enabled = True
            Ultimo.Enabled = True
            Atualizar.Enabled = True
            Eliminar.Enabled = True
        End If
    End Sub
   
    Private Sub Atualizar_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Atualizar.Click
        If Atualizar.Text = "Atualizar" Then
            habilita()
            entrega_item_item()
            DGWPedidos.DataSource = Nothing
            DGWPedidos.DataSource = ds_itens_temp.Tables(0).DefaultView
            mostracolunas()
            Novo.Enabled = False
            Primeiro.Enabled = False
            Proximo.Enabled = False
            Anterior.Enabled = False
            Ultimo.Enabled = False
            Eliminar.Enabled = False
            Encerrar.Text = "Cancela"
            Atualizar.Text = "Salvar"
            bcliente.Enabled = True
            bproduto.Enabled = True
            Incluir.Enabled = True
            Excluir.Enabled = True
            qtde.Enabled = True
            cliente.Focus()
            codigoped.Enabled = False
            codigoped.Visible = True
            LabelCodigoPed.Visible = True
        ElseIf Atualizar.Text = "Salvar" Then
            codigoped.Enabled = False
            If registropedidos < 0 OrElse registropedidos > dt.Rows.Count - 1 Then Exit Sub
            Dim dre As DataRow = dt.Rows(registropedidos)
            atualizarRegistro(dre)
            Atualizar.Text = "Atualizar"
            Encerrar.Text = "Encerrar"
            Novo.Enabled = True
            Eliminar.Enabled = True
            desabilita()
            Primeiro.Enabled = True
            Proximo.Enabled = True
            Anterior.Enabled = True
            Ultimo.Enabled = True
        End If
    End Sub
    
    Private Sub Incluir_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Incluir.Click
        'a propriedade SelectionMode deve ser igual a FullRowSelect para deletar linhas
        If cliente.Text = String.Empty Then
            MsgBox("Escolha o clientes...")
            bcliente_Click(Nothing, Nothing)
            Exit Sub
        ElseIf produto.Text = String.Empty Then
            MsgBox("Escolha o produto.")
            bproduto_Click(Nothing, Nothing)
            Exit Sub
        ElseIf qtde.Text = String.Empty Then
            MsgBox("Informe a quantidade requerida...")
            qtde.Focus()
            Exit Sub
        End If
        If IsDBNull(DGWPedidos.Rows.Count) Or DGWPedidos.Rows.Count = 0 Then W = 0
        If Novo.Text = "Incluir" Then
            DGWPedidos.Rows.Add(Convert.ToInt32(Proximopedido), registroproduto, unidade.Text, produto.Text, preço.Text, Convert.ToInt32(qtde.Text), preço.Text * Convert.ToInt32(qtde.Text))
        Else
            Dim rowNew As DataRow = ds_itens_temp.Tables(0).NewRow
            rowNew("pedidoID") = codigoped.Text
            rowNew("produtoID") = codigoprod.Text
            rowNew("unidade") = unidade.Text
            rowNew("descricao") = produto.Text
            rowNew("preço") = preço.Text
            rowNew("quantidade") = qtde.Text
            rowNew("subtotal") = preço.Text * qtde.Text
            ds_itens_temp.Tables(0).Rows.Add(rowNew)
            ds_itens_temp.AcceptChanges()
        End If
        total.Text = 0.0
        For Each linha As DataGridViewRow In DGWPedidos.Rows
            total.Text += linha.Cells(6).Value
            total.Text = FormatCurrency(total.Text, "0.00")
        Next linha
    End Sub
    Private Sub Encerrar_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Encerrar.Click
        If Encerrar.Text = "Encerrar" Then
            If MessageBox.Show("Deseja encerrar a aplicação", "Encerrar", MessageBoxButtons.YesNo) = Windows.Forms.DialogResult.Yes Then
                If ds.HasChanges Then
                    ds.AcceptChanges()
                End If
                Me.Close()
            End If
        ElseIf Encerrar.Text = "Cancela" Then
            DGWPedidos.DataSource = Nothing
            DGWPedidos.DataSource = ds_itens.Tables(0).DefaultView
            desabilita()
            Encerrar.Text = "Encerrar"
            Primeiro.Enabled = True
            Proximo.Enabled = True
            Anterior.Enabled = True
            Ultimo.Enabled = True
            Atualizar.Enabled = True
            Eliminar.Enabled = True
            codigoped.Visible = True
            LabelCodigoPed.Visible = True
            If dt.Rows.Count = 0 Then
                Atualizar.Enabled = False
                Eliminar.Enabled = False
            End If
            Novo.Text = "Novo"
            Novo.Enabled = True
            Atualizar.Text = "Atualizar"
            Anterior_Click(Nothing, Nothing)
        End If
    End Sub

    Private Sub Eliminar_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Eliminar.Click
        If registropedidos < 0 OrElse registropedidos > dt.Rows.Count - 1 Then
            Exit Sub
        Else
            If MessageBox.Show("Deseja Excluir esse registro", "Excluir", MessageBoxButtons.YesNo) = Windows.Forms.DialogResult.Yes Then
                If registropedidos < 0 OrElse registropedidos > dt.Rows.Count - 1 Then Exit Sub
                Dim dre As DataRow = dt.Rows(registropedidos)
                eliminarRegistro(dre)
            End If
        End If
    End Sub
    Private Sub Excluir_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Excluir.Click
        'a propriedade SelectionMode deve ser igual a FullRowSelect para deletar linhas
        'verifica se a linha a ser excluida é valida
        Dim registro As DataRowView = TryCast(DGWPedidos.CurrentRow.DataBoundItem, DataRowView)
        ' Existe algum registro selecionado? 
        If registro IsNot Nothing Then
            ' Sim... Então apaga;) 
            registro.Delete()
        End If
    End Sub
    'FIM DO BLOCO DE PROCIDURES
End Class

Link para o comentário
Compartilhar em outros sites

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,1k
    • Posts
      651,8k
×
×
  • Criar Novo...