Visual Basic.NET - filtrar datatable con varias condiciones

 
Vista:
sin imagen de perfil

filtrar datatable con varias condiciones

Publicado por Francisco J (5 intervenciones) el 05/08/2022 02:49:22
Hola amigos,
Tengo una BD de maestros desempleados y quiero filtrar con varias condiciones para poder darles "trabajo"

lleno un datatable solo con una determinada asignatura.
pero quiero poner más condiciones, tengo este código:

If Not TypeOf ComboBox5.SelectedValue Is DataRowView Then
asignatura = ComboBox5.Text ''el usuario elige la asignatura
End If
Dim MyCommand As OleDb.OleDbCommand
Dim MyAdapter As New OleDb.OleDbDataAdapter
Dim MyConexion As New OleDb.OleDbConnection
MyConexion.ConnectionString = ("Provider=Microsoft.ACE.OLEDB.12.0;Data Source=|DataDirectory|\admision.accdb;")
MyCommand = MyConexion.CreateCommand
MyCommand.CommandText = "SELECT * FROM docentes where asignatura = '" + asignatura + "' ORDER BY orden ASC"
MyAdapter.SelectCommand = MyCommand
Dim Dt_Cliente As New System.Data.DataTable
MyAdapter.Fill(Dt_Cliente) '' se llena el datatable con maestros de esa asignatura

Dim recordCount As Integer
recordCount = Dt_Cliente.Rows.Count
Dim valor4 As String = ""
Dim valor5 As String = ""
Dim valor6 As String = ""
Dim valor7 As String = ""
Dim valor8 As String = ""
Dim valor9 As String = ""
Dim valor10 As Date
Dim valor11 As Date
Dim valor12 As String = ""
Dim valor13 As String = ""
Dim valor14 As String = ""
Dim valor15 As String = ""

Dim fechaActual As Date
fechaActual = Today
Label19.Text = Label19.Text & " " & fechaActual

For Each row As DataRow In Dt_Cliente.Rows
If row.Item("status").ToString() = "Sustentante" Or row.Item("status").ToString() = "Asignado" And row.Item("tipoplaza").ToString() = "Temporal" And row.Item("efectoshasta") < fechaActual Then ''' aqui pongo otras cuatro condiciones pero no sé si es lo mejor porque el filtro de fecha no me sale en el resultado
valor4 = CStr(row("nombre"))
valor5 = CStr(row("orden"))
valor6 = CStr(row("status"))
valor7 = CStr(row("tipoplaza"))
valor8 = CStr(row("ct"))
valor9 = CStr(row("horas"))
If IsDate(row("efectosdesde")) Then valor10 = (row("efectosdesde"))
If IsDate(row("efectoshasta")) Then valor11 = (row("efectoshasta"))
valor12 = CStr(row("tel1"))
valor13 = CStr(row("tel2"))
valor14 = CStr(row("correo1"))
valor15 = CStr(row("correo2"))
DataGridView2.Rows.Add(valor4, valor5, valor6, valor7, valor8, valor9, valor10, valor11, valor12, valor13, valor14, valor15) ''' lleno el datagrid con el resultado de los filtros
End If
valor4 = ""
valor5 = ""
valor6 = ""
valor7 = ""
valor8 = ""
valor9 = ""
valor10 = Nothing
valor11 = Nothing
valor12 = ""
valor13 = ""
valor14 = ""
valor15 = ""
Next
DataGridView2.AutoResizeColumns()
MyConexion.Close()
End Sub

cualquier ayuda será muy valiosa porque no puedo avanzar
si omití datos por favor ayúdenme pidiendo lo necesario.
GRACIAS!
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder