Tengo una base de datos con 3 tablas en Visual Basic: para equipos, reservas y tramos.

Hola tengo una base de datos con las siguientes tablas
equipos:cod_equi
reservas:cod_reser.cod_equi
tramos:cod_tra
Se produce la tabla intermedia reservas, en la cual tiene un campo cod_equi relacionado con equipos, entonces cada vez que se reserva un equipo se crea un registro en reservas con el cod_equi (ósea el equipo, el computador) que se esta usando, entonces yo quiero saber cómo puedo obtener los computadores que no están reservados, es decir los equipos que no están en en la tabla intermedia reservados, he probado de varias maneras pero no me resulta
estoy usando visual basic 6.0 contra una base de datos sql server 7.0
aquí te escribo el código que estoy usando
Gracias :)
Private Sub loadequipos()
cmbequipos.Clear
Dim cn As ADODB.Connection
Dim rs As ADODB.Recordset
Dim consulta As String
Set cn = New ADODB.Connection
cn.ConnectionString = "Provider=SQLOLEDB.1;Integrated Security=SSPI;Persist Security Info=False;Initial Catalog=netsys;Data Source=" + ipserver
cn.Open , "", ""
Set rs = New ADODB.Recordset
consulta = "SELECT cod_equi.equipos from equipos LEFT JOIN reservas on equipos.cod_equi = reservas.cod_equi (where reservas.cod_equi Is Null) " _'+ " and where cod_tra ='" + Mid(cmbtramos.Text, 1, 1) + "'"
'Mid(cmbtramos.Text, 1, 1) es un combobox el cual en su primer caracter tiene 'un numero por ejemplo el 1 que es el código del tramo horario
rs.Open consulta, cn, 3, 3
If rs.RecordCount = 0 Then Exit Sub
Do While Not rs.EOF
cmbequipos.AddItem rs.Fields("cod_equi")
'Next i
rs.MoveNext
Loop
rs.Close
cn.Close
Set rs = Nothing
Set cn = Nothing
End Sub

1 Respuesta

Respuesta
1
Prueba con esta rutina, la parte del código específico a localizar la puedes adaptar, pero como esta escrito busca todos los datos de los equipos reservados y después valida que no aparezcan en los disponibles:
Private Sub loadequipos()
cmbequipos.Clear
Dim cn As ADODB.Connection
Dim rs As ADODB.Recordset
Dim consulta As String
Set cn = New ADODB.Connection
cn.ConnectionString = "Provider=SQLOLEDB.1;Integrated Security=SSPI;Persist Security Info=False;Initial Catalog=netsys;Data Source=" + ipserver
cn.Open , "", ""
Set rs = New ADODB.Recordset
consulta = "SELECT cod_equi.equipos from equipos WHERE equipos.cod_equi NOT IN (SELECT reservas.cod_equi FROM reservas"
'Mid(cmbtramos.Text, 1, 1) es un combobox el cual en su primer caracter tiene 'un numero por ejemplo el 1 que es el código del tramo horario
rs.Open consulta, cn, 3, 3
If rs.RecordCount = 0 Then Exit Sub
Do While Not rs.EOF
cmbequipos.AddItem rs.Fields("cod_equi")
'Next i
rs.MoveNext
Loop
rs.Close
cn.Close
Set rs = Nothing
Set cn = Nothing
End Sub

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas