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

4 duvidas basicas


Carlos Rocha

Pergunta

Bom pessoal, to com 3 duvidas basicas:

1) tenho o código abaixo aonde eu desbilito controles em uma GroupBox, uma para textbox e outra para button. Gostaria de sabe se tem jeito de fazer um código só para desabilitar os 2.

Código que tenho:

Public Sub habilita()
     For Each c As Control In Me.grpitens.Controls
            If TypeOf c Is TextBox Then
                c.Enabled = True
            End If
        Next
      For Each bu As Control In Me.grpitens.Controls
            If TypeOf bu Is Button Then
                bu.Enabled = True
            End If
        Next
end sub
Ideia do que eu to querendo:
Public Sub habilita()
     For Each c As Control In Me.grpitens.Controls
            If TypeOf c Is TextBox, button, DataGridView.. Then
                c.Enabled = True
            End If
        Next        Next
end sub

Será que tem geito?

2) Como fazer para alternar do modo designer para o mode de codigo apertando só o F7?

Pergunto pois tenho um PC e um Notebook e o Notebook preciso apertar Shipt + F7 para alternar para o mode de design e no PC não preissa. No PC altena entre os modos só apertando F7.

3) Tenho um botão Novo no meu cadastro de pedidos. gostaria de, quando clikar no botão, uma DataGridView fosse fosse limpa para inserir ítens do no vo pedido .

4) Quando cliko no Botão Novo, preciso incrementar +1 no numero do novo Pedido. Como fazer isso?

Link para o comentário
Compartilhar em outros sites

3 respostass a esta questão

Posts Recomendados

  • 0

1)

Public Sub habilita()
    For Each c As Control In Me.grpitens.Controls
        If TypeOf c Is TextBox OrElse TypeOf c Is Button Then
            c.Enabled = True
        End If
    Next
End sub
2) Tools -> Options -> Environment -> Keyboard 3)
Grid.DataSource = null
Grid.DataBind()

4) Não compreendi.

Editado por OSJunior
Link para o comentário
Compartilhar em outros sites

  • 0

Bom, a priimeira e a ultima duvidas estõ resolvidas mas a 2 e a 3ª ainda não.

2) Não consegui resolver o problema do F7.

Para passar do formulario(Modo Visual) para o código aperto F7

Para passar do código para o formulario(Modo Visual) tenho que apertar shipt+F7

Fiz o que voce disse mas não sei se mudei coisa errada la.

3) Bom, estou programando com VB.Net e se eu fizer DGWPedfidos.;datasource = nothing, ai meu DataGridView some em vez de limpar as linhas para serem usadas na inserção dos ítens do novo pedido.

Alguma outra ideia?

Link para o comentário
Compartilhar em outros sites

  • 0

Sabe o problema que to enfrentando com a Datagridview é ainda mais sério. Veja:

No form de Pedidos tenho

Texbox's para preencher com os dados do cliente,

DataGridView que será populada com os ítens do pedido,

Um Botão incluir com o código abaixo que ao ser precionado, pega o ítem (produto) escolhido e os seus dados e popula a primeira linha da datagridview. Se escolhe outro produto, clika novamente no botão incluir e popula a linha 2.,. a 3 e assim por diante.

Porem, com o código abaixo, só consigo gravar as primeira linha da datagridview a partir da 2ª da erro:

Private Sub Incluir_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Incluir.Click
        If 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
        DGWPedidos.Rows(I).Cells(0).Value = dr("pedidoID")  'QUANDO CHEGA NESSA LINHA LINHA DA O ERRO ABAIXO, e no inicio do arquivo declaro i=0
        DGWPedidos.Rows(I).Cells(1).Value = registroproduto
        DGWPedidos.Rows(I).Cells(2).Value = produto.Text
        DGWPedidos.Rows(I).Cells(3).Value = unidade.Text
        DGWPedidos.Rows(I).Cells(4).Value = preço.Text
        DGWPedidos.Rows(I).Cells(5).Value = qtde.Text
        DGWPedidos.Rows(I).Cells(6).Value = preço.Text * qtde.Text

        total.Text = 0.0
        For Each linha As DataGridViewRow In DGWPedidos.Rows
            total.Text += linha.Cells(6).Value
        Next

        I = DGWPedidos.Rows.Count + 1
    End Sub
