Ahora queremos pasar una variable que contiene el año a la búsqueda SQL (y no el año) y recuperar la lista de todas las películas estrenadas en 1960 o más recientemente. Además, para cada película encontrada, también queremos información como el año, título, director, medios utilizados y boletos vendidos. La solución consiste en recibir esta información en arrays o en un list box.
- La búsqueda inicial en el código 4D sería:
- Utilizando código SQL:
ARRAY LONGINT(aSoldTickets;0)
ARRAY INTEGER(aMovieYear;0)
ARRAY TEXT(aTitles;0)
ARRAY TEXT(aDirectors;0)
ARRAY TEXT(aMedias;0)
C_LONGINT($MovieYear)
$MovieYear:=1960
Begin SQL
SELECT Year_of_Movie, Title, Director, Media, Sold_Tickets
FROM MOVIES
WHERE Year_of_Movie >= :$MovieYear
INTO :aMovieYear, :aTitles, :aDirectors, :aMedias, :aSoldTickets;
End SQL
ARRAY LONGINT(aNrActors;Size of array(aMovieYear))
Como puede ver:
- Podemos pasar una variable ($MovieYear) a la búsqueda SQL usando la misma notación que para la recepción de parámetros.
- El resultado de la búsqueda SQL se guarda en los arrays aMovieYear, aTitles, aDirectories, aMedias y aSoldTickets. Los resultados se muestran en la ventana principal de dos maneras:
- Utilizando arrays agrupados:
![](http://doc.4d.com/picture/147961/pict147961.en.png)
- Utilizando un list box con columnas con los mismos nombres:
![](http://doc.4d.com/picture/147962/pict147962.en.png)
- Utilizando comandos SQL genéricos:
- Utilizando el comando SQL EXECUTE IMMEDIATE:
ARRAY LONGINT(aSoldTickets;0)
ARRAY INTEGER(aMovieYear;0)
ARRAY TEXT(aTitles;0)
ARRAY TEXT(aDirectors;0)
ARRAY TEXT(aMedias;0)
C_LONGINT($MovieYear)
C_TEXT($tQueryTxt)
REDUCE SELECTION([MOVIES];0)
$MovieYear:=1960
$tQueryTxt:=""
$tQueryTxt:=$tQueryTxt+"SELECT Year_of_Movie, Title, Director, Media, Sold_Tickets"
$tQueryTxt:=$tQueryTxt+" FROM MOVIES"
$tQueryTxt:=$tQueryTxt+" WHERE Year_of_Movie >= :$MovieYear"
$tQueryTxt:=$tQueryTxt+" INTO :aMovieYear, :aTitles, :aDirectors, :aMedias, :aSoldTickets;"
Begin SQL
EXECUTE IMMEDIATE :$tQueryTxt;
End SQL
ARRAY LONGINT(aNrActors;Size of array(aMovieYear))
Para probar todos los ejemplos anteriores, lance la base "4D SQL Code Samples" y vaya a la ventana principal. Elija el modo de consulta y presione el botón SQL query results in arrays.