Saludos man.... Mmmmm... hasta el momento no creo que eso sea posible, segun busgo en google y no encuentro nada.....
Por cierto, buscar en google is tnx
SuerteX
Por cierto, buscar en google is tnx
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...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...
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
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"
Venga man... cualquier sugencia es bienvenida
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 tratandoPHP: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
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.
Cual seria la mejor forma MANUAL de ejecutar el recolector de basura?
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?
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..
Virutero osea que al decirle por ejemplo CrystalReport.Dispose...
con esto libero recursos??
si es asi... ufffffff que salvada
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
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
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")
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 )
Esta seria la pantalla principal
Aquí filtro el datagridview para seleccionar el producto
Cuando ponga la cantidad el textbox cantida tiene un evento textchanged que inmeniatamente calcula el subtotal
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:
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
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
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!!!!! =)
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();
}