Crear un punto de venta (2 de 10)

InicioAnteriorSiguienteFinal

Utilidad para configurar la conexión a la base de datos

Continuamos con el proyecto proTienda_MATRICULA.

Contenido:

• Diseño de las pantallas
• Programación

Diseño de las pantallas:

La aplicación contaba ya con una clase y dos formularios, agregaremos un tercer formulario (frmAppConfig) para que nuestro proyecto se organice así:



Nota: aquí se muestran otros formularios, los cuales debemos pasar por alto por el momento. Estos se realizarán posteriormente.

El nuevo formulario (frmAppConfig), debe quedar como se muestra:



Le agregamos cinco Label, cinco TextBox y tres Button. Según la siguiente tabla:



Programación:

Antes quiero hacer la aclaración de que al formulario mdiMain no se le hará ningún diseño por el momento.

Comenzaremos por escribir el código para frmAppConfig.

Estructura del código:

//Directivas Using
using System;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
using System.Configuration;
using System.IO;
/* Comentarios:
* Programador: Lic. Juan Gabriel Castillo T.
* Carrera: Licenciado en Computación Administrativa
* Matricula: 9921868
* Fecha: 15 de Marzo del 2025
* Materia: Lenguaje Visual
*/
namespace proTienda_9921868.Forms
{
public partial class frmAppConfig : Form
{
public frmAppConfig()
{
//Contructor por defecto
InitializeComponent();
}
//Declaraciones
private void frmAppConfig_Load(object sender, EventArgs e)
{
//Form_Load
}
//Funciones y procedimientos
}
}



En la sección Declaraciones, agregamos lo siguiente:


Hacemos doble clic al formulario y ponemos el siguiente código en el Form_Load:

            //Form_Load            
txtFileName.Text =
ConfigurationManager.AppSettings["DataFile1"];
txtNombreNegocio.Text =
ConfigurationManager.AppSettings["NombreNegocio"];
txtRFC.Text =
ConfigurationManager.AppSettings["RFC"];
txtTelefono.Text =
ConfigurationManager.AppSettings["Telefono"];
txtDireccionFiscal.Text =
ConfigurationManager.AppSettings["DireccionFiscal"];


Hacemos doble click en el botón btnOK y agregamos el siguiente código:

if (File.Exists(txtFileName.Text))
{
System.Configuration.Configuration config =
ConfigurationManager.
OpenExeConfiguration(ConfigurationUserLevel.None);
//Borramos la configuración actual
config.AppSettings.Settings.Remove("DataFile1");
config.AppSettings.Settings.Remove("NombreNegocio");
config.AppSettings.Settings.Remove("RFC");
config.AppSettings.Settings.Remove("Telefono");
config.AppSettings.Settings.Remove("DireccionFiscal");
config.Save(ConfigurationSaveMode.Modified);
//Force a reload of the changed section.
ConfigurationManager.RefreshSection("appSettings");
//Grabamos la configuración nueva
config.AppSettings.Settings.Add("DataFile1",
txtFileName.Text);
config.AppSettings.Settings.Add("NombreNegocio",
txtNombreNegocio.Text);
config.AppSettings.Settings.Add("RFC", txtRFC.Text);
config.AppSettings.Settings.Add("Telefono",
txtTelefono.Text);
config.AppSettings.Settings.Add("DireccionFiscal",
txtDireccionFiscal.Text);
// Save the configuration file.
config.Save(ConfigurationSaveMode.Modified);
//Force a reload of the changed section.
ConfigurationManager.RefreshSection("appSettings");
this.Close();
}
else {
MessageBox.Show("¡El archivo de Base de datos no existe!",
"Información del sistema",
MessageBoxButtons.OK, MessageBoxIcon.Error);
}


Al botón btnCancel, le agregamos lo siguiente:

this.Close();


Al botón btnSearch, le ponemos el siguiente código:

OpenFileDialog m_OpenFile = new OpenFileDialog();
m_OpenFile.Title =
"Buscar Base de datos de Microsoft Access";
m_OpenFile.Filter =
"Todos los archivos(*.*)|*.*|Base de datos Access (*.mdb)|*.mdb";
m_OpenFile.FilterIndex = 2;
if (m_OpenFile.ShowDialog() == DialogResult.OK)
{
txtFileName.Text = m_OpenFile.FileName.ToString();

}
else
{
btnOK.Enabled = false;
}


Después abrimos el formulario frmLogin y le agregamos una LinkLabel (lblDataBase), para que el formulario quede como se muestra:



Hacemos soble clic sobre lblDataBase y escribimos el siguiente código:

Forms.frmAppConfig _frmAppConfig = new frmAppConfig();
_frmAppConfig.StartPosition = FormStartPosition.CenterScreen;
_frmAppConfig.ShowDialog();


De esta manera, cuando se haga clic sobre la etiqueta, se abrirá frmAppConfig.

Ahora editamos el código de clsMain, que debe quedar como se muestra (he marcado con negrita la porción de código que fue afectado):

using System;
using System.Configuration;
using System.Windows.Forms;
using System.IO;
namespace proTienda_9921868.Class{
class clsMain{
[STAThread]
static void Main()
{
Forms.frmLogin my_frmLogin = new Forms.frmLogin();
Application.Run(my_frmLogin);
if (Forms.frmLogin._Logged == true){
Forms.mdiMain my_mdiMain = new Forms.mdiMain();
Application.Run(my_mdiMain);
}
else{
Application.Exit();
}
}
public static string CnnStr {
get {
string Retorno = "";
string varFileName = "";
try{
varFileName =
ConfigurationManager.AppSettings["DataFile1"];
if (File.Exists(varFileName)){
Retorno =
"Provider=Microsoft.Jet.OLEDB.4.0;" +
"Data Source=" +
varFileName + ";" +
"Persist Security Info=False";
}
else{
MessageBox.Show("¡El archivo de Base"+
" de datos no existe!",
"Información del sistema",
MessageBoxButtons.OK,
MessageBoxIcon.Error);
}
return (Retorno);
}
catch (Exception ex) {
MessageBox.Show(ex.Message,
"Información del Sistema",
MessageBoxButtons.OK,
MessageBoxIcon.Error);
return (Retorno);
}

}
}
}
}


Explicaciones sobre el código:

Generalizando. Nuestra aplicación podrá leer la ruta de la base de datos en tiempo de ejecición. Esto nos da la gran posibilidad de poner nuestra aplicación en red. Esto nos ayudará a que la base de datos pueda estar localizada en cualquier parte de la Computadora o de la Red.

Detalladamente. Tenemos un formulario en el cual podemos, mediante un archivo XML, editar la ruta en la cual se encuentra la Base de datos. Utilizamos objetos que nos permiten Explorar los archivos de windows; parecido a si fueramos a abrir un documento de cualquier aplicación de Microsoft Office. Utilizamos un Archivo XML el cual es perfectamente legible a nuestros ojos, editable con cualquier editor de texto y ligero en tamaño.
Modificamos la variable CnnStr y la convertimos en Propiedad, eso nos da una posiblidad mayor en cuanto a lo que podemos realizar.
La utilización de Propiedades (Properties) en lugar de Campos (Fields) o variables nos permite una mejor administración de código además de que nos acerca mas a la programación Orienntada a Objetos.
De hecho, en estos momentos ya hemos realizado este tipo de desarrollo. Hemos creado la clase frmLogin, la cual nos proporciona varias de las características de la programación orientada a objetos.



También creamos la clase clsMain



Lo mejor es que antes de programar podamos hacer nuestros diagramas de clase para tener una visión mas clara de lo que tenemos que realizar. Para este proyecto ya me he adelantado en el análisis para que no tengamos que detenernos en esos aspectos. Se recomienda leer bibliografia sobre UML (Lenguaje Unificado de Modelado) para entender los diagramas.

Suerte…

21 comentarios:

  1. Muy bueno sigo en camino y me gsuta mucho tu ejemplos estoy siguiendo los pasos y nuevamente gracias por el ejemplo .... mi correo es richardt_2000@hotmail.com

    ResponderEliminar
  2. no hay nada en la seccion de declaraciones, que declaraciones se tienen que poner????????????

    ResponderEliminar
  3. me marca error en lo nombres de configurationmanager por k sera eso

    ResponderEliminar
    Respuestas
    1. No sólo es necesario utilizar el espacio de nombres System.Configuration. También tienes que añadir la referencia al ensamblado System.Configuration.dll, por derecho del ratón-ción en la ficha Referencias, elija agregar una referencia y luego encontrar System.Configuration.

      Eliminar
  4. porque me marca error en lo nombres de configurationmanager ???

    ResponderEliminar
    Respuestas
    1. No sólo es necesario utilizar el espacio de nombres System.Configuration. También tienes que añadir la referencia al ensamblado System.Configuration.dll, por derecho del ratón-ción en la ficha Referencias, elija agregar una referencia y luego encontrar System.Configuration. Esto va a funcionar con seguridad. También para el NameValueCollection tienes que escribir: usando System.Collections.Specialized;

      Eliminar
  5. Saludos:

    En la seccion de declaraciones que se tiene que poner?

    Gracias por este excelente ejemplo y por asistir a los principiantes como nosotros en este tipo de cosas.

    ResponderEliminar
  6. para este caso, nolleva nada, solo en el de login
    salu2

    ResponderEliminar
  7. hola tengo error en la clase? alguien me puede ayudar en este codigo muestra error, le agradeceria mucho.

    Forms.frmLogin my_frmLogin = new Forms.frmLogin(); Application.Run(my_frmLogin);

    ResponderEliminar
    Respuestas
    1. intenta asi: frmLogin my_frmLogin = new frmLogin(); Application.Run(my_frmLogin);

      Eliminar
    2. Me salvaste la vida!

      Eliminar
  8. Alguien me podria facilitar la base de datos??

    S_Juanito@outlook.com

    ResponderEliminar
  9. estimado en el sector de modificacion del clsmain no hay nada agregado hay algo mas que agregarle pues pusiste "he marcado con negrita" pero no hay nada marcado

    ResponderEliminar
    Respuestas
    1. a proposito esta muy genial el codigo y todo

      Eliminar
  10. En la seccion de las declaraciones del FmrAppConfig que hay que poner?

    ResponderEliminar
  11. alguien tendra ya terminado el programa ?? que por favor me lo pueda mandar,
    se lo agradeceria demacias , lyriz_182@hotmail.com

    ResponderEliminar
    Respuestas
    1. estoy por terminarlo te interesa todavia

      Eliminar
    2. a mi si me interesa amigo, me podrias ayudar por favor? mi correo es alfonsomozkoh@gmail.com
      Muchas Gracias!

      Eliminar
  12. estoy por terminarlo te interesa todavia

    ResponderEliminar
    Respuestas
    1. Hola, men tengo un problema en este proyecto,,, me ayudas

      Eliminar