Hola he empezado a tocar el vb para hacer bases de datos, y no se exactamente como se hacen subformularios que muestren solo los registros filtrados por ejemplo por el campo ID = ID . En access es muy sencillo pues lo hace sólito todo, pero me gustaría saber como se hace en vb, he probado de copiar el código de uno al otro y hacer alguna cosa más pero no funciona. Muchas gracias.
Es muy senzillo si utilizas ADO es mediante la propiedad del recordset filter. o bien abres el recordset con una consulta SQL donde ID=ID; EJEMPLO Public Sub FilterX() Dim rstPublishers As ADODB.Recordset Dim rstPublishersCountry As ADODB.Recordset Dim strCnn As String Dim intPublisherCount As Integer Dim strCountry As String Dim strMessage As String ' Abre un objeto Recordset con datos de la tabla Editores. strCnn = "Provider=sqloledb;" & _ "Data Source=srv;Initial Catalog=pubs;User Id=sa;Password=; " Set rstPublishers = New ADODB.Recordset rstPublishers.CursorType = adOpenStatic rstPublishers.Open "editores", strCnn, , , adCmdTable ' Llena el objeto Recordset. intPublisherCount = rstPublishers.RecordCount ' Obtiene la entrada del usuario. strCountry = Trim(InputBox( _ "Escriba el país por el que desea filtrar:")) If strCountry <> "" Then ' Abre un objeto Recordset filtrado. Set rstPublishersCountry = _ FilterField(rstPublishers, "País", strCountry) If rstPublishersCountry.RecordCount = 0 Then MsgBox "No hay editores de ese país." Else ' Imprime el número de registros del objeto Recordset ' original y del objeto Recordset filtrado. strMessage = "Pedidos del conjunto de registros original: " & _ vbCr & intPublisherCount & vbCr & _ "Pedidos del conjunto de registros filtrado (País = '" & _ strCountry & "'): " & vbCr & _ rstPublishersCountry.RecordCount MsgBox strMessage End If rstPublishersCountry.Close End If End Sub Public Function FilterField(rstTemp As ADODB.Recordset, _ strField As String, strFilter As String) As ADODB.Recordset ' Establece un filtro sobre el objeto Recordset especificado y, ' después, abre un nuevo objeto Recordset. rstTemp.Filter = strField & " = '" & strFilter & "'" Set FilterField = rstTemp End Function