Como hago en VB que al escoger un item del dblist salgan los datos de una tabla que corresponde al dato que escogí. Ej: TEngo una tabla A (maestro de empresas), y otra tabla B (movimiento de pagos de la empresas). Cuando escoja una empresa de la tabla A en un DBList, debe aparecer todos los movimientos que hizo dicha empresa de la tabla B
1 Respuesta
Respuesta de scmendieta
1
1
scmendieta, Cargos: Diseñador de portales web, Empresa tecnosoluciones,...
Bueno para hacer este ejemplo utilice la base de datos de ejemplo que viene en Visual basic 6.0, la base de datos se llama Nwind.mdb el ejemplo es parecido a lo que tu planteas, el programa selecciona todos los productos que pertenecen a la misma categoría Se utilizan las tablas Categorías y Productos. 1. Agrego Un Dblist, y un control Data, en las propiedades del control data, establezco Databasename = C:\Archivos de programa\Microsoft Visual Studio\VB98\Nwind.mdb es obvio que este Path puede ser distinto para ti. 2. En la propiedad RecordSource del Data establezco el nombre de la tabla categorías (Categories) 3. En el control Dblist, establezco las siguientes propiedades: Rowsource = al nombre del Data ListField = el nombre del campo CategoryName(Nombredecategoria) o como se llame BoundColumn = CategoryID (O su nombre en español) 4. En el evento click del control Dblist escribe el siguiente codigo. Private Sub DBList1_Click() Dim ssql As String Dim rsproductos As Recordset Dim qdfproductos As QueryDef ssql = "PARAMETERS Idcateg Long;" _ & " SELECT Products.* " _ & " From Products " _ & " WHERE (((Products.CategoryID)=[Idcateg])); " Set qdfproductos = Data1.Database.CreateQueryDef("", ssql) qdfproductos.Parameters!Idcateg = Val(DBList1.BoundText) Set rsproductos = qdfproductos.OpenRecordset() rsproductos.MoveFirst Do Until rsproductos.EOF Debug. Print Str(rsproductos! ProductID) Debug. Print rsproductos! ProductName Debug. Print Str(rsproductos! SupplierID) Debug. Print rsproductos! QuantityPerUnit Rsproductos. MoveNext Loop End Sub Si observas se utiliza una consulta en sql, que recibe un valor o parámetro. La variable qdfproductos es un objeto de consulta que se utiliza para crear una consulta temporal en la base de datos, la consulta se crea con la instrucción: Data1. Database. CreateQueryDef("", ssql) se le pasa el parametro a la consulta : qdfproductos.Parameters!Idcateg = Val(DBList1.BoundText) La propiedad BoundText contiene el Idcateg que se obtiene al seleccionarse el nombre de la categoría de la lista se abre un conjunto de registro (Set rsproductos = qdfproductos.OpenRecordset())y se le asigna a la variable de objeto rsproductos. estos son todos los productos que pertenecen a la categoria seleccionada se visualizan algunos de los campos de cada registro , en la ventana de depuracion. Do Until rsproductos.EOF Debug. Print Str(rsproductos! ProductID) Debug. Print rsproductos! ProductName Debug. Print Str(rsproductos! SupplierID) Debug. Print rsproductos! QuantityPerUnit Rsproductos. MoveNext Loop Creo que esto te puede servir.