Inicio | Anterior | Siguiente | Final |
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…
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
ResponderEliminarno hay nada en la seccion de declaraciones, que declaraciones se tienen que poner????????????
ResponderEliminarme marca error en lo nombres de configurationmanager por k sera eso
ResponderEliminarNo 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.
Eliminarporque me marca error en lo nombres de configurationmanager ???
ResponderEliminarNo 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;
EliminarSaludos:
ResponderEliminarEn 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.
para este caso, nolleva nada, solo en el de login
ResponderEliminarsalu2
hola tengo error en la clase? alguien me puede ayudar en este codigo muestra error, le agradeceria mucho.
ResponderEliminarForms.frmLogin my_frmLogin = new Forms.frmLogin(); Application.Run(my_frmLogin);
intenta asi: frmLogin my_frmLogin = new frmLogin(); Application.Run(my_frmLogin);
EliminarMe salvaste la vida!
EliminarAlguien me podria facilitar la base de datos??
ResponderEliminarS_Juanito@outlook.com
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
ResponderEliminara proposito esta muy genial el codigo y todo
EliminarEn la seccion de las declaraciones del FmrAppConfig que hay que poner?
ResponderEliminaralguien tendra ya terminado el programa ?? que por favor me lo pueda mandar,
ResponderEliminarse lo agradeceria demacias , lyriz_182@hotmail.com
estoy por terminarlo te interesa todavia
Eliminara mi si me interesa amigo, me podrias ayudar por favor? mi correo es alfonsomozkoh@gmail.com
EliminarMuchas Gracias!
estoy por terminarlo te interesa todavia
ResponderEliminarHola, men tengo un problema en este proyecto,,, me ayudas
EliminarPodrías proporcionármelo?
Eliminar