Programación General > Bases de Datos
PROBLEMA CON SELECT ANIDADO
novatovenezolano:
Bunas tardes amigos, les explico cual es mi problema:
tengo un formulario el cual trabaja con varios datacombo y dependiendo de cada seleccion se van cargando los demas, por ultimo tengo un combobox y en su evento click quiero q realice una consulta y me seleccione una celda y me la asigne a una caja de texto. El problema radica en q esta consulta se realiza dependiendo del text de los datacombos q ya se han cargado y los he asignado a variables, pero no logro anidar bien la consulta, y espero ver si me pueden ayudar a localizar este error.
--- Código: ---Open "select FRECUENCIA from Frecuencia where H/L = (select H/L from Frecuencia where H/L= '"variablexancho"') and CANAL = ("select CANAL from Frecuencia where CANAL = variablecanal) and ANCHO DE BANDA =("select ANCHO_DE_BANDA from Frecuencia where ANCHO DE BANDA = '" & variableancho& "') and BANDA = ("select BANDA From Frecuencia where BANDA = ' &variablebanda &')"
--- Fin del código ---
De verdad agradeceria una mano q me ayude con esta consulta q se ha vuelto un acertijo para mi!!
DiabloRojo:
Qué tal novatovenezolano,
No es más fácil usar una consulta SQL simple (es decir, no le veo el caso a anidar varios SELECT contra la misma tabla en cada caso):
--- Código: ---SELECT campo1 FROM tabla1 WHERE campo1 = condicion1 AND campo2 = condicion2 AND campo3 = condicion3 AND... AND campoN = condicionN
--- Fin del código ---
De cualquier forma, te sugiero revises el uso de comillas simples y dobles que estás efectuando...
Saludos.
novatovenezolano:
Gracias por la aclaratoria DiabloRojo, pero sigue sin realizar la consulta, voy a ser mas especifico a ver si me puedes ayudar:
1) mi tabla tiene 5 campos ( banda, anchodebanda, frecuencia, canal y sitio) los unicos campos numericos son canal y banda
esta es la consulta
--- Código: ---select FRECUENCIA from Frecuencia where CANAL = ' & variablecanal & ' and ANCHO_DE_BANDA = '" & variableancho & "' and BANDA = ' & variablebanda & ' and H/L = '" & sitio & "' "
--- Fin del código ---
pero me dice q faltan argumentos, quisiera saber cual es la frecuencia q cumple con las 4 condiciones anteriores y asignarla a un textbox y lo hago mediante este comando
--- Código: ---Text13.Text = RSxancho.Fields("Frecuencia").Value
--- Fin del código ---
Espero q me puedas ayudar hermano
gabio2:
Estás trabajando con VB ¿no?, creo que tienes problemas de sintaxis.
--- Código: SQL ---" select FRECUENCIA from Frecuencia where CANAL = " & variablecanal &" and ANCHO_DE_BANDA = '" & variableancho & "' and BANDA = '" & variablebanda & "' and H/L = '" & sitio & '" ""
Podrías de igual forma poner parte de tú código para ver donde estás comentiendo el error.
Saludos.
novatovenezolano:
--- Cita de: gabio2 en Lunes 12 de Agosto de 2013, 16:45 ---Estás trabajando con VB ¿no?, creo que tienes problemas de sintaxis.
--- Código: SQL ---" select FRECUENCIA from Frecuencia where CANAL = " & variablecanal &" and ANCHO_DE_BANDA = '" & variableancho & "' and BANDA = '" & variablebanda & "' and H/L = '" & sitio & '" ""
Podrías de igual forma poner parte de tú código para ver donde estás comentiendo el error.
Saludos.
--- Fin de la cita ---
Explico mejor mi problema a ver si alguien me puede ayudar:
1) tengo un formulario con varios datacombos, los cuales se cargan dependiendo del valor del anterior y los hago con recordset
2) el primer datacombo selecciono la banda para que me filtre los anchos de banda con esta instrucción
--- Código: ---Private Sub DataCombo6_Change()
With RSbanda
.Requery
.Find "BANDA = '" & CInt(DataCombo6.Text) & "' "
variablebanda = !Id
End With
With RSancho
.Requery
If .State = 1 Then .Close
.Open " select DISTINCT (ANCHO_DE_BANDA) from Frecuencia where BANDA = " & variablebanda & ""
End With
DataCombo16.Enabled = True
Set DataCombo16.RowSource = RSancho
DataCombo16.ListField = "ANCHO_DE_BANDA"
DataCombo16.DataField = "ANCHO_DE_BANDA"
End Sub
--- Fin del código ---
me carga perfecto los anchos de banda, y hago lo mismo con este para que me cargue los canales
--- Código: ---Private Sub DataCombo16_Change()
With RSancho
.Requery
variableancho = DataCombo16.Text
If .State = 1 Then .Close
.Open "select distinct (CANAL) from Frecuencia where ANCHO_DE_BANDA = '" & variableancho & "' "
End With
DataCombo8.Enabled = True
Set DataCombo8.RowSource = RSancho
DataCombo8.ListField = "CANAL"
DataCombo8.DataField = "CANAL"
End Sub
--- Fin del código ---
y perfecto me carga los canales y selecciono uno, mi tabla tiene 5 campos: banda, frecuencia. ancho de banda, canal y sitio, el valor del sitio lo tomo de un combo que tiene en su propiedad list los valores H y L, lo que quiero hacer es que al seleccionar por ultimo el sitio me envíe a una caja de texto el valor de esa frecuencia, ya que una frecuencia puede estar en h o l y lo hago en el evento click del combo con este código:
--- Código: ---Private Sub Combo1_Change()
With RSxancho
.Requery
variablecanal = CInt(DataCombo8.Text)
sitio = Combo1.Text
variableancho = DataCombo16.Text
If .State = 1 Then .Close
.Open "select FRECUENCIA from Frecuencia where CANAL = " & variablecanal & " and H/L = '" & sitio & "' and ANCHO_DE_BANDA = '" & variableancho & "' and BANDA = " & variablebanda & " "
Text13.Text = RSxancho.Fields("Frecuencia").Value
End With
End Sub
--- Fin del código ---
pero no me realiza la consulta, no se han especificado valores para alguno de los parámetros requeridos y no se realmente donde radicara el problema.
Agradecería que alguien pueda ayudarme
Navegación
[#] Página Siguiente
Ir a la versión completa