problema datagrid

tomini
27 de Enero del 2004
hola buenas tengo una duda haber si me pueden ayudar:
tengo en un formulario un combobox donde tengo los tipos de materiales de cierta cosa, lo que quiero es que al selecionar uno de los tipos de ese combo me aparezca en el datagrid los subtipos que tengan ese tipo de materiales, para ello he echo al asi:
Option Explicit
Dim rst As ADODB.Recordset
Dim rst2 As ADODB.Recordset
Dim con As ADODB.Connection
Dim igual As Boolean
Dim i As Integer
Dim material As String
Private Sub Combo1_Click()
'For i = 0 To Combo1.ListCount - 1
' If Combo1.Text = rst.Fields("descripcion") Then
'End If
Dim cade As String
cade = Combo1.Text
MsgBox cade
'rst.Open "select id_material from Material where Material.descripcion=cade"
'MsgBox (rst.Open "select id_material from Material where Material.descripcion=cade")
mostrar
'Next
End Sub
Sub mostrar()
'rst2.Open "select Tipo_Material.tamaño,Tipo_Material.precio,Tipo_Material.descripcion,Material.descripcion from Tipo_Material, Material where Tipo_Material.descripcion=Material.descripcion", con, adOpenKeyset, adLockOptimistic
'SubirCampos2
'rst2.Close
'Adodc1.RecordSource = "select * from Tipo_Material where Tipo_Material.descripcion=Material.descripcion"

DataGrid1.Visible = True
End Sub
Private Sub Command1_Click()
Orden_Trabajo.Show
End Sub
Private Sub Command2_Click()
material = InputBox("Introduzca nuevo material")
rst.Open "select id_material, descripcion from Material", con, adOpenKeyset, adLockOptimistic
If Not rst.EOF Then
rst.MoveFirst
For i = 0 To rst.RecordCount - 1
If StrComp(rst.Fields("descripcion"), material, 1) Then
igual = True 'aqui entra cuando es distinto descr de mater
Else
igual = False ' aqui entrs cuando se produce la igualdad
i = rst.RecordCount
End If
rst.MoveNext
Next
If igual = True Then
rst.AddNew
rst.Fields("descripcion") = material
rst.Update
Else
MsgBox "Ya existe ese tipo de material"
End If
rst.Close
cargar_combo
Else
MsgBox "No existen registros"
End If
End Sub
Private Sub Form_Load()
Set rst = New ADODB.Recordset
'Set rst2 = New ADODB.Recordset
Set con = New ADODB.Connection
con.Open "provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:Documents and SettingsIMPRENTA MINERVAEscritorioproyectomasproyectoMinervabd1.mdb"
cargar_combo
'rst.Open "select Tipo_Material.peso,Tipo_Material.tamaño,Tipo_Material.precio_minimo,Tipo_Material.precio_maximo,Tipo_Material.color,Material.tipo_material from Tipo_Material,Material where Tipo_Material.tipo_material=Material.tipo_material", con, adOpenKeyset, adLockOptimistic
'SubirCampos
End Sub
Sub SubirCampos() 'mete los datos de la BD a el formulario de visual
Dim i As Integer
For i = 0 To rst.Fields.Count - 1
If Not IsNull(rst.Fields(i)) Then
Text1(i).Text = rst.Fields(i)
Else
Text1(i).Text = ""
End If
Next
End Sub
Private Sub cargar_combo()
Combo1.Clear
rst.Open "select id_material, descripcion from Material", con, adOpenKeyset, adLockOptimistic
If Not rst.EOF Then
rst.MoveFirst
While Not rst.EOF
Combo1.AddItem rst.Fields("descripcion")
rst.MoveNext
Wend
rst.Close
Else
MsgBox "No existen registros"
End If
End Sub

muchas gracias

mena
27 de Enero del 2004
hola, mira lo que yo hago es en lugar de utilizar ADODB
utilizo un control ADO se llama en componentes Microsoft Ado Data Control 6.0 este control lo viculas al Datagrid en la propiedad Datasource del Datagrid pones el ado que tienes en el formulario y entonces el datagrid mostrara lo que tenga el ado al que este ligado

en otras palabras si en el ado haces una consulta por un select * from alumnos where edad>30 el datagrid te mostrara los registros que arroja la consulta