Ir para conteúdo
Fórum Script Brasil

Carlos Rocha

Membros
  • Total de itens

    1.302
  • Registro em

  • Última visita

Tudo que Carlos Rocha postou

  1. Ok. Brigadão. 1º e 3º Resolvcidas. Continua a 2ª mas surgiu um detalhe que notei só agora! Se eu quizer marcar um monte de linhas na DataGridView eu marco facilmente arrastando o mouse. Tem jeito de só conseguir selecionar uma linha só não? Contiunua a 2ª: 2) O Primeiro formulario que abro, ainda que a propriedade windows.state esteja setado como maximized, não abre maximizado de jeito nenhum. já do segundo form aberto em diante já abre maximizado. Como resolver isso? Se aguem souber. Bom, já que o Natal já passou, eu desejo um Próspero 2009 para todos do forum!
  2. Bom, pela primeira resposta, já tentei fazer assim tamebem mas o formulario, se chamado uma segunda vez, não sobrepoe ao´último que esta sendo exibido. Pela segunda resposta. Continuo na dúvida e.. Pela terceira resposta, tentei da forma abaixo e esta dando o seguinte erro quando entra na 1º linha. Dim registro As DataRowView = TryCast(DGWClientes.CurrentRow.DataBoundItem, DataRowView) É bom dizer que se trata de um form de pesquisaque se abre como diálogo e que entrega seu valor ao form que o chamou Referência de objeto não definida para uma instância de um objeto. Tai a segunda tentativa: Private Sub Selecionar_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Selecionar.Click 'verifica se foi selecionado um registro no datagridivew Dim registro As DataRowView = TryCast(DGWClientes.CurrentRow.DataBoundItem, DataRowView) ' Existe algum registro selecionado? If registro IsNot Nothing Then MsgBox("Selecione um registro!") DGWClientes.Focus() Exit Sub End If ... end sub Segue o código todo do form: Imports MySql.Data.MySqlClient Public Class frmClientes Dim accDb As New DBConnection Dim ped As New Pedidos Public registrocliente As Integer Dim dr As DataRow Dim dt As DataTable Dim dss As DataSet = Nothing Dim ds As DataSet = Nothing Dim tabela As String = "Clientes" Private Sub mostracolunas() DGWClientes.Columns.Item(0).HeaderText = "ID" DGWClientes.Columns.Item(1).HeaderText = "CPF_CNPJ" DGWClientes.Columns.Item(2).HeaderText = "NOME" DGWClientes.Columns.Item(3).HeaderText = "ENDEREÇO" DGWClientes.Columns.Item(4).HeaderText = "E-MAIL" DGWClientes.Columns.Item(5).HeaderText = "ATIVO" DGWClientes.Columns.Item(6).HeaderText = "DATA" DGWClientes.Columns.Item(7).HeaderText = "TIPO" DGWClientes.Columns.Item(0).Visible = False DGWClientes.Columns.Item(5).Visible = False DGWClientes.Columns.Item(6).Visible = False DGWClientes.Columns.Item(7).Visible = False DGWClientes.Columns.Item(1).DefaultCellStyle.Alignment = DataGridViewContentAlignment.MiddleRight DGWClientes.Columns.Item(2).DefaultCellStyle.Alignment = DataGridViewContentAlignment.MiddleLeft DGWClientes.Columns.Item(3).DefaultCellStyle.Alignment = DataGridViewContentAlignment.MiddleLeft DGWClientes.Columns.Item(4).DefaultCellStyle.Alignment = DataGridViewContentAlignment.MiddleLeft DGWClientes.Columns.Item(6).DefaultCellStyle.Alignment = DataGridViewContentAlignment.MiddleRight End Sub Private Sub frmClientes_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load Dim sql As String = "Select * from " & tabela & " where ativo='S'" ds = accDb.ExecuteDS(sql, tabela) If ds.Tables(0).Rows.Count = 0 OrElse IsDBNull(ds.Tables(0).Rows.Item(0)) Then Dim dialogo As New Clientes dialogo.ShowDialog() Close() Else DGWClientes.DataSource = ds.Tables(0).DefaultView mostracolunas() End If End Sub Private Sub P_Nome_TextChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles P_Nome.TextChanged Try Dim sql As String = "Select * from " & tabela & " where ativo='S' and (nome like '" & P_Nome.Text & "%' or clienteID like '" & P_Nome.Text & "%' or cast(cpf_cnpj as char) like '" & P_Nome.Text & "%')" dss = accDb.ExecuteDS(sql, tabela) DGWClientes.DataSource = dss.Tables(0).DefaultView Catch ex As Exception MessageBox.Show("Erro: " & ex.Message, "Sem conexão", MessageBoxButtons.OK, MessageBoxIcon.Error) Exit Sub End Try End Sub Private Sub Selecionar_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Selecionar.Click 'verifica se foi selecionado um registro no datagridivew Dim registro As DataRowView = TryCast(DGWClientes.CurrentRow.DataBoundItem, DataRowView) ' Existe algum registro selecionado? If registro IsNot Nothing Then MsgBox("Selecione um registro!") DGWClientes.Focus() Exit Sub End If 'If DGWClientes.CurrentRow. = 0 Then ' MsgBox("Selecione um registro!") ' aqui, mesmo que eu selecione, ele da o msgbox do mesmo jeito ' DGWClientes.Focus() ' Exit Sub 'End If If P_Nome.Text = "" Then If ds.Tables(0).Rows.Count = 0 Or IsDBNull(ds.Tables(0).Rows.Count) Then MessageBox.Show("Não existe esse registro!") P_Nome.Focus() Exit Sub End If Else If dss.Tables(0).Rows.Count = 0 Or IsDBNull(dss.Tables(0).Rows.Count) Then MessageBox.Show("Não existe esse registro!") P_Nome.Focus() Exit Sub End If End If Dim linha As Integer = DGWClientes.CurrentRow.Index registrocliente = DGWClientes.Item("clienteID", linha).Value.ToString DialogResult = System.Windows.Forms.DialogResult.OK Close() End Sub Private Sub frmClientes_KeyPress(ByVal sender As System.Object, ByVal e As System.Windows.Forms.KeyPressEventArgs) Handles MyBase.KeyPress 'permitir que a mudança de um campo para outro do formulário seja possível com o pressionamento da tecla ENTER 'Altere a propriedade KeyPreview do formulário para True If e.KeyChar = Convert.ToChar(13) Then e.Handled = True SendKeys.Send("{TAB}") End If End Sub Private Sub DGWClientes_CellFormatting(ByVal sender As System.Object, ByVal e As System.Windows.Forms.DataGridViewCellFormattingEventArgs) Handles DGWClientes.CellFormatting Dim d As Double ' Aqui vem a coluna com os dados, no meu caso é a coluna 1 If e.ColumnIndex = 1 Then ' Vejo se tem algo preenchido e eu estou convertendo ' para Double para aplicar uma máscara numérica If e.Value IsNot Nothing AndAlso _ Double.TryParse(e.Value.ToString(), d) Then Console.WriteLine(e.Value.ToString().Length) ' Se for até 11 caracteres, considero CPF If e.Value.ToString().Length <= 11 Then e.Value = d.ToString("###'.'###'.'###-##") ' De 12 a 14, CNPJ ElseIf e.Value.ToString().Length > 11 AndAlso _ e.Value.ToString().Length <= 14 Then e.Value = d.ToString("##'.'###'.'###/####-##") End If End If End If If e.ColumnIndex = 11 Then ' Vejo se tem algo preenchido e eu estou convertendo ' para Double para aplicar uma máscara numérica If e.Value IsNot Nothing AndAlso _ Double.TryParse(e.Value.ToString(), d) Then Console.WriteLine(e.Value.ToString().Length) ' Se for até 11 caracteres, considero CPF e.Value = d.ToString("(##)' '####'-'####") End If End If End Sub End Class
  3. alguém me da um help nisso?
  4. 1) Com o código abaixo, cada vez que cliko nbo menu para abrir o formulario de clientes, eu abro uma nova instancia do formulario, ou seja, abro ele varias vezes e fica ele aberto "n" vezes. Mas, o que eu quero é que quando abero outro formuilario e o de clientes já tiver sido aberto antes, o form de Clientes fique por cima e não abra uma nova instancia: Dim Clientes As New Clientes() If IsNothing(Clientes) = False Then Clientes.MdiParent = Me Clientes.Show() End If 2) O Primeiro formulario que abro, ainda que a propriedade windows.state esteja setado como maximized, não abre maximizado de jeito nenhum. já do segundo form aberto em diante já abre maximizado. Como resolver isso? 3) como faço para verificar uma datagridview, se não tiver nem uma linha clikada (selecionada) forçar o usuario a selecionar pelo menos 1 linha? Um Feliz Natal a todos e um Feliz Ano Novo com Jesus Cristo no coração!
  5. como faço para verificar uma datagridview, se não tiver nem uma linha clikada (selecionada) forçar o usuario a selecionar pelo menos 1 linha?
  6. Ok turma era só converter o campo cpf_cnpj na SQL de BIGINT para CHAR. Vejam: select * from clientes where cast(cpf_cnpj as char) like '5%' um abraço a todos e feliz natal!
  7. Só para aproveitar o tópico, como faço para verificar uma datagridview, se não tiver nem uma linha clikada (selecionada) forçar o usuario a selecionar pelo menos 1 linha?
  8. sim., qualquer valor não encontra. Acho que pode ter algo haver com o Tipo BIGINT
  9. (rsrs) Sabia que alguém ia perguntar isso! Mas não! não acha. Fiz esse testa tambem O problema é que por possuir 14 caracters o campo aí não rola tipo INT que só se não me engano até 11 dai em diante só BIGINT
  10. Ola turma. Feliza natal a todos! Tenho um campo na tabela clientes do tipo bigint como o nome cpf_cnpj Ele grava valores de CPF'S e CNPJ'S Então, estou fazendo a seguinte consulta no MySql Front (e no VB.Net tambem): Select * from clientes where ativo='S' and cpf_cnpj like '5%' Existe um registro que começa com 5 mas a consulta não ach nada e nem da erro. O que pode ser?
  11. Consegui galera: Ficou assim: If CondPgto.Visible = True Then For Idx = 0 To CondPgto.Items.Count - 1 If CondPgto.GetItemChecked(Idx) Then 'está marcado o indice Idx envio o seu indice Idy = Idy + CondPgto.Items.Item(Idx) + " " End If Next Else Idy = "" End If
  12. Ola pessoal. Preciso de um help aqui com minha checkelistbox. É o seguinte: Tenho uma checkelistbox com 04 itens. São eles: 01-> texto = "07" 02-> texto = "14" 03-> texto = "21" 04-> texto = "28" Ela marca prazos para pagmento de pedidos em 07 e/ou 14 e/ou 21 e/ou 28 dias. Acontece que preciso gravar as opções do cliente em uma string para enviar para o banco com os valores marcados na CheckListBox em form de uma string em que seus valores fiquem separados por um espaço. Dessa forma: "07 14 21" Cheguei a fazer um código mas só consigo gravar os índice e não os valores. Vejam: Dim Idx As Integer Dim Idy As String = "" If CondPgto.Visible = True Then For Idx = 0 To CondPgto.Items.Count - 1 If CondPgto.CheckedItems(Idx) Then 'MsgBox(Idx) 'Dim idx2 As String = "" 'If CondPgto.CheckedItems(Idx) = 0 Then idx2 = "07" 'If CondPgto.CheckedItems(Idx) = 1 Then idx2 = "14" 'If CondPgto.CheckedItems(Idx) = 2 Then idx2 = "21" 'If CondPgto.CheckedItems(Idx) = 3 Then idx2 = "28" Idy = Idy + Convert.ToString(Idx) + " " End If Next Idx Else Idy = "" End If A CheckListBox´tem só 04 ítems. Obrigado para me ajudar com mais essa! E um Feliz Natal para todos!
  13. É mas como adapto: If CondPgto.GetSelected(0) Then 'está marcado o indice 0 End If No código abaixo para, formar a string com os valorers mostrados nas checkboxs e não os seus índices? If CondPgto.Visible = True Then For Idx = 0 To CondPgto.Items.Count - 1 If CondPgto.CheckedItems(Idx) Then MsgBox(Idx) Dim idx2 As String = "" If CondPgto.CheckedItems(Idx) = 0 Then idx2 = "07" If CondPgto.CheckedItems(Idx) = 1 Then idx2 = "14" If CondPgto.CheckedItems(Idx) = 2 Then idx2 = "21" If CondPgto.CheckedItems(Idx) = 3 Then idx2 = "28" Idy = Idy + Convert.ToString(idx2) + " " End If Next Idx Else Idy = "" End If Como faço para pegar o valor referente aquele indice da chekedlistbox?
  14. Ok pessoal essa tambem já consegui graças a voces. Agora to com um outro problema dentro do mesmo assunto. Porem, na ordem inversa: Voces me ajudaram a preecher(marcar) a CheckedListBox a partir de valores que vem do banco como string em valores separados por um espaço. Agora preciso o contrario: Enviar para o banco os valores marcados na CheckListBox em form de uma string em valores separados por um espaço. Cheguei a fazer um código mas só consigo gravar os índice e não os valores. Vejam: SnippetIf CondPgto.Visible = True Then For Idx = 0 To CondPgto.Items.Count - 1 If CondPgto.CheckedItems(Idx) Then Dim idx2 As String = "" If CondPgto.CheckedItems(Idx) = 0 Then idx2 = "07" If CondPgto.CheckedItems(Idx) = 1 Then idx2 = "14" If CondPgto.CheckedItems(Idx) = 2 Then idx2 = "21" If CondPgto.CheckedItems(Idx) = 3 Then idx2 = "28" Idy = Idy + Convert.ToString(idx2) + " " End If Next Idx Else Idy = "" End If A CheckListBox´tem só 04 ítems. Ah, ah proposito o código que faz a marcação da CheckedListBox a partir de valores que vem do banco como string em valores separados por um espaço. Segue: SnippetPrivate Sub InicializaListaPgto() Dim o As Integer 'Percorre todos os itens que existem no CheckedListBox For o = 0 To Me.CondPgto.Items.Count - 1 'Desmarca (Uncheck) cada um dos itens Me.CondPgto.SetItemChecked(o, False) Next Dim OpStr As String = Trim(dr.Item("CondPgto")) 'Cria um array com os valores, colocando-os separados por espaco em diferentes elementos do array Dim listaValores As String() listaValores = OpStr.Split(" ") Dim item As String Dim indice As Integer 'Percorre todos os itens que existem no seu array For Each item In listaValores 'Procura o item no CheckedListBox 'Se encontrar, retorna o ndice do item 'Se no encontrar, retorna -1 indice = Me.CondPgto.Items.IndexOf(item) 'Encontrou o item na lista? If (indice > 0) Then 'Sim, ento faz a marcao (Checked) Me.CondPgto.SetItemChecked(indice, True) ElseIf (indice = 0) Then 'Sim, ento faz a marcao (Checked) Me.CondPgto.SetItemChecked(0, True) End If Next End Sub
  15. O código abaixo esta uncionando correto com um pormenor: A cada pedido que eu mostro, ele guarda na chequelistbox o ítem dele. Tipo: Pedido 1 -> Cliente pediu compra a prazo para pagar com 07 e 14 dias Pedido 2 -> Cliente pediu compra a prazo para pagar com 21 e 28 dias na hora de eu mostrar o Pedido 1, ele mostra mas na hora de eu mostrar o Pedido 2 ele marca os do 2 e tambem o do 1 se eu voltar no pediddo 1 continua mostrando os do 2 e o do 1 tambem. Como resolve isso? Private Sub InicializaListaPgto() Dim OpStr As String = Trim(dr.Item("CondPgto")) 'Cria um array com os valores, colocando-os separados por espaco em diferentes elementos do array Dim listaValores As String() listaValores = OpStr.Split(" ") Dim item As String Dim indice As Integer 'Percorre todos os itens que existem no seu array For Each item In listaValores 'Procura o item no CheckedListBox 'Se encontrar, retorna o ndice do item 'Se não encontrar, retorna -1 indice = Me.CondPgto.Items.IndexOf(item) 'Encontrou o item na lista? If (indice > 0) Then 'Sim, então faz a marcao (Checked) Me.CondPgto.SetItemChecked(indice, True) ElseIf (indice = 0) Then 'Sim, ento faz a marcao (Checked) Me.CondPgto.SetItemChecked(0, True) End If Next End Sub
  16. No caso abaixo, onde eu colocari a sua inclusão? item = CondPgto.FindString("07") Private Sub InicializaListaPgto() Dim idx As Integer Dim opstr As String For idx = 0 To CondPgto.Items.Count - 1 CondPgto.SetItemChecked(idx, False) 'marca selecionados, conforme foi gravado opstr = Trim(dr.Item("condpgto").ToString) While opstr <> "" idx = InStr(opstr, " ") MessageBox.Show(idx) If idx > 0 Then CondPgto.SetItemChecked(Int(opstr.substring(1, idx - 1)), True) 'condpgto.checkeditems.indexof(int(opstr.substring(1, idx - 1))) opstr.remove(1, idx) Else CondPgto.SetItemChecked(Int(opstr), True) 'condpgto.checkeditems.indexof(int(opstr.substring(1, idx - 1))) opstr = "" End If End While Next idx End Sub
  17. Ola pessoal vou tentar se mais específico. seguinte: tenho a string Dim OpStr as string = "" 07 14" e tenho uma checkedlistbox com os ítens 07 14 21 e 28 Eu preciso criar uma matriz com os valores que estão na string OpStr tirando os espaços e de cada índice dessa matriz(Os seus valores 07 ou 14) e ver se existe na checkedlistbox algum item comesse valor, se tiver, marca-lo. Como fazer isso?
  18. Como faço para comparar se algum dos ítens de uma matriz é iguam à algum dos ítens de uma checklisbox e, se for igual, marcar o ítem da checklistbox?
  19. Ola, tentei do jeito abaixo mas ta dando o seguiunte erro: CheckedListBox.CheckedItemCollection é somente leitura Como resolve-lo? No Delphi não da isso! Sub InicializaListaPgto() Dim Idx As Integer Dim OpStr As String For Idx = 0 To CondPgto.Items.Count - 1 CondPgto.CheckedItems(Idx) = False 'marca selecionados, conforme foi gravado OpStr = Trim(dr.Item("CondPgto").ToString) While OpStr <> "" Idx = InStr(" ", OpStr) If Idx > 0 Then CondPgto.CheckedItems(Int(OpStr.Substring(1, Idx - 1))) = True OpStr.Remove(1, Idx) Else CondPgto.CheckedItems(Int(OpStr)) = True OpStr = "" End If End While Next Idx End Sub
  20. Galera. Consegui traduzir para VB.Net. Só que na hora de marcar os campos nma checklistbox, da erro e diz que ela é somente leitura.; Como posso resolver isso? Ficou assim: Private Sub InicializaListaPgto() Dim Idx As Integer Dim OpStr As String For Idx = 0 To CondPgto.Items.Count - 1 CondPgto.CheckedItems(Idx) = False 'marca selecionados, conforme foi gravado OpStr = Trim(dr.Item("CondPgto")) While OpStr <> "" Idx = InStr(" ", OpStr) If Idx > 0 Then CondPgto.CheckedItems(Convert.ToInt32(OpStr.Substring(1, Idx - 1))) = True OpStr.Remove(1, Idx) Else CondPgto.CheckedItems(Convert.ToInt32(OpStr)) = True OpStr = "" End If End While Next Idx End Sub
  21. Dois dificuldades; 1) Peguei o código Delphi abaixo e preciso passa-lo para VB.Net. Será quie alguém pode me ajudar? procedure TCPedidos.InicializaListaPgto; var Idx :Integer; OpStr : string; begin // limpa seleção for Idx := 0 to CLBpgto.Items.Count -1 do CLBpgto.Checked[Idx] := False; // marca selecionados, conf. foi gravado OpStr := Trim(QryPedidosListaPgto.AsString); while OpStr <> '' do begin Idx := Pos(' ', OpStr); if Idx > 0 then begin CLBpgto.Checked[StrToInt(Copy(OpStr, 1, Idx -1))] := True; Delete(OpStr, 1, Idx); end else begin CLBpgto.Checked[StrToInt(OpStr)] := True; OpStr := ''; end; end; end; A ideia aqui é pegar o resultado de listbox gravado no banco que chega separado por virgula e Popula a listbox. 2) O código abaixo é um código que faz validação de campos vazios no formulario. Mas, não sei porque cargas d'água o código sai dando as mensagens de campo vazio 1 por 1 e só para (faz o exit sub) só no endereco.text: Veja: Private Function Valida() As Boolean Dim ret As Boolean = True ' Assume sucesso na validao. If tipo1.Checked = False Then If tipo2.Checked = False Then MessageBox.Show("Escolha o tipo da pessoa se fsica ou jurdica!") tipo1.Focus() ret = False End If End If If Nome.Text = "" Then If tipo1.Checked = True Then MessageBox.Show("Preencha o Nome!") Nome.Focus() ret = False ElseIf tipo2.Checked = True Then MessageBox.Show("Preencha a Razo Social!") Nome.Focus() ret = False End If End If If cpf_cnpj.Text = "" Or cpf_cnpj.Text = "___.___.___-__" Or cpf_cnpj.Text = "__.___.___/____-__" Then If tipo1.Checked = True Then MessageBox.Show("Preencha o CPF!") cpf_cnpj.Focus() ret = False ElseIf tipo2.Checked = True Then MessageBox.Show("Preencha o CNPJ!") cpf_cnpj.Focus() ret = False End If End If If Len(cpf_cnpj.Text) = 14 Then If Not ValidaCPF(cpf_cnpj.Text) Then MessageBox.Show("CPF Invlido!") cpf_cnpj.Focus() ret = False End If ElseIf Len(cpf_cnpj.Text) = 18 Then If Not ValidaCNPJ(cpf_cnpj.Text) Then MessageBox.Show("CNPJ Invlido!") cpf_cnpj.Focus() ret = False End If End If If Endereco.Text = "" Then MessageBox.Show("Preencha campo Endereo!") Endereco.Focus() ret = False End If If Bairro.Text = "" Then MessageBox.Show("Preencha campo Bairro!") Bairro.Focus() ret = False End If If Cidade.Text = "" Then MessageBox.Show("Preencha campo Cidade!") Cidade.Focus() ret = False End If If Estado.Text = "" Then MessageBox.Show("Preencha campo Estado!") Estado.Focus() ret = False End If If Telefone.Text = "" Then MessageBox.Show("Preencha campo Telefone!") Telefone.Focus() ret = False End If Return ret End Function E para chamar: Assim: Private Sub Novo_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Novo.Click If Novo.Text = "Novo" Then For Each c As Control In Me.grpClientes.Controls If TypeOf c Is TextBox OrElse TypeOf c Is MaskedTextBox Then c.Text = "" End If Next Codigo.Enabled = False cpf_cnpj.Visible = False Nome.Visible = False LabelNome.Visible = False data.Visible = False Codigo.Visible = False LabelCodigo.Visible = False IE.Visible = False LabelIE.Visible = False LabelCPF.Visible = False Atualizar.Enabled = False Eliminar.Enabled = False tipo1.Checked = False tipo2.Checked = False Encerrar.Text = "Cancela" Novo.Text = "Incluir" habilita() Nome.Focus() ElseIf Novo.Text = "Incluir" Then If Not Valida() Then Exit Sub End If dr = dt.NewRow incluirRegistro(dr) Novo.Text = "Novo" Encerrar.Text = "Encerrar" Atualizar.Enabled = True Eliminar.Enabled = True desabilita() End If End Sub Onde será que esta o erro?
×
×
  • Criar Novo...