O erro que da:
O índice estava fora do intervalo. Ele deve ser não-negativo e menor que o tamanho da coleção. Nome do parâmetro: index"
O que tenho que mudar no código? Obs.: ao cdlikar no botão novo pedido, ainda não consegui limpar o grid. Código todo:
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 dr As DataRow
    Dim I As Integer = 0
    Dim dt As DataTable
    Dim ds As DataSet = Nothing
    Dim ds_itens As DataSet = Nothing
    'FIM DAS DECLARAÇÕES DAS VARIAVEIS GLOBAIS
    ''''''''''''''''''''''''''''''''''''''''''
    'INICIO DO BLOCO DE FUNÇÕES
    Private Sub atribuirDados(ByVal dr As DataRow)
        dr("data") = data.Text
    End Sub
    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)
        codigoped.Text = dr("pedidoID")
        codigocli.Text = dr("clienteID")
        cliente.Text = dr("nome")
        data.Text = dr("data")
    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

    Private Sub listaitens()
        'carrega ítens pedidos
        Dim tabelaitens As String = "detalhespedidos"
        Dim sqlitens As String = "Select * from " & tabelaitens & " where pedidoID=" & dr("pedidoID")
        ds_itens = accDb.ExecuteDS(sqlitens, tabelaitens)
        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
        Next
    End Sub
    Public Sub desabilita()
        For Each c As Control In Me.gritens.Controls
            If TypeOf c Is TextBox OrElse TypeOf c Is DataGridView 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 DataGridView 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 TextBox OrElse TypeOf c Is DataGridView OrElse TypeOf c Is Button Then
                c.Enabled = True
            End If
        Next
        For Each c As Control In Me.grpitens.Controls
            If TypeOf c Is TextBox OrElse TypeOf c Is DataGridView OrElse TypeOf c Is Button 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
        For Each dgw As Control In Me.grpitens.Controls
            If TypeOf dgw Is DataGridView Then
                '  DGWPedidos.DataSource = Nothing
            End If
        Next
    End Sub
    Private Sub atualizarRegistro(ByVal dr As DataRow)
        atribuirDados(dr)
        '  Dim sql As String = "UPDATE " & tabela & " SET nome = '" & Nome.Text & "',cpf_cnpj = '" & cpf_cnpj.Text & "',endereco= '" & Endereco.Text & "',email = '" & data.Text & "', where clienteID='" & dr("clienteID") & "'"
        '  ds = accDb.ExecuteDS(sql, tabela)
        exibirDados(registropedidos)
        Try
            MessageBox.Show("registro de Usuário alterado 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
    Private Sub eliminarRegistro(ByVal codigo As Integer)
        ' Dim sql As String = "UPDATE " & tabela & " SET ativo = 'N' where clienteID = " & codigo
        ' ds = accDb.ExecuteDS(Sql, tabela)
        Proximo_Click(Nothing, Nothing)
        Try
            MessageBox.Show("registro de Usuário 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
    Private Sub incluirRegistro(ByVal dr As DataRow)
        Dim tabelapedidos As String = "pedidos"
        Dim tabeladetalhespedidos As String = "detalhespedidos"
        Dim sqlpedidos As String = "INSERT INTO " & tabelapedidos & " (clienteID,ativo,data)VALUES ('" & codigocli.Text & "','S','" & Format(Date.Today, "yyyy-MM-dd") & "')"
        Dim sqlitens As String = "INSERT INTO " & tabeladetalhespedidos & " (pedidoID,produtoID,unidade,descricao,preço,quantidade,subtotal) VALUES ('" & codigoped.Text & "','" & codigoprod.Text & "','" & unidade.Text & "','" & produto.Text & "','" & preço.Text & "','" & qtde.Text & "','" & total.Text & "')"
        If DGWPedidos.RowCount = 0 Then
            MessageBox.Show("Favor Escolher os produtos antes de salvar o pedido!")
        End If
        Dim ds_pedidos As DataSet = accDb.ExecuteDS(sqlpedidos, tabelapedidos)
        For Each linha As DataGridViewRow In DGWPedidos.Rows
            Dim ds_itens As DataSet = accDb.ExecuteDS(sqlitens, tabeladetalhespedidos)
        Next

        Try
            MessageBox.Show("Pedidos incluido com sucesso.")
            exibirDados(registropedidos)
        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 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 tabela As String = "Clientes"
            Dim sql As String = "Select * from " & tabela & " where clienteID = '" & dialogo.registrocliente & "'"
            ds = accDb.ExecuteDS(sql, tabela)
            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 tabela As String = "Produtos"
            Dim sql As String = "Select * from " & tabela & " where produtoID = '" & dialogo.registroproduto & "'"
            ds = accDb.ExecuteDS(sql, tabela)
            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 Pedidos_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
        'carrega pedidos
        Dim tabelapedidos As String = "pedidos"
        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
        exibirDados(registropedidos)
        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 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 Novo_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Novo.Click
        If Novo.Text = "Novo" Then
            limpacampos()
            data.Text = Date.Today
            codigoped.Visible = False
            LabelCodigoPed.Visible = False
            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
            dr = dt.NewRow
            incluirRegistro(dr)
            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
            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
            dr = dt.Rows(registropedidos)
            atualizarRegistro(dr)
            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
        If 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
        DGWPedidos.Rows(I).Cells(0).Value = dr("pedidoID")
        DGWPedidos.Rows(I).Cells(1).Value = registroproduto
        DGWPedidos.Rows(I).Cells(2).Value = produto.Text
        DGWPedidos.Rows(I).Cells(3).Value = unidade.Text
        DGWPedidos.Rows(I).Cells(4).Value = preço.Text
        DGWPedidos.Rows(I).Cells(5).Value = qtde.Text
        DGWPedidos.Rows(I).Cells(6).Value = preço.Text * qtde.Text

        total.Text = 0.0
        For Each linha As DataGridViewRow In DGWPedidos.Rows
            total.Text += linha.Cells(6).Value
        Next

        I = DGWPedidos.Rows.Count + 1
    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
            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
                Dim codigo As Integer
                Dim dr As DataRow = dt.Rows(registropedidos)
                codigo = dr("clienteID")
                codigo = CType(codigo.ToString, Integer)
                eliminarRegistro(codigo)
            End If
        End If
        ' Dim sql As String = "UPDATE " & tabela & " SET ativo = 'N' where clienteID = " & codigoped
        'ds = accDb.ExecuteDS(sql, tabela)
        Proximo_Click(Nothing, Nothing)
        Try
            MessageBox.Show("registro de Usuário 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 PROCIDURES

End Class

Editado por Carlos Rocha
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,3k
    • Posts
      652,4k
×
×
  • Criar Novo...