Foros del Web

Foros del Web (http://www.forosdelweb.com/)
-   Visual Basic clásico (http://www.forosdelweb.com/f69/)
-   -   ayuda Datacombo Acces (http://www.forosdelweb.com/f69/ayuda-datacombo-acces-557742/)

Drknow 17/02/2008 13:13

ayuda Datacombo Acces
 
hola que tal a todos ojala me puedan ayudar
tengo estas tablas:
:::::TABLA:::::
CIUDAD
:::CAMPOS:::|:::tipo dato:::
codCiudad| autonumerico |clave principal
nombCiudad | texto| 30 longitud
----------------------------------------------------------------
:::::TABLA:::::
Distritos
:::CAMPOS:::|:::TiPoDato:::
CodDistrito | autonumerico|clave principal
nombredistrito |texto|30 longitud
CodCiudad | numero| entero largo
------------------------------------------------------------------
obviamente tengo mantenimiento de ciudad y distritos en vb para ir agregando,
cuando agrego un distrito agrego el código de la ciudad al que va pertenecer

estoy trabajando con Dataenviroment,Vb 6.0, Accces 2003
tengo un formulario de mantenimiento de xxxx

donde tengo un datacombo ciudad donde enlazo ala tabla ciudad para elegir la ciudad y ese dato guardarlo en el mantenimiento xxxx

lo que quiero es que cuando elijo la ciudad en el datacombo distrito
solo me muestre los distritos que yo aya registrado con el campo codigo de la ciudad

por ejemplo el codigo de la ciudad lima es 14 cuando registro el distrito pongo el nombre del registro y el numero de codigo de la ciudad que va pertenecer osea 14
si tengo 10 distritos en la ciudad de lima aparecen el el datacombo distrito, si no tengo nada que no aparesca nada.

gracias

Avellaneda 17/02/2008 15:19

Re: ayuda Datacombo Acces
 
¿Provaste a hacer una cosulta SELECT que aplicada a un recordset recupere los registros de lo señalizado en el datacombo?

consejo: te olvidas del " Dataenviroment,Vb 6.0, Accces 2003" y te haces tu propia conexión, tendrás menos problemas si lo quieres empaquetar para instalar en otra pc.

Drknow 17/02/2008 15:52

Re: ayuda Datacombo Acces
 
Si se que se hace una consulta cuando hago clic en DataCiudad
mira:
Dataciudad

Rowsource : DataSistema
RowMenber :CmdCiudad
ListFields : NombCiudad

DataSource : DataSistema
DataMembre :CmdUsuario
BoundColumn : NombCiudad
--------------------------------------------------------------
DataDistrito

Rowsource : DataSistema
RowMenber :CmdDistrito
ListFields : NombDistrito

DataSource : DataSistema
DataMembre :CmdUsuario
BoundColumn : NombCiudad

lo que quiero es que si me puedes dar un ejemplo de como hago la consulta es que estoy un poco nokeado :borracho:
aparte que soy nobato

para que muestre los Distritos en el datadistrito que son de la ciudad selecionada

gracias

Avellaneda 18/02/2008 03:51

Re: ayuda Datacombo Acces
 
Te pongo un ejemplo comentado.
En este caso son dos ComboBox que son mas manejables que el DataCombo y hacemos la conexión a la BD por código (sin ningún control Data)
En el Combo1 se muestran las ciudades y al seleccionar una de ellas, el Combo2 se carga con los nombres de los distritos de esa ciudad.

Código:

Option Explicit
' declaramos la conexión a nivel de módulo
' para que esté activa hasta salir
Dim cn As ADODB.Connection
' igualmente para el recordset
Dim rs As ADODB.Recordset

Private Sub Combo1_Click()
Dim iCod As Integer
' varible que hemos guardado en la propiedad ItemData del Combo1
iCod = Combo1.ItemData(Combo1.ListIndex)
' creamos un nuevo recordset con los distritos de la ciudad seleccionada
Set rs = New ADODB.Recordset
rs.Open "SELECT * FROM Distritos WHERE codCiudad = " & iCod, cn, adOpenStatic, adLockOptimistic
'limpiamos el Combo2 y cargamos los datos del recordset
Combo2.Clear
Do Until rs.EOF
    Combo2.AddItem rs!nombredistrito
    rs.MoveNext
Loop
rs.Close
End Sub

Private Sub Form_Load()
Dim sBase As String
   
sBase = App.Path & "\MiBaseDatos.mdb" ' suponemos que la BD está en el mismo directorio de la aplicación
Set cn = New ADODB.Connection
Set rs = New ADODB.Recordset
cn.Open "Provider=Microsoft.Jet.OLEDB.4.0; Data Source=" & sBase
rs.Open "SELECT * FROM Ciudad", cn, adOpenStatic, adLockOptimistic
Do Until rs.EOF
    ' cargamos en el combo el nombre de la ciudad y en la propiedad
    ' ItemData, el código de la misma
    Combo1.AddItem rs!nombCiudad
    Combo1.ItemData(Combo1.NewIndex) = rs!codCiudad
    rs.MoveNext
Loop
rs.Close
End Sub

Private Sub Form_Unload(Cancel As Integer)
' cerramos la BD y liberamos las variables
Set rs = Nothing
Set cn = Nothing
End Sub

Espero que lo puedas aplicar a tu proyecto.

Drknow 18/02/2008 06:28

Re: ayuda Datacombo Acces
 
gracias buen aporte ya lo estoy acabando

Avellaneda 18/02/2008 15:42

Re: ayuda Datacombo Acces
 
Bien, cuando lo acabes nos indicas si te funcionó (no es obligatorio, pero podría servir para otros con la misma duda)

Suerte!

Drknow 22/02/2008 09:40

Re: ayuda Datacombo Acces
 
bueno la verdad es que tengo que trabajar con dataenviroment aun no estoy en objetos ado lo que necesito es generar un filtro como en el hotmail elijes un pais y en el otro datacombo te sale las ciudades, pero en mi caso elijo la ciudad y el datacombo(distrito) me tiene que generar los distritos registrados con el nombre o codigo de la ciudad al que pertenecen, bueno esto es lo que hice y no me resulto :
:'(.GRACIAS


Private Sub DataCiudad_Click(Area As Integer)
If DataCiudad <> Empty Then
DataSistema.rsCmdDistritos.Filter = "Codciudad=" + DataCiudad.BoundText
DataSistema.rsCmdDistritos.Requery
DataDistrito.ListField = "Codciudad=" + DataCiudad.BoundText
DataDistrito.Refresh
End If
End Sub

Avellaneda 22/02/2008 14:04

Re: ayuda Datacombo Acces
 
Bueno si es obligatorio trabajar con el "dataenviroment" no tengo nada que decir, ya que nunca trabajé con él, pero podrías, al menos probar el código que te puse, no es tan dificil y quizá te ayudara a dejar el dichoso dataenviroment.


La zona horaria es GMT -6. Ahora son las 20:45.

Desarrollado por vBulletin® Versión 3.8.7
Derechos de Autor ©2000 - 2026, Jelsoft Enterprises Ltd.