Realizar consulta en 3 tablas relacionadas

Me podrías a yudar estoy haciendo una consulta en visual para traer información de tres tablas. Pero me dice que no se encuentra el elemento en la colección que corresponde. Te envío mi código para que por favor me revises.
Private Sub txtCI_KeyPress(KeyAscii As Integer)
    If KeyAscii = 13 Then
    Set rs = New ADODB.Recordset
    Dim sMiSQL As String
    sMiSQL = "Select Tabla1.Nombre, Tabla1.Apellido,Tabla2.NomCargo,tabla3.NomDpto FROM tabla3 INNER JOIN (tabla2 INNER JOIN tabla1 ON tabla2.IdCargo = tabla1.IdCargo) ON tabla3.IdDpto = tabla2.IdDpto Where tabla1.CI =" & Me.txtCI.Text
    rs.Open sMiSQL, cnConexion, adOpenStatic, adLockOptimistic
       If rs.RecordCount <= 0 Then Exit Sub
    lblNombre.Caption = rs.Fields("Nombre")
    lblApellido.Caption = rs.Fields("Apellido")
    lblCargo.Caption = rs.Fields("Cargo")
    lblDpto.Caption = rs.Fields("Departamento")
     Timer1.Enabled = True
   End If
End Sub
Y me indique donde puedo estar equivocada.

1 respuesta

Respuesta
1
tu select deberia ser asi
Select Tabla1.Nombre,
Tabla1. Apellido,
Tabla2. NomCargo,
tabla3. NomDpto
FROM tabla1
INNER JOIN tabla2  on tabla2.IdCargo = tabla1.IdCargo
INNER JOIN Tabla3 ON tabla3.IdDpto = tabla2.IdDpto
Where tabla1.CI =" & Me.txtCI.Text
Cualquier cosa me avisas.
Sabes, así la tenia anteriormente y no me funciona, me dice :"error de sintaxis Falta operador en la expresión de consulta"
Cargo.IdCargo = Personas.IdCargo INNER JOIN Departamento ON Departamento.IdDpto = Cargo.IdDpto
Perdona, no me fije en tu WHERE la forma correcta de usar los JOIN es como te lo pase eso no es el problema. El problema aparentemente esta en tu WHERE te faltan los apostrofes
Select Tabla1.Nombre,
Tabla1. Apellido,
Tabla2. NomCargo,
tabla3. NomDpto
FROM tabla1
INNER JOIN tabla2  on tabla2.IdCargo = tabla1.IdCargo
INNER JOIN Tabla3 ON tabla3.IdDpto = tabla2.IdDpto
Where tabla1.CI ='" & Me.txtCI.Text & "'"
Fijate ahi
Disculpa la anterior es así.
tabla2.IdCargo=tabla1.IdCargo INNER JOIN tabla3 ON tabla3.idDpto=Tabla2.Idpto.
Ahora fíjate estoy realizando la consulta con 2 tablas con la tabla1 y la tabla2, de esta forma
"SELECT tabla1.Nombre,tabla1.Apellido,tabla2.NomCargo FROM tabla2 INNER JOIN tabla1 ON tabla2.IdCargo = tabla1.IdCargo Where tabla1.CI =" & Me.txtCI.Text.
Y me da error de que no se encuentra el elemento en la colección que corresponde con el nombre o el ordinal perdido.
Y se sombrea en la sentencia
lblCargo.Caption = rs.Fields("Cargo")
Gracias por tu ayuda
Lo coloque como me lo enviaste pero me sigue dando el mismo error.
Amigo fíjate en tu select, debería tener el mismo nombre de columna que en tu FIELD te marco de negrita el detalle para que lo revises.
"SELECT tabla1.Nombre,tabla1.Apellido,tabla2.NomCargo FROM tabla2 INNER JOIN tabla1 ON tabla2.IdCargo = tabla1.IdCargo Where tabla1.CI =" & Me.txtCI.Text.
Y me da error de que no se encuentra el elemento en la colección que corresponde con el nombre o el ordinal perdido.
Y se sombrea en la sentencia
lblCargo.Caption = rs.Fields("Cargo")
Tu columna se llama NomCargo sin embargo abajo haces referencia a una llamada Cargo

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas