Crear un boton para guardar Visual C#

Iniciado por carlangasds, 15 Enero 2014, 23:15 PM

0 Miembros y 2 Visitantes están viendo este tema.

carlangasds

Hola, quisiera saber como hacer un botón para guardar los datos (no estoy usando ninguna basa de datos) por ejemplo



Asigno los valores y supongamos que queremos cambiar el valor de la papa entonces lo cambiamos, listo se ah cambiado el valor de la papa pero ahora cuando cerramos el programa y volvemos a entrar los valores que asignamos han desaparecido. ¿Como puedo hacer para que los valores se queden guardados?

seba123neo

pues no hay muchas opciones, o usas base de datos o un archivo de texto.

saludos.
La característica extraordinaria de las leyes de la física es que se aplican en todos lados, sea que tú elijas o no creer en ellas. Lo bueno de las ciencias es que siempre tienen la verdad, quieras creerla o no.

Neil deGrasse Tyson

El Benjo

Además de las opciones que te mencionan arriba también puedes utilizar My.Settings para guardar variables dentro de tu aplicación y cuyos valores estarán ahí la próxima vez que la aplicación se ejecute.

http://msdn.microsoft.com/en-us/library/saa62613.aspx

Si optas por utilizar la opción del archivo entonces puede ser tan sencillo como lo siguiente:




Guardar valoresCargar valores

· Abres el archivo
· Guardas todos los valores (uno por linea)
· Cierras el archivo

· Abres el archivo
· Lees los valores una línea a la vez y los asignas a la variable correspondiente
· Cierras el archivo

A menos que vayas a trabajar con más de un archivo te recomiendo que utilices My.Settings De esta manera no tendrás que preocuparte de mover el otro archivo junto con tu aplicación.
www.es.neftis-ai.com

Sí hay un mejor lenguaje de programación y es ese con el que puedes desarrollar tus objetivos.

carlangasds


Eleкtro

#4
Cita de: El Benjo en 15 Enero 2014, 23:44 PM
también puedes utilizar My.Settings para guardar variables dentro de tu aplicación y cuyos valores estarán ahí la próxima vez que la aplicación se ejecute.

Añado al comentario del compañero @ElBenjo:

...cuyos valores estarán ahí la próxima vez que la aplicación se ejecute, siempre que el executable no se renombre, ni se haga una actualización o reemplazo del executable, ni otras cosas.

No me gusta la infraestructura de My.Settings, no es fiable ni muy práctica en varios escenarios, como en este caso, aunque se pueden almacenar colecciones de Strings yo diría que My.Settings no fue pensado para grandes cosas como administrar una base de datos de un "comercio".

Yo optaría por una base de datos en archivo de texto, XML (por ejemplo), ya que es un lenguaje que está soportado en VS a la perfección y se pueden hacer querys de forma sencilla, quedando así el archivo:

db.xml
Código (xml) [Seleccionar]
<?xml version="1.0" encoding="Windows-1252"?>
<!--Mi base de datos-->
<Verduras>
   <Verdura><Nombre>Cebolla</Nombre><Precio>15</Precio></Verdura>
   <Verdura><Nombre>Chile</Nombre><Precio>25</Precio></Verdura>
   <Verdura><Nombre>Limón</Nombre><Precio>25</Precio></Verdura>
   <Verdura><Nombre>Papa</Nombre><Precio>18</Precio></Verdura>
   <Verdura><Nombre>Plátano</Nombre><Precio>10</Precio></Verdura>
   <Verdura><Nombre>Tomate</Nombre><Precio>27</Precio></Verdura>
</Verduras>


...Puedes administrar los atributos de la manera que prefieras, y también puedes identar los elementos... depende de gustos.

Pudiendo hacer cosas como esta en .NET:

Código (vbnet) [Seleccionar]
       Dim Verduras = From Verdura As XElement
                      In XDoc.<Verduras>.<Verdura>
                      Select New With
                             {
                                 Verdura.<Nombre>.Value,
                                 Verdura.<Precio>.Value
                             }

       For Each Verdura In Verduras

           MsgBox(String.Format("Nombre: {0}; Precio: {1}",
                                Fruta.Nombre,
                                Fruta.Precio))

       Next Verdura


( puedes usar un convertidor online del lenguaje VB.NET <> CSharp , lo que hice fue símplemente crear un type anónimo).

...Y para modificar un precio, simplemente actualizas el atributo y guardas los cambios en el archivo.

En el peor de los casos si te parece dificil puedes optar por algo mucho más básico, un archivo de texto delimitado (CSV), que también se puede manejar bien y te será más facil si no manejas XML ni MySql, pero si al final optases por usar un archivo delimitado por comas (CSV) y si te importa algo el rendimiento de tu app entonces te sugiero (es más, te lo impongo por ley está prohibición) que no uses el método TextFieldParser del antiguo VB6, eso es lo peor que puedes hacer, es puro Left, Mid, y otras ascadas de las antiguas técnicas de programación; en su defecto puedes usar un simple String.Split, repito, esto tenlo en cuenta sólamente si te importa lo más mínimo el rendimiento de tu app y no quieres que te tarde 10 segundos en parsear un simple texto.


PD: Porfavor que alguien mueva esto a .NET no? :P


Saludos!








carlangasds

#5
Listo.  ;D
Asi quedo el codigo:

Para guardar

Citarprivate void button7_Click(object sender, EventArgs e)
        {
            XmlWriter w = XmlWriter.Create(@"C:\xmle\verduras.xml");
                w.WriteStartElement("Verduras");
                w.WriteElementString("Tomate", textBox1.Text.ToString());
                w.WriteElementString("Limon", textBox2.Text.ToString());
                w.WriteElementString("Papa", textBox3.Text.ToString());
                w.WriteElementString("Cebolla", textBox4.Text.ToString());
                w.WriteElementString("Platano", textBox5.Text.ToString());
                w.WriteEndElement();
                w.Close();
                MessageBox.Show("Se han guardado correctamente los precio");

        }

Para Mostrar

Citar
XmlReader r = XmlReader.Create(@"C:\xmle\verduras.xml");
                r.ReadStartElement("Verduras");
                textBox1.Text = r.ReadElementContentAsString();
                textBox2.Text = r.ReadElementContentAsString();
                textBox3.Text = r.ReadElementContentAsString();
                textBox4.Text = r.ReadElementContentAsString();
                textBox5.Text = r.ReadElementContentAsString();
                r.Close();

Eleкtro

Genial, viste que orientado y eficaz usando XML :)

Salu2!