9. Tela Ordem de Serviço
Em Data Sources : Escolha a tabela tbClienteEm Value Member : Escolha a coluna idNomeEm Selected Value : Em tbOrdemServicoBindingSource > idCliente
Desabilite o campo Código OS, Data do Cadastro e Cadastrado Por, pela propriedade Enable.
Modifique os componentes a seguir do formulário Ordem de Serviço:
Propriedades | Valores |
Size | 505; 630 |
StartPosition | CenterScreen |
Text | Cadastrar OS |
Insira uma groupBox e mude as propriedades a seguir:
Propriedades | Valores |
Location | 12; 27 |
Size | 470; 228 |
Text | Dados OS |
Mude na Paleta Data Sources os tipos de campo de idCliente e idServico para ComboBox., arraste e organize de acordo com o seu jeito. Podendo seguir Como na imagem:
Adicione os seguintes componentes para dentro da GroupBox:
Label | Text = Filtrar Por |
ComboBox | Edit Items: Código, Nome e name = cbmFiltrar |
Label | Text = “=” |
TextBox | Name = txtPesquisar |
Botão | Name = btnPesquisar , Text = Pesquisar |
Adicione uma groupBox e dentro dela acrescente a tabela tbOrdemServico. Clique na seta ao lado e desmarque as opções a Enable Adding, Enable Editing, Enable Deleting, clique em Dock in parente containers e EditColumns:
Modifique os nomes de cada coluna a seu gosto:
Clique na comboBox Nome do Cliente na seta :
Em Member Value: Escolha a coluna idCliente
Faça isso com a comboBox Nome do Serviço.
Clique duas vezes no botão pesquisar e insira o código a seguir:
try { if (cbmFiltrar.Text == "Código OS") { //Define a instrução Sql string sql = "SELECT * FROM tbOrdemServico WHERE idOrdem =" + txtPesquisar.Text + ""; //Lê os dados da variavel sql e conectar no cn cmd = new SqlCommand(sql, cn); //Abre conexão cn.Open(); //Define o valor da CommandType para cmd cmd.CommandType = CommandType.Text; /*Representa um conjunto de comandos de dados e uma conexão de banco de dados que são usados para preencher o DataSet e atualizar um banco de dados SQL Server.*/ SqlDataAdapter da = new SqlDataAdapter(cmd); //Representa uma tabela de dados na memória. DataTable os = new DataTable(); /* Adiciona ou atualiza linhas * dados usando o DataTable.*/ da.Fill(os); /*A tbUsuarioDataGridView recebe o DataTable usuario*/ tbOrdemServicoDataGridView.DataSource = os; //Fechar a conexão } if (cbmFiltrar.Text == "Código Cliente") { //define a instrução SQL string sql = "SELECT * FROM tbOrdemServico WHERE idCliente =" + txtPesquisar.Text + ""; cmd = new SqlCommand(sql, cn); cn.Open(); cmd.CommandType = CommandType.Text; SqlDataAdapter da = new SqlDataAdapter(cmd); DataTable os = new DataTable(); da.Fill(os); tbOrdemServicoDataGridView.DataSource = os; } if (cbmFiltrar.Text == "Código Serviço") { //define a instrução SQL string sql = "SELECT * FROM tbOrdemServico WHERE idServico=" + txtPesquisar.Text + ""; cmd = new SqlCommand(sql, cn); cn.Open(); cmd.CommandType = CommandType.Text; SqlDataAdapter da = new SqlDataAdapter(cmd); DataTable os = new DataTable(); da.Fill(os); tbOrdemServicoDataGridView.DataSource = os; } } catch (Exception ex) { MessageBox.Show(ex.Message); } finally { cn.Close(); } |
Clique Duas vezes no botão Adicionar Registro e insira o código abaixo:
//Desabilita o botão excluir para quem tiver nivel de acesso Operador if (frmLogin.NivelAcesso == "Operador") { bindingNavigatorDeleteItem.Enabled = false; } |
Clique duas Vezes no botão Salvar e digite o Código a seguir:
try { //Desabilita o botão excluir para quem tiver nivel de acesso Operador if (frmLogin.NivelAcesso == "Operador") { bindingNavigatorDeleteItem.Enabled = false; } if ((idClienteComboBox.Text != "") && (idServicoComboBox.Text != "")) { if (dataDiaTextBox.Text == "") { dataDiaTextBox.Text = DateTime.Now.ToString(); } if (cadastradorPorTextBox.Text == "") { cadastradorPorTextBox.Text = frmLogin.usuarioConectado; } this.Validate(); this.tbOrdemServicoBindingSource.EndEdit(); this.tbOrdemServicoTableAdapter.Update(this.servicoDataSet.tbOrdemServico); MessageBox.Show("Cadastro realizado com sucesso"); } else { MessageBox.Show("Todos os campos são obrigatorio"); } } catch (Exception ex) { MessageBox.Show(ex.Message); } finally { cn.Close(); } |
Seu Layout poderá ter ficado da seguinte forma:
Insira o método para limpar o formulário:
private void LimparCampo() { idOrdemTextBox.Clear(); idClienteComboBox.SelectedIndex = -1; idServicoComboBox.SelectedIndex = -1; dataDiaTextBox.Clear(); cadastradorPorTextBox.Clear(); } |
Adicione o Código para puxar os dados de uma DataGrid para o formulário:
LimparCampo(); idOrdemTextBox.Text = tbOrdemServicoDataGridView.CurrentRow.Cells[0].Value.ToString(); idClienteComboBox.Text = tbOrdemServicoDataGridView.CurrentRow.Cells[1].Value.ToString(); idServicoComboBox.Text = tbOrdemServicoDataGridView.CurrentRow.Cells[2].Value.ToString(); dataDiaTextBox.Text = tbOrdemServicoDataGridView.CurrentRow.Cells[3].Value.ToString(); cadastradorPorTextBox.Text = tbOrdemServicoDataGridView.CurrentRow.Cells[4].Value.ToString(); |
Pronto o Cadastrar OS está pronto na próxima Parte será criado a Tela Principal.
By: Natanael
By: Natanael
Natanael, Bom dia
ResponderExcluirTive problemas na tela de ordens de serviço, quando abro ela, é mostrado pra mim os nomes dos clientes e os serviços que cadastrei, só que quando vou adicionar e seleciono o cliente o sistema não deixa eu clicar em mais nada na tela, simplesmente não consigo selecionar o serviço.
Quando puder me da mais esta ajuda.
Grato
Uélisson
Boa noite,
ResponderExcluirEstou tendo o mesmo problema acima do Uelisson.
Voce pode me ajudar tambem?
Abs,
Fabricio Rocha
O Sistema apenas salvar a ordem de serviço quando o código do cliente e o código do serviço estive preenchido com o número do código e não o nome do cliente e do serviço. Pois no banco de dados foi declarado com inteiro.
ResponderExcluirNatanael,
ResponderExcluirMais uma duvida ao preencher a comboBox Nome do Cliente.
Segundo o tutorial devo escolher "Em Value Member: Escolha a coluna idNome".
No entanto, não existe na tabela tbCliente a coluna idnome, somente a coluna nome.
Posso utilizar a coluna nome da tabela tbCliente em value member?
Abs,
Fabricio Rocha
no value member utilize a coluna id(codigo) do serviço e do cliente
ResponderExcluirOi Natanael, td bom cara??? gostei muito do tutorial consegui fazer todo o sistema ficou perfeito, todas a telas, incluido;excluindo e salvando, mas tambem assim como os outros não consegui deixar a tela frmOS funcionando, ela trava depois que esquelhe um dos combobox (cliente ou serviço),depois que trava pra fechar aplicação só msm pelo gerenciador de tarefas do windows , veja como fiz para as duas combos
ResponderExcluirpara a combo cliente:
Data source: tbClienteBindingSource
Display Member : Nome
Value Member: idCliente
select value: tbOrdemservicoBindingSource - idCliente
Data source: tbServicoBindingSource
Display Member : Descricao
Value Member: idServico
selected value: tbOrdemservicoBindingSource - idServico
outra coisa percebi que a combo estava com a propriedade dropdownStyle = dropdowm, mudei para dropdownList, mas não adiantou....
agradeço se puder me ajudar pois gostei muito da experiencia e queria ver o sosftware rodando 100%... valeu fico no aguardo...
Também estou com o mesmo problema na tela de ordem de serviço
ResponderExcluirdepois que eu escolho o IDcliente ele não me deixa escolher o ID servico a combobox trava e a tela também, tenho que fechar no ctrl+al+del
:(
descobri o erro pessoal, o problema está na configuração da combobox, onde o a atribuição da "value member" não pode ser uma string, um nome por ex tem que ser o ID isso para a idcliente e a idservico
ResponderExcluirabrax
luiz
ResponderExcluirestou com o mesmo problema.
voce poderia colocar o codigo exato q vc utilizou?
nos moldes do Giliardi.
obrigado amigo
Bom dia Luiz,
ResponderExcluirComo o Luiz dizer, ele não aceita uma string por isso ainda não é possivel selecionar pelo nome, então, no value member insira como ID, e assim ira funcionar.
Alguém conseguiu fazer a tela de cadastro de frmOS funcionar? Preciso de ajuda com ela. Trava a aplicação.
ResponderExcluirAlguem acrescentou no Form OS o nome do Serviço e o Nome do cliente?
ResponderExcluirPessoal,
ResponderExcluirJá coloquei o ValueMember como Id mas ainda está travando, o que mais tenho que alterar?