Hacer consulta en power builder con sentencia top

Disculpa tengo una duda, quiero hacer una consulta de mi sistema, en su taba libros más solicitados, mira lo que quiero hacer es poner un # en un sle.text y que me muestre el # de libros más solicitados que filtre del datawindow, no se como hacer, ya que esta sentencia en sql funciona, pero no se acoplarlo al power, en el evento clicked, ok gracias
select top 5* from prestamo---- me muestra los 5 mejores,quiero acoplarlo al power builder,en l caja d texto,y al hacer click,muestre en el datwindow.
Agaradecere tu ayuda

1 respuesta

Respuesta
1
Ese select no muestra los 5 mejores, lo que hace es mostrar los 5 primeros registros de la tabla tal como se ha registrado. Ahora para hacer lo que deseas has lo siguiente:
String ls_sql,ls_valor
ls_valor = sle_1.text
ls_sql = 'Select top '+ls_valor+' * from prestamo'
dw_1.SetSQLSelect(ls_sql)
dw_1.Retrieve()
Aya, entonces me muestra los 5 primeros, entonces me confundí, dime como se haría para seleccionar los 5 mejores o el # que aparece en el sle, y que muestre en el datawindow, quiero mostrar el # de libros más solicitados, es como un ranking, para eso creo que primero cuento y luego le hago un top, o me equivoco, agradeceré tu ayuda, ya que estoy perdido un poco en el tema, gracias
Entonces hazlo de la siguiente manera:
String ls_subconsulta,ls_valor,ls_sql
ls_valor = sle_1.text
ls_subconsulta = '(select count(*) cantidad, cod_item codigo from prestamo grupo by codigo)t'
ls_sql = 'select top 'ls_valor+' t.codigo,t.cantidad from '+ls_subconsulta+' order by 2 desc'
dw_1.SetSQLSelect(ls_sql)
dw_1.Retrieve()
Como podrás ver es un select dentro de otro select, la subconsulta lo que hace es contar la cantidad que hay por item, y el select general lo que hace es ordenarlo de mayor a menor y mostrar las n primeras filas.
Disculpa pero ese código que me diste sale con la sintaxis incorrecta y esta mal sobre la sentencia top, eso me sale en una ventana de error, esa es la única forma o hay otra, o dime por favor el código correspondiente,
x si acaso t doy los campos de mi tabla préstamo que son:nro_prestamo, alu_cod, lib_cod, fec_ini, fec_fin, estado
Tengo un data window con todo estos campos, o como creo el datawindow, ok, sperare tu ayuda
Si parece que se me olvido poner un signo +
Adapte el select con tus tablas
Mira el select general es:
select top 5 t.cantidad,t.cod_libro
from (select count(*) cantidad,
lib_cod cod_libro
from prestamo
group by lib_cod)t
order by t.cantidad desc
String ls_subconsulta,ls_sql
Long ll_valor
ll_valor = Long(sle_1.text)
ls_subconsulta = '(select count(*) cantidad, lib_cod cod_libro from prestamo grupo by cod_libro)t'
ls_sql = 'select top '+string(ll_valor)+' t.cantidad,t.cod_libro from '+ls_subconsulta+' order by 2 desc'
dw_1.SetSQLSelect(ls_sql)
dw_1.Retrieve()
Si quieres hacerlo esto directamente en el dw, entonces deberás hacerlo de esta manera:
select top :al_valor t.cantidad,t.cod_libro
from (select count(*) cantidad,
lib_cod cod_libro
from prestamo
group by lib_cod)t
order by t.cantidad desc
Donde deberás declarar al_valor como parámetro del dw y de tipo numérico.
Entonces a la hora de llamarlo simplemente haces de esta forma:
dw_1.Retrieve(5)
Bueno tu código que me has dado lo estoy ingresando en un botón, es decir cuando en el sle.text ingreso un numero al hacer click en el botón, en el datawindow debe mostrase el # de libros más solicitados que se compare con el sle.text, me captas, pero pongo esto y me sale que no reconoce el by, entiendes, disculpa por tanta molestia, sperare tu ayuda, ok
Bueno ya logre arreglar eso del by, pero me sale ahora que se intento enlazar a una columna inxistente, no entiendo eso, ya que mi datawindow tiene estos campos nro_prestamo, alu_cod, lib_cod, fec_ini, fec_fin, estado, o para que reconozca este código no va esos campos, o como va el filtro,, gracias
Haber enviame el código que estas usando y si hay algo que estas haciendo mal.
Enviame el código sql de tu dw para revisarlo, posiblemente algo este mal.
Bueno no me salio con tu código al final lo trabaje con procedimiento almacenado y en un nuevo datawindow y funciono, ya sera en otra, ok gracias
Que bien, podrías al menos cerrar la pregunta.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas