Diseño Sistema de Ventas C# - Visual Studio 2013 y Sql Server 2014 (18-41) Formulario frmProveedor
Buen día amigos, En este artículo implementaremos el formulario frmProveedor para poder insertar, editar, eliminar, mostrar y filtrar los proveedores desde un formulario en visual studio c#, utilizando como gestor de base de datos Sql Server; Continuamos en este curso de desarrollar un sistema de ventas utilizando arquitectura de programación en 3 capas (Datos, Negocio, Presentación).
Pueden descargar el paquete del proyecto desarrollado en el curso, la base de datos, los procedimientos almacenados y el sistema completo hasta el Video 41 desde:
Puedes descargar la versión completa del proyecto con todas las funcionalidades terminadas desde:
Pueden seguir el curso completo y aprender a desarrollar un Sistema de Ventas en Csharp.Net utilizando como IDE de desarrollo Visual Studio 2013 y como gestor de Base de datos SQL Server 2014 desde:
No se olviden siempre de Visitar mi canal www.youtube.com/jcarlosad7 para ver los nuevos cursos.
Formulario frmProveedor - Listado
Formulario frmProveedor - Mantenimiento
Código del formulario frmProveedor
using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Threading.Tasks; using System.Windows.Forms; using CapaNegocio; namespace CapaPresentacion { public partial class frmProveedor : Form { //Variable que nos indica si vamos a insertar un nuevo producto private bool IsNuevo = false; //Variable que nos indica si vamos a modificar un producto private bool IsModificar = false; //Constructor del formulario public frmProveedor() { InitializeComponent(); this.ttMensaje.SetToolTip(this.txtRazon_Social, "Ingrese la Razón social del Proveedor"); this.ttMensaje.SetToolTip(this.txtNum_Documento, "Ingrese el Documento del Proveedor"); this.ttMensaje.SetToolTip(this.txtDireccion, "Ingrese la Dirección del Proveedor"); } //Para mostrar mensaje de confirmación private void MensajeOK(string Mensaje) { MessageBox.Show(Mensaje, "Sistema Ventas", MessageBoxButtons.OK, MessageBoxIcon.Information); } //Para mostrar mensaje de error private void MensajeError(string Mensaje) { MessageBox.Show(Mensaje, "Sistema Ventas", MessageBoxButtons.OK, MessageBoxIcon.Error); } //Limpia los controles del formulario private void Limpiar() { this.txtIdproveedor.Text = string.Empty; this.txtRazon_Social.Text = string.Empty; this.txtNum_Documento.Text = string.Empty; this.txtDireccion.Text = string.Empty; this.txtTelefono.Text = string.Empty; this.txtEmail.Text = string.Empty; this.txtUrl.Text = string.Empty; } //Habilita los controles de los formularios private void Habilitar(bool Valor) { this.txtIdproveedor.ReadOnly = !Valor; this.txtRazon_Social.ReadOnly = !Valor; this.cbSector_Comercial.Enabled = Valor; this.txtDireccion.ReadOnly = !Valor; this.cbTipo_Documento.Enabled = Valor; this.txtNum_Documento.Enabled = Valor; this.txtDireccion.ReadOnly = !Valor; this.txtTelefono.ReadOnly = !Valor; this.txtEmail.ReadOnly = !Valor; this.txtUrl.ReadOnly = !Valor; } //Habilita los botones private void Botones() { if (this.IsNuevo || this.IsModificar) { this.Habilitar(true); this.btnNuevo.Enabled = false; this.btnGuardar.Enabled = true; this.btnEditar.Enabled = false; this.btnCancelar.Enabled = true; } else { this.Habilitar(false); this.btnNuevo.Enabled = true; this.btnGuardar.Enabled = false; this.btnEditar.Enabled = true; this.btnCancelar.Enabled = false; } } private void OcultarColumnas() { this.dataListado.Columns[0].Visible = false; this.dataListado.Columns[1].Visible = false; } private void Mostrar() { this.dataListado.DataSource = NProveedor.Mostrar(); this.OcultarColumnas(); lblTotal.Text = "Total Registros: " + Convert.ToString(dataListado.Rows.Count); } private void BuscarRazon_Social() { this.dataListado.DataSource = NProveedor.BuscarRazon_Social(this.txtBuscar.Text); this.OcultarColumnas(); lblTotal.Text = "Total Registros: " + Convert.ToString(dataListado.Rows.Count); } private void BuscarNum_Documento() { this.dataListado.DataSource = NProveedor.BuscarNum_Documento(this.txtBuscar.Text); this.OcultarColumnas(); lblTotal.Text = "Total Registros: " + Convert.ToString(dataListado.Rows.Count); } private void textBox1_TextChanged(object sender, EventArgs e) { } private void frmProveedor_Load(object sender, EventArgs e) { //Para ubicar al formulario en la parte superior del contenedor this.Top = 0; this.Left = 0; //Le decimos al DataGridView que no auto genere las columnas //this.datalistado.AutoGenerateColumns = false; //Llenamos el DataGridView con la informacion //de todos nuestros Proveedores this.Mostrar(); //Deshabilita los controles this.Habilitar(false); //Establece los botones this.Botones(); } private void btnBuscar_Click(object sender, EventArgs e) { if (cbBuscar.Text.Equals("Razon Social")) { this.BuscarRazon_Social(); } else if (cbBuscar.Text.Equals("Documento")) { this.BuscarNum_Documento(); } } private void btnEliminar_Click(object sender, EventArgs e) { try { DialogResult Opcion; Opcion = MessageBox.Show("Realmente Desea Eliminar los Registros", "Sistema de Ventas", MessageBoxButtons.OKCancel, MessageBoxIcon.Question); if (Opcion == DialogResult.OK) { string Codigo; string Rpta = ""; foreach (DataGridViewRow row in dataListado.Rows) { if (Convert.ToBoolean(row.Cells[0].Value)) { Codigo = Convert.ToString(row.Cells[1].Value); Rpta = NProveedor.Eliminar(Convert.ToInt32(Codigo)); if (Rpta.Equals("OK")) { this.MensajeOK("Se Eliminó Correctamente el registro"); } else { this.MensajeError(Rpta); } } } this.Mostrar(); } } catch (Exception ex) { MessageBox.Show(ex.Message + ex.StackTrace); } } private void btnNuevo_Click(object sender, EventArgs e) { this.IsNuevo = true; this.IsModificar = false; this.Botones(); this.Limpiar(); this.Habilitar(true); this.txtRazon_Social.Focus(); } private void btnGuardar_Click(object sender, EventArgs e) { try { //La variable que almacena si se inserto //o se modifico la tabla string Rpta = ""; if (this.txtRazon_Social.Text == string.Empty || this.txtNum_Documento.Text == string.Empty || txtDireccion.Text == string.Empty) { MensajeError("Falta ingresar algunos datos, serán remarcados"); errorIcono.SetError(txtRazon_Social, "Ingrese un Valor"); errorIcono.SetError(txtNum_Documento, "Ingrese un Valor"); errorIcono.SetError(txtDireccion, "Ingrese un Valor"); } else { if (this.IsNuevo) { //Vamos a insertar un Proveedor Rpta = NProveedor.Insertar(this.txtRazon_Social.Text.Trim().ToUpper(), cbSector_Comercial.Text, cbTipo_Documento.Text, txtNum_Documento.Text, txtDireccion.Text, txtTelefono.Text, txtEmail.Text,txtUrl.Text); } else { //Vamos a modificar un Proveedor Rpta = NProveedor.Editar(Convert.ToInt32(this.txtIdproveedor.Text), this.txtRazon_Social.Text.Trim().ToUpper(), cbSector_Comercial.Text, cbTipo_Documento.Text, txtNum_Documento.Text, txtDireccion.Text, txtTelefono.Text, txtEmail.Text, txtUrl.Text); } //Si la respuesta fue OK, fue porque se modifico //o inserto el Proveedor //de forma correcta if (Rpta.Equals("OK")) { if (this.IsNuevo) { this.MensajeOK("Se insertó de forma correcta el registro"); } else { this.MensajeOK("Se actualizó de forma correcta el registro"); } } else { //Mostramos el mensaje de error this.MensajeError(Rpta); } this.IsNuevo = false; this.IsModificar = false; this.Botones(); this.Limpiar(); this.Mostrar(); this.txtIdproveedor.Text = ""; } } catch (Exception ex) { MessageBox.Show(ex.Message + ex.StackTrace); } } private void btnEditar_Click(object sender, EventArgs e) { //Si no ha seleccionado un Proveedor no puede modificar if (!this.txtIdproveedor.Text.Equals("")) { this.IsModificar = true; this.Botones(); } else { this.MensajeError("Debe de buscar un registro para Modificar"); } } private void btnCancelar_Click(object sender, EventArgs e) { this.IsNuevo = false; this.IsModificar = false; this.Botones(); this.Limpiar(); this.txtIdproveedor.Text = string.Empty; } private void dataListado_CellContentClick(object sender, DataGridViewCellEventArgs e) { if (e.ColumnIndex == dataListado.Columns["Eliminar"].Index) { DataGridViewCheckBoxCell ChkEliminar = (DataGridViewCheckBoxCell)dataListado.Rows[e.RowIndex].Cells["Eliminar"]; ChkEliminar.Value = !Convert.ToBoolean(ChkEliminar.Value); } } private void dataListado_DoubleClick(object sender, EventArgs e) { this.txtIdproveedor.Text = Convert.ToString(this.dataListado.CurrentRow.Cells["idproveedor"].Value); this.txtRazon_Social.Text = Convert.ToString(this.dataListado.CurrentRow.Cells["razon_social"].Value); this.cbSector_Comercial.Text = Convert.ToString(this.dataListado.CurrentRow.Cells["sector_comercial"].Value); this.cbTipo_Documento.Text = Convert.ToString(this.dataListado.CurrentRow.Cells["tipo_documento"].Value); this.txtNum_Documento.Text = Convert.ToString(this.dataListado.CurrentRow.Cells["num_documento"].Value); this.txtDireccion.Text = Convert.ToString(this.dataListado.CurrentRow.Cells["direccion"].Value); this.txtTelefono.Text = Convert.ToString(this.dataListado.CurrentRow.Cells["telefono"].Value); this.txtEmail.Text = Convert.ToString(this.dataListado.CurrentRow.Cells["email"].Value); this.txtUrl.Text = Convert.ToString(this.dataListado.CurrentRow.Cells["url"].Value); this.tabControl1.SelectedIndex = 1; } private void chkEliminar_CheckedChanged(object sender, EventArgs e) { if (chkEliminar.Checked) { this.dataListado.Columns[0].Visible = true; } else { this.dataListado.Columns[0].Visible = false; } } } }
Video 18: Sistema de Ventas C# - Visual Studio 2013 - Sql Server 2014 (18-34) Formulario Proveedor
Saludos Imperio, un abrazo a la distancia!
Diseño Sistema de Ventas C# - Visual Studio 2013 y Sql Server 2014 (18-41) Formulario frmProveedor
Reviewed by IncanatoIt-ad
on
22:04
Rating:
tengo un error en las parte de ocultar columnas me marca de "no se controlo argumentoutofrange exception
ResponderEliminarHola Juan Carlos, te agradezco las desinteresadas clases de programación que compartís en la internet. Finalizando este video de la aula 18, cuando mandamos ejecutar el formulario, me sale un error en el método ocultar columnas, me dice que el índice está fuera del intervalo, mas especificamente el segundo índice, tenes alguna idea donde puedo revisar para solucionar este problema? Te agradezco nuevamente, un abrazo!
ResponderEliminarAl parecer hay un error al momento de llamar al método mostrar, ya que no se muestran los resultados en el datagridview, como no se muestran los resultados no aparecen las columnas (solo la primera columna del check eliminar), revise si se muestran los resultados ejecutando solo el procedimiento almacenado desde sql server, si se muestran revise su método mostrar en la capa Datos.
EliminarNo Juan Carlos, no llega a mostrar el formulario, va derecho al error en esa 2º linea del índice del método ocultar columnas, ya copié y pegué tu código encima del mio, y nada! Quedé parado!
EliminarHola, tienes que llamar al método ocultar columnas pero cuando se tiene al menos una fila, esto revisalo en el método mostrar.
EliminarEntendi Juan Carlos, en mi código tengo eso (como puedes ver esta llamando al método ocultar)
Eliminar//Método Mostrar
private void Mostrar()
{
this.dataListado.DataSource = NProveedor.Mostrar();
this.OcultarColumnas();
lblTotal.Text = "Total de registros: " + Convert.ToString(dataListado.Rows.Count);
}
Hola Juan, tengo un problema al momento de copiar el código del botón "guardar". En esta sección :
ResponderEliminarif (this.IsNuevo)
{
rpta = NProveedor.Insertar(this.txtRazon_Social.Text.Trim().ToUpper(),
cbCiudad.Text, cbTipo_Documento.Text, txtNum_Documento.Text, txtDireccion.Text, txtTelefono.Text, txtEmail.Text, txtUrl.Text);
}
Donde dice "Insertar" me salta error, y me indica lo siguiente :"No se ha dado ningún argumento que corresponda al parámetro formal requerido 'url' de 'NProveedor.Insertar(string,string,string...string)'
No encuentro el error, ayuda.
Gracias.