Foro Oficial de Visual Basic 2005/2008

Mmmmm... recuerde que hay metodos conexion.open y conexion.close ... o sea, luego que obtengo mis datos cierro la conexion, es casi lo mismo que hace un dataset ;) ... pero de todas formas gracias por la intencion de ayuda ... ya habia hablado con un profesor de la uni que es un Senior developer y al principio me recomendo un dataset, pero luego me dijo que era mejor el sqldataAdapter por la velocidad y el consumo de recursos ;)


SuerteX :)
pues cada quien tiene su punto de vista, personalmente prefiero las conexiones a mano y las clases diseñadas por mi, porque cuando te toque hacerle mantenimiento al sistema o corregir un error pues ya sabes como porque tu mismo la creaste. por otro lado depende de lo que quiera hacer, si es una simple conexion de un sistema pequeño pues el lado facil es el sqldataadapter, pero si es una aplicacion robusta eso no se usa. yo trabajo con aplicaicones robustas para bancos y creame que ni por equivocacion ud encuentra un sqldataadapter en ellas. pero bueno ud debe sopesar esas cosas... :D
 
pues cada quien tiene su punto de vista, personalmente prefiero las conexiones a mano y las clases diseñadas por mi, porque cuando te toque hacerle mantenimiento al sistema o corregir un error pues ya sabes como porque tu mismo la creaste. por otro lado depende de lo que quiera hacer, si es una simple conexion de un sistema pequeño pues el lado facil es el sqldataadapter, pero si es una aplicacion robusta eso no se usa. yo trabajo con aplicaicones robustas para bancos y creame que ni por equivocacion ud encuentra un sqldataadapter en ellas. pero bueno ud debe sopesar esas cosas... :D

Venga man... cualquier sugencia es bienvenida :D

PHP:
 Try
            'Indicar conexion
            Using CON As New SqlConnection(conexion)
                'Inicializar DataAdapter
                Dim DA As New SqlDataAdapter("SELECT * FROM PRODUCTOS", CON)
                'Llenar DataTable
                Dim DT As New DataTable
                CON.Open()
                DA.Fill(DT)
                ProductosBindingSource.DataSource = DT
                DataGridView1.DataSource = ProductosBindingSource.DataSource
            End Using
        Catch ex As Exception
            'Throw ex
            MessageBox.Show("No se han cargado los datos para llenar las celdas" & vbCrLf & vbCrLf & ex.Message, "Error", MessageBoxButtons.OK, MessageBoxIcon.Exclamation)
        End Try

Asi lo tenia hasta el momento, solo es una prueba y no he tenido mucho tiempo para avanzar :S .... lo que si me gustaria es que me explicara los "porque", ya que no quiero hacer una cosa si saber bien lo que estoy tratando ;)


Cualquier sugerencia es bienvenida ;) ahh y tnx man por prestar atencion a mis dudas


SuerteX :)
 
Por Dios el que dijo que trabajaba aplicaciones robustas de bancos, que no sea mentiroso, que el SqlDataAdapter en una de las piezas claves de ADO.NET y del namespace (System.Data.SqlClient) y que otra cosa es que no lo sepa usar así que no vengas con cuentos chinos acá man que aquí también hay personas que conocemos muy bien el tema de .NET como para que nos meta un gol.

Te dejo el link para que leas un poco antes de decir esas barbaridades
http://msdn.microsoft.com/es-es/library/system.data.sqlclient.sqldataadapter(VS.80).aspx
 
Por Dios el que dijo que trabajaba aplicaciones robustas de bancos, que no sea mentiroso, que el SqlDataAdapter en una de las piezas claves de ADO.NET y del namespace (System.Data.SqlClient) y que otra cosa es que no lo sepa usar así que no vengas con cuentos chinos acá man que aquí también hay personas que conocemos muy bien el tema de .NET como para que nos meta un gol.

Te dejo el link para que leas un poco antes de decir esas barbaridades
http://msdn.microsoft.com/es-es/library/system.data.sqlclient.sqldataadapter(VS.80).aspx

jeje que chistoso... si quiere le mando un link de la pagina de microsoft donde dice que windows vista es lo mejor de lo mejor... bien por esas referencias... igual ya le dije si usted lo usa bien pueda pero lo animo a que revise aplicaciones como los portales de los bancos que stan hechos en .net, o la pagina de pagos de pila donde se conectan miles de usuarios a la vez y me cuenta si encuentra un sqldataadapter... y en vez de atacarme a mi ayudele al amigo que esta pidiendo consejos sobre como hacerlo... peace!!!!
como usted mismo dijo: "no se deje meter un gol" :p
 
jeje que chistoso... si quiere le mando un link de la pagina de microsoft donde dice que windows vista es lo mejor de lo mejor... bien por esas referencias... igual ya le dije si usted lo usa bien pueda pero lo animo a que revise aplicaciones como los portales de los bancos que stan hechos en .net, o la pagina de pagos de pila donde se conectan miles de usuarios a la vez y me cuenta si encuentra un sqldataadapter... y en vez de atacarme a mi ayudele al amigo que esta pidiendo consejos sobre como hacerlo... peace!!!!
como usted mismo dijo: "no se deje meter un gol" :p

Bueno, no lo ataco disculpeme, pero Man usted debe aprender a usar los SqlDatAdapter, lo que pasa es que si usted no libera los recursos que utiliza cargara la aplicacion y esto sucede no solo en .NET , tambien en Java cuando por ejemplo usamos los objetos de Express de borland (JDTables o los TableDataset), ahora lo que le recomiendo que use es la clausula Using que le permite liberar los recursos para que el garbage collector del Framework libere los recursos, en este caso hablando de ASP.NET libera los recursos del lado del servidor

esto es C#
Font font2 = new Font("Arial", 10.0f);
using (font2)
{
// use font2
}

en Vb con un sqlAdapter de sqlClient

Imports System.Data.SqlClient

Public Class Form1
Dim ds As New Data.DataSet

Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click

Using adp As New SqlDataAdapter("Select nombre.apellido From Clientes", cadconexcion) '' La consulta o procedimiento almacendao y la cadena de conexcion la deberia estar almacenda y encriptada en el WebConfig y si es de Winform en archivo de config de la palicacion
adp.Fill(ds, "Clientes") '' Donde cliente es el nombre de la tabla
End Using


End Sub
Sub libera()
ds.Dispose() '' mas o menos asi debes hacerlo para que con la funcion Dispose le libere los recurso usados por el dataset...
End Sub
End Class


Bueno la cosa es saber liberar los recursos y aprovechar el recolector de basura de .NET, aunque la llamada al recolector la ejecuta el Framework cuando sale de contexto el obejto, aveces hay que usarlo manualmente en ciertas situaciones :confused:
 
Venga man... cualquier sugencia es bienvenida :D

PHP:
 Try
            'Indicar conexion
            Using CON As New SqlConnection(conexion)
                'Inicializar DataAdapter
                Dim DA As New SqlDataAdapter("SELECT * FROM PRODUCTOS", CON)
                'Llenar DataTable
                Dim DT As New DataTable
                CON.Open()
                DA.Fill(DT)
                ProductosBindingSource.DataSource = DT
                DataGridView1.DataSource = ProductosBindingSource.DataSource
            End Using
        Catch ex As Exception
            'Throw ex
            MessageBox.Show("No se han cargado los datos para llenar las celdas" & vbCrLf & vbCrLf & ex.Message, "Error", MessageBoxButtons.OK, MessageBoxIcon.Exclamation)
        End Try
Asi lo tenia hasta el momento, solo es una prueba y no he tenido mucho tiempo para avanzar :S .... lo que si me gustaria es que me explicara los "porque", ya que no quiero hacer una cosa si saber bien lo que estoy tratando ;)


Cualquier sugerencia es bienvenida ;) ahh y tnx man por prestar atencion a mis dudas


SuerteX :)


Por el codigo que tienes esta bien, es una buena opcion ya que liberas los recuros del SqlDataapdapter . alli hay un ejemplo de codigo en un post que cargue:jaguar:

Lo que te recomiendo es que no hagas eso de unir codigo sql en string ya que le baja mucho performance a tu aplicacion, mejor usa procediemientos alamcendados. hay que recordar que los DBMS no interpretan codigo Sql sino que lo compilan, y eso implica que cuando usas sentencias condadenas en string el DBMS debe evaluar las sintaxis, compilar esa sentecia,verificar el tipo de datos que pasa en la sentencia, ademas de calcular el Query Plan para dicha sentencia y esto lo hara para cada sentencia que ejecutes, mientras que con un Strore Procedure no se compilara ya que es como un executable resusltante de una compilacion (Por darte un ejemplo) y el query plan se modificara cuando el DBMS vea que se introdujeron altos volumenes de informacion.
 
Por el codigo que tienes esta bien, es una buena opcion ya que liberas los recuros del SqlDataapdapter . alli hay un ejemplo de codigo en un post que cargue:jaguar:

Lo que te recomiendo es que no hagas eso de unir codigo sql en string ya que le baja mucho performance a tu aplicacion, mejor usa procediemientos alamcendados. hay que recordar que los DBMS no interpretan codigo Sql sino que lo compilan, y eso implica que cuando usas sentencias condadenas en string el DBMS debe evaluar las sintaxis, compilar esa sentecia,verificar el tipo de datos que pasa en la sentencia, ademas de calcular el Query Plan para dicha sentencia y esto lo hara para cada sentencia que ejecutes, mientras que con un Strore Procedure no se compilara ya que es como un executable resusltante de una compilacion (Por darte un ejemplo) y el query plan se modificara cuando el DBMS vea que se introdujeron altos volumenes de informacion.

O sea, que me recomiendas pasarle al SqlDataAdapter un string de parametro?? ¿Que tal seria si le paso un SqlCommand? ¿cual de los dos me recomiendas? :rolleyes:

Cual seria la mejor forma MANUAL de ejecutar el recolector de basura?

Siempre que uses Using el EndUsing libera los recursos ;) (si no me equivoco) o.... tabien podria llamar el metodo Disponse


SuerteX :)
 
O sea, que me recomiendas pasarle al SqlDataAdapter un string de parametro?? ¿Que tal seria si le paso un SqlCommand? ¿cual de los dos me recomiendas? :rolleyes:



Siempre que uses Using el EndUsing libera los recursos ;) (si no me equivoco) o.... tabien podria llamar el metodo Disponse


SuerteX :)


Bueno man la opcion del sql comand es la mas apropiada para pasar una sentencia Sql, pero dependiendo de tu aplicacion, si es para la universidad, puedes pasar un mero string ya que eso no afectara a nadie pero si para uso de en un ambiente de produción (Una aplicacion de tu trabajo o un software que vas a vender) te recomiendo que pases un procedimeinto almacenado.

Virutero veo que te interesas mucho para aprender .NET, te recomiendo que entres al programa desarrollador 5 estrellas. Aprenderas mucho acerca de aceso a datos con ADO.NET, yo ya termine la 5 estrella y estoy comenzando la Gold, cualquier cosa para ti y para otros dudas o algo no duden en escribir..

Suerte amigo..:cool:
 
Bueno man la opcion del sql comand es la mas apropiada para pasar una sentencia Sql, pero dependiendo de tu aplicacion, si es para la universidad, puedes pasar un mero string ya que eso no afectara a nadie pero si para uso de en un ambiente de produción (Una aplicacion de tu trabajo o un software que vas a vender) te recomiendo que pases un procedimeinto almacenado.

Virutero veo que te interesas mucho para aprender .NET, te recomiendo que entres al programa desarrollador 5 estrellas. Aprenderas mucho acerca de aceso a datos con ADO.NET, yo ya termine la 5 estrella y estoy comenzando la Gold, cualquier cosa para ti y para otros dudas o algo no duden en escribir..

Suerte amigo..:cool:

Tnx man... ahh por cierto, ya lo de DCE esta en camino ;)


SuerteX :)
 
Virutero osea que al decirle por ejemplo CrystalReport.Dispose...
con esto libero recursos??
si es asi... ufffffff que salvada
 
Virutero osea que al decirle por ejemplo CrystalReport.Dispose...
con esto libero recursos??
si es asi... ufffffff que salvada

jajajajaja... mas o menos... eso es si tiene ese metodo, otro seria usando using, al finalizar la clausula endusing se liberan los recursos ;)

Implementar un método Dispose
El método Dispose de un tipo deber liberar todos los recursos de su propiedad. También debe liberar todos los recursos que posean sus tipos base; para ello, llama al método Dispose de su tipo primario. El método Dispose del tipo primario debe liberar todos los recursos que posee y, a su vez, llamar al método Dispose de su tipo primario, propagando este patrón por la jerarquía de tipos base. Para asegurarse de que los recursos se limpien siempre correctamente, se debe poder llamar a un método Dispose varias veces sin que provoque una excepción.

Comentarios
Utilice este método para cerrar o liberar recursos no administrados como archivos, secuencias e identificadores mantenidos por una instancia de la clase que implementa esta interfaz. Por convención, este método se utiliza para realizar todas las tareas relacionadas con la liberación de los recursos mantenidos por un objeto o todas las tareas relacionadas con la preparación de un objeto para que vuelva a utilizarse.



Fuente


SuerteX :)
 
Señores, aqui estoy tratando de aprender a desarrollar un sistema de factura (no sabia que podia ser tan dificil :muerto:) .... y estoy barado por aquí y no se hacer....


Alguien que me oriente... es con la Base de Datos Northwind de Microsoft, quien no la tenga la puede descargar de aquí a ver si alguien me explica alguna forma mas facil de hacer este asunto .....


Por cierto, lo del DataGridView desplegable no lo hice, solo lo adapte (y funciona muy bien :))



SuerteX:)
 
facturacion en web ???

Mi lio fue con el Crystal Report :S ... y con el dobleclick del usuario :S ..

Virutero si necesitas algo.. hable no mas :)
 
facturacion en web ???

Mi lio fue con el Crystal Report :S ... y con el dobleclick del usuario :S ..

Virutero si necesitas algo.. hable no mas :)

Estoy tratando de aprender a hacer un punto de venta donde no tengan lectores de codigo de barras, asi que tendrian que filtrar la mercancia para vender por descripcion (en este caso una farmacia :|)..

Tonces voy por aquí (en Este caso utilizo Northwind mientras aprendo :D)

Esta seria la pantalla principal

attachment.php



Aquí filtro el datagridview para seleccionar el producto

attachment.php



Cuando ponga la cantidad el textbox cantida tiene un evento textchanged que inmeniatamente calcula el subtotal

attachment.php


Para seleccionar la fila del datagridview hago esto:

PHP:
    Public descrip As String
    Public stock As Integer
    Public precio As Double

   Private Sub DataGridView1_CellClick(ByVal sender As Object, ByVal e As System.Windows.Forms.DataGridViewCellEventArgs) Handles DataGridView1.CellClick
        rellenar()
    End Sub

    Sub rellenar()
        descrip = DataGridView1.Item("ProductName", DataGridView1.CurrentRow.Index).Value.ToString
        stock = DataGridView1.Item("UnitsInStock", DataGridView1.CurrentRow.Index).Value.ToString
        precio = DataGridView1.Item("UnitPrice", DataGridView1.CurrentRow.Index).Value.ToString
        lblDescripcion.Text = descrip
        lblStock.Text = stock
        lblPrecio.Text = precio
    End Sub


Y para el boton seleccionar tengo esto:

PHP:
        dt = NorthwindDS.Tables("Order Detail")
        Dim DR As NorthwindDS.Order_DetailsRow
        DR = dt.NewOrder_DetailsRow
        DR("OrderID") = OrderIDTextBox.Text
        DR("ProductID") = CBID.Text
        DR("UnitPrice") = precio
        DR("Quantity") = txtCantidad.Text
        DR("Discount") = 0
        DR("Descripcion") = descrip
        dt.Rows.Add(DR)
        Order_DetailsDataGridView.DataSource = NorthwindDS.Tables("Order Detail")


Mi pregunta es si hay alguna alguan forma mas optima o correcta de hacer esto, lo que pasa es que no se trabajar mucho con componentes :'( y por esto estoy algo perdido :S


Si de algo sirve este es el DataSet que tengo:
attachment.php



SuerteX y GraciaX :)
 

Archivos adjuntos

  • inicio.jpg
    inicio.jpg
    61.1 KB · Visitas: 1,652
  • Filtro.jpg
    Filtro.jpg
    78.6 KB · Visitas: 2,182
  • Cantidad-Subtotal.jpg
    Cantidad-Subtotal.jpg
    60.1 KB · Visitas: 1,696
  • DataSet.jpg
    DataSet.jpg
    75.4 KB · Visitas: 1,402
Estoy tratando de aprender a hacer un punto de venta donde no tengan lectores de codigo de barras, asi que tendrian que filtrar la mercancia para vender por descripcion (en este caso una farmacia :|)..

Tonces voy por aquí (en Este caso utilizo Northwind mientras aprendo :D)

Esta seria la pantalla principal

attachment.php



Aquí filtro el datagridview para seleccionar el producto

attachment.php





Cuando ponga la cantidad el textbox cantida tiene un evento textchanged que inmeniatamente calcula el subtotal

attachment.php


Para seleccionar la fila del datagridview hago esto:

PHP:
    Public descrip As String
    Public stock As Integer
    Public precio As Double

   Private Sub DataGridView1_CellClick(ByVal sender As Object, ByVal e As System.Windows.Forms.DataGridViewCellEventArgs) Handles DataGridView1.CellClick
        rellenar()
    End Sub

    Sub rellenar()
        descrip = DataGridView1.Item("ProductName", DataGridView1.CurrentRow.Index).Value.ToString
        stock = DataGridView1.Item("UnitsInStock", DataGridView1.CurrentRow.Index).Value.ToString
        precio = DataGridView1.Item("UnitPrice", DataGridView1.CurrentRow.Index).Value.ToString
        lblDescripcion.Text = descrip
        lblStock.Text = stock
        lblPrecio.Text = precio
    End Sub


Y para el boton seleccionar tengo esto:

PHP:
        dt = NorthwindDS.Tables("Order Detail")
        Dim DR As NorthwindDS.Order_DetailsRow
        DR = dt.NewOrder_DetailsRow
        DR("OrderID") = OrderIDTextBox.Text
        DR("ProductID") = CBID.Text
        DR("UnitPrice") = precio
        DR("Quantity") = txtCantidad.Text
        DR("Discount") = 0
        DR("Descripcion") = descrip
        dt.Rows.Add(DR)
        Order_DetailsDataGridView.DataSource = NorthwindDS.Tables("Order Detail")


Mi pregunta es si hay alguna alguan forma mas optima o correcta de hacer esto, lo que pasa es que no se trabajar mucho con componentes :'( y por esto estoy algo perdido :S


Si de algo sirve este es el DataSet que tengo:
attachment.php



SuerteX y GraciaX :)

Haber y cuales son los componentes que usas, la verdad veo que vas bien, no veo cual es el incoveniente, recuerda que esta haciendo basado en la BD Northwind, y esa es una base de datos muy sencilla, porque mejor no haces tu base de datos, la que usaras en tu aplicacion, y empiezas a trabajar con esa, haz la interfazes y lo demas, ya que trabajaras doble. Pero fuera de eso vas muy bien :p
 
Haber y cuales son los componentes que usas, la verdad veo que vas bien, no veo cual es el incoveniente, recuerda que esta haciendo basado en la BD Northwind, y esa es una base de datos muy sencilla, porque mejor no haces tu base de datos, la que usaras en tu aplicacion, y empiezas a trabajar con esa, haz la interfazes y lo demas, ya que trabajaras doble. Pero fuera de eso vas muy bien :p

Bueno man, he usado unos cuantos componentes, aquí les adjunto el proyecto completo...

Bueno, uso Northwind porque me es una buena base y esta bien estructurada, la podría usar como base y esta ya tiene los datos de prueba :D

Lo que me gustaría seria saber si eso es un buen procedimiento y es optimo o existe alguna manera adecuada:

PD: Para que funcione solo se deberia cambiar la cadena de conexion de app.config.

PD2: xjuanch0x, gracias por el consejo del DCE, ya voy por la estrella 2, pero me voy por lo de Windows Forms, luego termino con lo de ASP.NET, hace mucho que vi HTML y estoy verde de nuevo, a parte de que no me llama mucho la atención el desarrollo Web :S

Edit: tras ratos de pruebas lo he podido hacer funcionar, al menos me agrega datos en el datagridview :D, ahora espero que me confirmen si este es un metodo fiable y prudente de hacerlo, o si existe un método mas "formar" o estandar de hacer este tipo de cosas :rolleyes:


Ahhh... por cierto, no se por que el numero de la orden me da -1 :S (ahí adjunto código mas depuradito :D)

SuerteX y Gracias :)
 

Archivos adjuntos

  • Sistema.rar
    639.2 KB · Visitas: 274
Bueno man, he usado unos cuantos componentes, aquí les adjunto el proyecto completo...

Bueno, uso Northwind porque me es una buena base y esta bien estructurada, la podría usar como base y esta ya tiene los datos de prueba :D

Lo que me gustaría seria saber si eso es un buen procedimiento y es optimo o existe alguna manera adecuada:

PD: Para que funcione solo se deberia cambiar la cadena de conexion de app.config.

PD2: xjuanch0x, gracias por el consejo del DCE, ya voy por la estrella 2, pero me voy por lo de Windows Forms, luego termino con lo de ASP.NET, hace mucho que vi HTML y estoy verde de nuevo, a parte de que no me llama mucho la atención el desarrollo Web :S


SuerteX y Gracias :)

Bueno man, efectivamente, si la guardasdes en el APP.CONFIG esta muy bien, solo debes de encriptar la cadena de conexcion para que no tengas reiesgos que te roben la informacion

te dejo un codigo para que lo mires :

using System.Configuration;

Y ahora, para encriptar la cadena de conexión escribo el siguiente código:

Configuration config = ConfigurationManager.OpenExeConfiguration(ConfigurationUserLevel.None);
ConnectionStringsSection sect = config.ConnectionStrings;
sect.SectionInformation.ProtectSection(”DataProtectionConfigurationProvider“);
config.Save();

Y para desencriptarlo uso este código:

Configuration config = ConfigurationManager.OpenExeConfiguration(ConfigurationUserLevel.None);
ConnectionStringsSection sect = config.ConnectionStrings;
if (sect.SectionInformation.IsProtected){
sect.SectionInformation.UnprotectSection();
config.Save();
}



Inicialmente te aparecera asi :

<?xml version=”1.0” encoding=”utf-8” ?>
<configuration>
<connectionStrings>
<add name=“strCon” connectionString=“DataSource=(local);Initial Catalog=Pubs;Integrated Security=True” />
</connectionStrings>
</configuration>



y despues de encriptar te aparecera asi

<?xml version=”1.0” encoding=”utf-8” ?>
<configuration>
<connectionStrings configProtectionProvider=“DataProtectionConfigurationProvider”>
<EncryptedData>
<CipherData>
<CipherValue>AQAAANCMnd8BFdERjHoAwE/Cl+sBAAAA7461I+ToRU2uzk+aQdmrDQQAAAACAAAAAAADZgAAqAAAABAAAABMh/0ClY1svfK8dFXNTnDoAAAAAASAAACgAAAAEAAAAF
D+rETsqSKZZN//tqMoOH5QAQAA+lKl+gZANcW/C3Sm0jyNAyITWBkWZ1Am6gHcb1h9+enrJQ2p5+eIaJkqza8ja9RbvALosoQVo2NBJnA0k1LUopNIzTy8FDaftrdZSlMbVtqYrzwO7g0lvdnkaBNUI
cZo5LKhfIOpGIIoNId09SvlWEcDxn8rbBj5yKVzId4XOhtGLVFqt5+XkWqymFGlcnifXKdBK7DCtwKOVK2IYI/B5lyKleiG2g5ePSCMnqpsgkmuSUNVLcg0ONkGkIFSXBbUUHm8/emnisHoyER2Eb5Tk
4b346N8TiTZS7HqmOnqGBD323woeiFKuZNpwh9fbFrqo+Z+Wotrh2Ka6rxTdhAGutFJVWwOlVIOtOT98FcCZdhLHFhXm0Mh08RI+AUWbNJ4+1vkecuWC7GIxU+6uv7iG8I/Qz/BV0sb0gDDu4Fj0
Wa06+iw/xwjCTRkFXcyiHzNFAAAAABOwzLCJE+F+o3Dl50vBd4xKtMy</CipherValue>
</CipherData>
</EncryptedData>
</connectionStrings>
</configuration>

Por lo demás, veo tu programa muy bien, ahora, otra cosa que debes tener en cuenta es que versión de SQL Server usaras, porque si es la Express debes tener en cuenta que es una base de datos que solo soporta 4gb de información . por lo demas esta muy bien tu aplicacion, me impresiona lo mucho que has avanzado en .NET.

Felicidades!!!!! =)
 
  • Me gusta
Reacciones: 2 personas
Bueno man, efectivamente, si la guardasdes en el APP.CONFIG esta muy bien, solo debes de encriptar la cadena de conexcion para que no tengas reiesgos que te roben la informacion

te dejo un codigo para que lo mires :

using System.Configuration;

Y ahora, para encriptar la cadena de conexión escribo el siguiente código:

Configuration config = ConfigurationManager.OpenExeConfiguration(ConfigurationUserLevel.None);
ConnectionStringsSection sect = config.ConnectionStrings;
sect.SectionInformation.ProtectSection(”DataProtectionConfigurationProvider“);
config.Save();

Y para desencriptarlo uso este código:

Configuration config = ConfigurationManager.OpenExeConfiguration(ConfigurationUserLevel.None);
ConnectionStringsSection sect = config.ConnectionStrings;
if (sect.SectionInformation.IsProtected){
sect.SectionInformation.UnprotectSection();
config.Save();
}



Inicialmente te aparecera asi :

<?xml version=”1.0” encoding=”utf-8” ?>
<configuration>
<connectionStrings>
<add name=“strCon” connectionString=“DataSource=(local);Initial Catalog=Pubs;Integrated Security=True” />
</connectionStrings>
</configuration>



y despues de encriptar te aparecera asi

<?xml version=”1.0” encoding=”utf-8” ?>
<configuration>
<connectionStrings configProtectionProvider=“DataProtectionConfigurationProvider”>
<EncryptedData>
<CipherData>
<CipherValue>AQAAANCMnd8BFdERjHoAwE/Cl+sBAAAA7461I+ToRU2uzk+aQdmrDQQAAAACAAAAAAADZgAAqAAAABAAAABMh/0ClY1svfK8dFXNTnDoAAAAAASAAACgAAAAEAAAAF
D+rETsqSKZZN//tqMoOH5QAQAA+lKl+gZANcW/C3Sm0jyNAyITWBkWZ1Am6gHcb1h9+enrJQ2p5+eIaJkqza8ja9RbvALosoQVo2NBJnA0k1LUopNIzTy8FDaftrdZSlMbVtqYrzwO7g0lvdnkaBNUI
cZo5LKhfIOpGIIoNId09SvlWEcDxn8rbBj5yKVzId4XOhtGLVFqt5+XkWqymFGlcnifXKdBK7DCtwKOVK2IYI/B5lyKleiG2g5ePSCMnqpsgkmuSUNVLcg0ONkGkIFSXBbUUHm8/emnisHoyER2Eb5Tk
4b346N8TiTZS7HqmOnqGBD323woeiFKuZNpwh9fbFrqo+Z+Wotrh2Ka6rxTdhAGutFJVWwOlVIOtOT98FcCZdhLHFhXm0Mh08RI+AUWbNJ4+1vkecuWC7GIxU+6uv7iG8I/Qz/BV0sb0gDDu4Fj0
Wa06+iw/xwjCTRkFXcyiHzNFAAAAABOwzLCJE+F+o3Dl50vBd4xKtMy</CipherValue>
</CipherData>
</EncryptedData>
</connectionStrings>
</configuration>

Por lo demás, veo tu programa muy bien, ahora, otra cosa que debes tener en cuenta es que versión de SQL Server usaras, porque si es la Express debes tener en cuenta que es una base de datos que solo soporta 4gb de información . por lo demas esta muy bien tu aplicacion, me impresiona lo mucho que has avanzado en .NET.

Felicidades!!!!! =)

Tnx man, ahi lo miro y se lo anexo, por cierto, he depurado mas el codigo y lo he hecho funcionar, pero como dije arriba, me gustaria saber si existe un metodo que no sea asi, o ese es un buen metodo para llenar los datos que requiere el DataTable que luego sera actualizado? :rolleyes:


Ahhh y gracias por los comentarios y el apoyo, espero ser de ayuda en el futuro para personas que tengan dudas como las tengo hoy en dia, realmente son un mar que espero algun dia saciar :D

Lo de SQL, estoy usando la version Express, pero para llenar 4GB con 2 computadoras tendrian que durar unos 2 años :p

Edit:

Por cierto, esta parte donde es que va??

PHP:
Configuration config = ConfigurationManager.OpenExeConfiguration(ConfigurationUserLevel.None);
ConnectionStringsSection sect = config.ConnectionStrings;
sect.SectionInformation.ProtectSection(”DataProtectionConfigurationProvider“);
config.Save();

//Y para desencriptarlo uso este código:

Configuration config = ConfigurationManager.OpenExeConfiguration(ConfigurationUserLevel.None);
ConnectionStringsSection sect = config.ConnectionStrings;
if (sect.SectionInformation.IsProtected){
    sect.SectionInformation.UnprotectSection();
    config.Save();
}


Estoy perdidito con esto, ya que la informacion de app.config es XML, y el codigo que veo es de C# :p


SuerteX :)
 

Los últimos temas