Carcleo 4 Denunciar post Postado Dezembro 12, 2008 Pessoal! Boa Tarde! Com esse codigo eu insiro ítens na DataGridView e contabilizo os totais: 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 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("preco") = preco.Text rowNew("quantidade") = qtde.Text rowNew("subtotal") = preco.Text * qtde.Text ds_itens_temp.Tables(0).Rows.Add(rowNew) ds_itens_temp.AcceptChanges() 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 SubE com esse desisto e excluo a linha excluda na Datagridview e subtraio o valor da linha excluida do total 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 ' Aqui apaga a linha na datagrid;) registro.Delete() ' E aqui apaga a linha na datatable, ou seja, o dataset aceita as alterações;) ds_itens_temp.Tables(0).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 Mas não da certo, esta dando resultado negativo Como faço agora quando quero excluir uma linha na DataGridView e quero tirar o valor dela do total? Compartilhar este post Link para o post Compartilhar em outros sites
quintelab 91 Denunciar post Postado Dezembro 12, 2008 O correto seria primeiro fazer a conta matemática depois excluir a linha. Abraços... Compartilhar este post Link para o post Compartilhar em outros sites
Carcleo 4 Denunciar post Postado Dezembro 12, 2008 Como fazer isso? Compartilhar este post Link para o post Compartilhar em outros sites
quintelab 91 Denunciar post Postado Dezembro 12, 2008 ??? Da uma olhada na sua função excluir, você tem parte do código que faz a exclusão e mais em baixo tem as linhas que fazem a subtração, coloque a subtração antes de deletar o código. Abraços... Compartilhar este post Link para o post Compartilhar em outros sites
Carcleo 4 Denunciar post Postado Dezembro 12, 2008 Assim: Private Sub Excluir_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Excluir.Click 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 '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 ' Aqui apaga a linha na datagrid;) registro.Delete() ' E aqui apaga a linha na datatable, ou seja, o dataset aceita as alterações;) ds_itens_temp.Tables(0).AcceptChanges() End If End Sub É tentei assim mas não deu. Da forma como apresentei até da certo mas não estou entendendo por que o numero sai negantivo. Por exemplo: os ítens todos somam R$315,00, dai retiro um de R$10,00 o resultado fica -R$305,00 e não +R$305,00. Bom outra ajuda que preciso é o seguinte: Tenho uma public sub valida() end sub Co validações de formulario, quando chamo a valida() até executa a validação mas não executa a parada do códo com exit sub mas, se eu pegar o conteudo da valida() e colocar no lugar onde ela é chamada ai da cero como faço para usar a public sub valida()? Tipo existe isso? if valida() = false then exit sub Compartilhar este post Link para o post Compartilhar em outros sites
quintelab 91 Denunciar post Postado Dezembro 13, 2008 Não entendi por que fica negativo também. Mas na pior das hipóteses partir pra gambir. Basta multiplica por -1 e boa. Terá o resultado correto. A segunda dúvida existe uma forma sim, mas ao invés de criar uma sub irá criar uma function com retorno do tipo boolean. Pesquise sobre function no vb.net. Abraços... Compartilhar este post Link para o post Compartilhar em outros sites
Carcleo 4 Denunciar post Postado Dezembro 14, 2008 Ta acontecendo um negócio extranho no formulario de pedidos: O produto custa: 45,33 * 5 peças ta dando dízima periódica: 45,33 * 5 = 226,64999999999998. Que é isso? Outra coisa: Tenho o código abaixo que só permite numeros, virgula e backspace. Só que só pode aceitar uma vírgula na textbox. Como adaptar isso ao código: Private Sub preco_KeyPress(ByVal sender As System.Object, ByVal e As System.Windows.Forms.KeyPressEventArgs) Handles preço.KeyPress If Not Char.IsNumber(e.KeyChar) And Not e.KeyChar = vbBack And Not e.KeyChar = "," Then e.Handled = True End If End Sub Compartilhar este post Link para o post Compartilhar em outros sites
Mário Monteiro 179 Denunciar post Postado Dezembro 14, 2008 nao tem que usar os nomeros com pontos ? Compartilhar este post Link para o post Compartilhar em outros sites
quintelab 91 Denunciar post Postado Dezembro 14, 2008 Vamos por partes. Ta resolvido as duas primeiras dúvidas? Abraços... Compartilhar este post Link para o post Compartilhar em outros sites
Carcleo 4 Denunciar post Postado Dezembro 14, 2008 As duas primeiras sim. Os problemas agora são só o lance de permitir virgula e numeros na tetbox só que só permnitir uma virgula e o lance da conta de multiplicação. Compartilhar este post Link para o post Compartilhar em outros sites
quintelab 91 Denunciar post Postado Dezembro 15, 2008 Acho que é a segunda vez que aviso, não faça up nos seus tópicos, isso irá gerar punição para você. Para arredonar sua multiplicação utilize o ROUND. Referente a vírgula você terá que fazer alguma verificação no clique do botão, pq no textbox você terá que criar uma variável que funcionará como um COUNT. Mas caso o usuário apague o texto fica dificil zerar esta variável. Abraços... Compartilhar este post Link para o post Compartilhar em outros sites
Carcleo 4 Denunciar post Postado Dezembro 16, 2008 Ok. serei mais prudente. usei o código abaixo para veriicar na datagridview o campo cpf/cnpj se fosse cpf masacara cpf se for cnpj.. For Each linha As DataGridViewRow In DGWClientes.Rows If DGWClientes.Columns.Item(10).ToString = "f" Then DGWClientes.Columns.Item(1).DefaultCellStyle.Format = "###,###,###-##" End If If DGWClientes.Columns.Item(10).ToString = "j" Then DGWClientes.Columns.Item(1).DefaultCellStyle.Format = "##,###,###/####-##" End If Next Porem, essa datagridview esta conectada ao datatable que lista nas textbox os dados dos registos. dai, cada vez que mudo um regsistro na navegação do s botões proximo, anteior.. ai mudo na datagridvieq tb dai a masca sai errado. como resolvo isso? Compartilhar este post Link para o post Compartilhar em outros sites
quintelab 91 Denunciar post Postado Dezembro 16, 2008 Nem respondeu se o outro problema esta resolvido e já ta colocando outro. Acho que o mais interessante é abrir um tópico para cada dúvida para facilitar. Eu te respondi uma coisa e você pergunto algo totalmente diferente agora. O problema da conta fico ok? Abraços... Compartilhar este post Link para o post Compartilhar em outros sites
Carcleo 4 Denunciar post Postado Dezembro 16, 2008 +ou- O problema da conta fiz a gabiarra multiplicando por -1.Mas acho que não esta profissional. Agora o problema da mascara dinamica n DataGridView não ta dando certo. Tipo: se o dr.item("tipo") = "f" então mascara de CPF. Ah! Completando., eu consegui fazer o código para a textbox só aceitar numeros e uma só virgula. Agora falta varrer a string, achar vírgula e permitir só 2 digitos a pos ela: segue: Private Sub Preco_KeyPress(ByVal sender As System.Object, ByVal e As System.Windows.Forms.KeyPressEventArgs) Handles Preco.KeyPress If Not Char.IsNumber(e.KeyChar) And Not e.KeyChar = vbBack And Not e.KeyChar = "," Then e.Handled = True End If 'para usar o MatchCollecion, tem que declarar Imports System.Text.RegularExpressions Dim mc As MatchCollection Dim r As New Regex(",") mc = r.Matches(Preco.Text) If mc.Count.ToString() > 0 Then If e.KeyChar = "," Then e.Handled = True End If End If End Sub Compartilhar este post Link para o post Compartilhar em outros sites
quintelab 91 Denunciar post Postado Dezembro 17, 2008 Não esta dando certo somente da pessoa física? A formatação da jurídica funciona? Abraços... Compartilhar este post Link para o post Compartilhar em outros sites
Carcleo 4 Denunciar post Postado Dezembro 17, 2008 pelo contrario. O erro é na juridica: ok só uma observação. Não tinha mostrado onde colocava a mascara no código 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) Codigo.Text = dr("clienteID") cpf_cnpj.Text = dr("cpf_cnpj") cpf_cnpj2.Text = dr("cpf_cnpj") Nome.Text = dr("nome") Endereco.Text = dr("endereco") Bairro.Text = dr("bairro") Cidade.Text = dr("cidade") Estado.Text = dr("estado") Email.Text = dr("email") data.Text = dr("data") If dr("tipo") = "f" Then tipo1.Checked = True tipo2.Checked = False cpf_cnpj.Mask = "###,###,###-##" End If If dr("tipo") = "j" Then tipo2.Checked = True tipo1.Checked = False cpf_cnpj.Mask = "##,###,###/####-##" End If Telefone.Text = dr("telefone") IE.Text = dr("ie") End SubA mascara até funciona mas o problema é que algumas vezes, não são todas, onde a pessoa é juridica, coloca mascara de CNPJ certo mas só exibe 11 dos 14 digitos do CPF.ai que ta o problema Compartilhar este post Link para o post Compartilhar em outros sites
Carcleo 4 Denunciar post Postado Dezembro 17, 2008 Bom resolvi o problema. na hora da exibição fica assim: If dr("tipo") = "f" Then tipo1.Checked = True tipo2.Checked = False cpf_cnpj.DataBindings.Clear() cpf_cnpj.Mask = "000,000,000-00" cpf_cnpj.DataBindings.Add("Text", ds.Tables(0), "cpf_cnpj") End If If dr("tipo") = "j" Then tipo2.Checked = True tipo1.Checked = False cpf_cnpj.DataBindings.Clear() cpf_cnpj.Mask = "00,000,000/0000-00" cpf_cnpj.DataBindings.Add("Text", ds.Tables(0), "cpf_cnpj") End Ife na hora de inserir um novo registro, fica assim: Private Sub tipo1_CheckedChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles tipo1.CheckedChanged If tipo1.Checked = True Then IE.Visible = False LabelIE.Visible = False tipo2.Checked = False cpf_cnpj.Visible = True Nome.Visible = True LabelNome.Visible = True LabelCPF.Visible = True LabelNome.Text = "Nome" LabelCPF.Text = "CPF:" cpf_cnpj.ReadOnly = False cpf_cnpj.DataBindings.Clear() cpf_cnpj.Mask = "000,000,000-00" End If End Sub Private Sub tipo2_CheckedChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles tipo2.CheckedChanged If tipo2.Checked = True Then IE.Visible = True LabelIE.Visible = True tipo1.Checked = False cpf_cnpj.Visible = True Nome.Visible = True LabelNome.Visible = True LabelCPF.Visible = True LabelNome.Text = "Razão Social" LabelCPF.Text = "CNPJ: " cpf_cnpj.ReadOnly = False cpf_cnpj.DataBindings.Clear() cpf_cnpj.Mask = "00,000,000/0000-00" End Ifou seja, só tirar a atribuição de valor.Agora o problema é similar. tenho o código abixo para colocar a mascara na datagridview só não sei em que evento colocar: For Each linha As DataGridViewRow In DGWClientes.Rows If DGWClientes.Columns.Item(10).ToString = "f" Then DGWClientes.Columns.Item(1).DefaultCellStyle.Format = "###,###,###-##" End If If DGWClientes.Columns.Item(10).ToString = "j" Then DGWClientes.Columns.Item(1).DefaultCellStyle.Format = "##,###,###/####-##" End If Next Compartilhar este post Link para o post Compartilhar em outros sites
quintelab 91 Denunciar post Postado Dezembro 17, 2008 To colocando esse tópico como resolvi e fechado e o problema da mascara discutiremos aqui: http://forum.imasters.com.br/index.php?showtopic=322279 Se tiver outra dúvida que não tem a ver com o assunto da mascara pode abrir outro tópico, se o assunto for sobre a mascara utlizaremos o tópico que eu coloquei o link. Abraços... Compartilhar este post Link para o post Compartilhar em outros sites