Tabla de Contenidos

Cargar imágenes desde la BD


Para cargar imágenes de las que guardamos su ruta en la BD, creamos en nuestra colección un campo invisible de tipo texto RUTA, y un campo botón que llamaremos MAP_IMAGEN.

<prop name="IMAGEN" group="1" type="T" size="255" visible="7" title="Invisible" fieldsize="10" />
<button name="MAP_IMAGEN" group="1" caption=" " locked="true" locking="true" visible="true" labelwidth="20" img="##FLD_IMAGEN##" bgcolor="#FFFFFF" text-bgcolor-disabled="#FFFFFF" />

Creación de la Colección Películas



Esta será la colección de la que obtendremos los datos, y la ruta de la imagen para poder visualizarlas en nuestra colección Entrada.

    <coll name="Peliculas" notab="true" title="Peliculas" fontsize="8" sql="SELECT t1.ID,t1.IDCOMUNIDAD,t1.IDPROVINCIA,t1.IDLOCALIDAD,
		t1.IDGENERO,t1.IDDIRECTOR,t1.IDCLASIFICACION,t1.TITULO,t1.OPCION,
		t1.IMAGENFOTO,t1.IMAGENRUTA,t1.SINOPSIS,t1.AÑO,t2.NOMBRE AS MAP_COMUNIDAD,
		t3.NOMBRE AS MAP_PROVINCIA,t4.NOMBRE AS MAP_LOCALIDAD,t6.NOMBRE AS MAP_DIRECTOR,t5.NOMBRE AS MAP_GENERO,t7.NOMBRE AS MAP_CLASIFICACION,t1.DISPONIBLE
			 FROM ((((((##PREF##Peliculas t1 LEFT OUTER JOIN ##PREF##Comunidades t2 ON t1.IDCOMUNIDAD=t2.ID)
			 LEFT OUTER JOIN ##PREF##Provincias t3 ON t1.IDPROVINCIA=t3.ID)
			 LEFT OUTER JOIN ##PREF##Localidades t4 ON t1.IDLOCALIDAD=t4.ID)
			 LEFT OUTER JOIN ##PREF##Generos t5 ON t1.IDGENERO=t5.ID)
			 LEFT OUTER JOIN ##PREF##Directores t6 ON t1.IDDIRECTOR=t6.ID)
			 LEFT OUTER JOIN ##PREF##Clasificacion t7 ON t1.IDCLASIFICACION=t7.ID)" objname="Peliculas" updateobj="Peliculas" filter="" sort="" progid="ASData.CASBasicDataObj">
      <group name="General" id="1" />
      <!-- ENLACE CON LA COLECION PROVINCIAS POR LA ID PARA OBTENER EL NOMBRE DE LA PROVINCIAS-->
      <prop name="IDCOMUNIDAD" group="1" type="N" visible="0" fieldsize="10" size="10" mapcol="Comunidades" mapfld="ID" />
      <prop name="IDPROVINCIA" group="1" type="N" visible="0" fieldsize="10" size="10" mapcol="Provincias" mapfld="ID" filter="IDCOMUNIDAD=##FLD_IDCOMUNIDAD##" />
      <prop name="IDLOCALIDAD" group="1" type="N" visible="0" fieldsize="10" size="10" mapcol="Localidades" mapfld="ID" filter="IDPROVINCIA=##FLD_IDPROVINCIA##" />
      <prop name="IDGENERO" group="1" type="N" visible="0" title="Genero" fieldsize="10" size="10" mapcol="Generos" mapfld="ID" />
      <prop name="IDDIRECTOR" group="1" type="N" visible="0" title="Director" fieldsize="10" size="10" mapcol="Directores" mapfld="ID" />
      <prop name="IDCLASIFICACION" group="1" type="N" visible="0" title="Clasificacion" fieldsize="10" size="10" mapcol="Clasificacion" mapfld="ID" />
      <!-- GRUPO 1 -->
      <prop name="TITULO" group="1" type="T" visible="3" title="Titulo" fieldsize="10" size="30" />
      <prop name="OPCION" group="1" type="N" vidible="1" title="Opcion" fieldsize="10" size="10" onchange="refresh" visible="" />
      <prop name="MAP_IMAGEN" group="1" type="NC" visible="1" title="Imagen del movil" fieldsize="10" size="10" onchange="refresh" />
      <prop name="MAP_FHOTO" group="1" type="NC" visible="1" title="Imagen por foto" fieldsize="10" size="10" newline="false" onchange="refresh" />
      <prop name="IMAGENFOTO" group="1" type="PH" visible="1" title="Foto" fieldsize="10" size="255" disablevisible="OPCION=0 or OPCION=1" onchange="refresh" />
      <prop name="IMAGENRUTA" group="1" type="IMG" visible="1" title="Imagen" labelwidth="0" fieldsize="10" size="255" disablevisible="OPCION=0 or OPCION=2" onchange="refresh" />
      <prop name="MAP_RUTA" group="1" type="AT" visible="1" title="Ruta" fieldsize="10" size="255" disablevisible="OPCION=0 or OPCION=2" onchange="refresh" />
      <prop name="SINOPSIS" group="1" type="T" visible="1" title="Sinopsis" fieldsize="10" size="100" lines="5" />
      <prop name="AÑO" group="1" type="T" visible="3" title="Año De Estreno" fieldsize="10" size="10" onchange="refresh" />
      <prop name="MAP_COMUNIDAD" group="1" type="T" visible="1" title="Comunidad" fieldsize="10" size="25" linkedto="IDCOMUNIDAD" linkedfield="NOMBRE" onchange="refresh" />
      <prop name="MAP_PROVINCIA" group="1" type="T" visible="1" title="Provincia" fieldsize="10" size="30" linkedto="IDPROVINCIA" disableedit="IDCOMUNIDAD=0" linkedfield="NOMBRE" onchange="refresh" />
      <prop name="MAP_LOCALIDAD" group="1" type="T" visible="1" title="Localidad" fieldsize="10" size="10" linkedto="IDLOCALIDAD" disableedit="IDPROVINCIA=0" linkedfield="NOMBRE" onchange="refresh" />
      <prop name="MAP_DIRECTOR" group="1" type="T" visible="1" title="Director" fieldsize="10" size="10" linkedto="IDDIRECTOR" linkedfield="NOMBRE" onchange="refresh" />
      <prop name="MAP_GENERO" group="1" type="T" visible="3" title="Genero" fieldsize="10" size="10" linkedto="IDGENERO" linkedfield="NOMBRE" onchange="refresh" />
      <prop name="MAP_CLASIFICACION" group="1" type="T" visible="1" title="Clasificacion" fieldsize="10" size="10" linkedto="IDCLASIFICACION" linkedfield="NOMBRE" onchange="refresh" />
      <prop name="DISPONIBLE" group="1" type="NC" visible="3" title="Disponible" fieldsize="10" size="1" />
      </coll>

Creación de la Colección Entrada

Esta colección será en plan catálogo, donde visualizaremos como si fuese un videoclub las diferentes películas disponibles:

 <coll name="Entrada" title="Entrada" fontsize="8" sql="SELECT t1.ID
			 FROM ##PREF##Entrada t1" objname="Entrada" updateobj="Entrada" filter="" sort="" progid="ASData.CASBasicDataObj" notab="true">
      <group name="Pelis" id="1" />
      <frame name="General" align="center" width="100%" height="50%" />
      <frame name="ImagenPelis" frame="General" width="100%" height="100%" />
      <frame name="Cargando" align="center" width="100%" height="20%" />
      <frame name="Carga" frame="Cargando" width="100%" height="100%" />
      <prop name="MAP_TITULO" type="T" visible="1" title="Titulo" group="1" fieldsize="10" size="15" />
      <prop name="MAP_IMAGEN" type="IMG" frame="ImagenPelis" labelwidth="0" visible="1" group="1" fieldsize="10" size="255" ximg="##FLD_MAP_IMAGEN##"/>
      <prop name="MAP_BOTON_ANT" type="B" visible="1" lmargin="4" title="ATRAS" group="1" labelwidth="9" fieldsize="10" size="15" method="ExecuteNode (ANTERIOR)" disableedit="MAP_BUTOM_ACTIVATE=0" />
      <prop name="MAP_BOTON_SIG" type="B" visible="1" title="SIGUIENTE" group="1" labelwidth="9" fieldsize="15" size="15" method="ExecuteNode (SIGUIENTE)" newline="false" disableedit="MAP_BUTOM_ACTIVATE=1" />
      <prop name="MAP_BOTON" type="B" visible="1" lmargin="10" title="Alquilar" group="1" labelwidth="9" fieldsize="10" size="15" method="ExecuteNode (click)" />
      <prop name="MAP_BANDERA" type="N" visible="0" title="BANDERA" group="1" fieldsize="10" size="15" />
      <prop name="MAP_BUTOM_ACTIVATE" type="N" visible="0" title="visible" group="1" fieldsize="10" size="15" />
      <prop name="MAP_CARGA" type="IMG" visible="1" title="visible" group="1" labelwidth="0" fieldsize="10" size="15" path="##APP##\icons\cargando.gif" />
      <create>
        <action name="runscript">
          <script language="VBScript"> 
          		RecogerDatosColeccionSiguiente
           </script>
        </action>
        <action name="setval" field="MAP_BUTOM_ACTIVATE" value="0" />
      </create>
      <click>
        <action name="runscript">
          <script language="VBScript">
          		Dim dato 'pb1
				LlamarColeccion("Peliculas")
				'dato=pb1.This.contents.("TITULO")Obtener un campo de una coleccion
				'Appdata.FailWithMessage -11822,dato
           </script>
        </action>
      </click>
      <SIGUIENTE>
        <action name="runscript">
          <script language="VBScript">
          		RecogerDatosColeccionSiguiente
           </script>
        </action>
      </SIGUIENTE>
      <ANTERIOR>
        <action name="runscript">
          <script language="VBScript">
          		RecogerDatosColeccionAtras
           </script>
        </action>
      </ANTERIOR>
    </coll>

Funciones

Función recogerdatoscoleccionatras


En esta función se recorrerá la base da datos de la colección películas, ordenado de manera descendente, con la condición de ID menor al que estaba , y cogerá el primer registro que esté, si no recoge ningún registro significará que ya no hay más .

function RecogerDatosColeccionAtras()
	Dim i,col,sFilter
	set col=appData.GetCollection("Peliculas")
	col.sort="t1.ID DESC"
	i=this("MAP_BANDERA")
	sFilter="t1.ID<"+i
	col.filter=sFilter
	col.startBrowse
	if not col.currentItem is nothing then
		AsignarDatos(col.currentItem)
		col.movenext
		if col.currentItem is nothing then
			this("MAP_BUTOM_ACTIVATE")=0		
		else
			this("MAP_BUTOM_ACTIVATE")=2
		end if
	end if
	col.endBrowse
end function

Función recogerdatoscoleccionsiguiente


Esta función será igual que la anterior, pero ordenado de manera ascendente.

function RecogerDatosColeccionSiguiente()
	Dim i,col,sFilter
	set col=appData.GetCollection("Peliculas")
	col.sort="t1.ID ASC"
	i=this("MAP_BANDERA")
	sFilter="t1.ID>"+i
	col.filter=sFilter
	col.startBrowse
	if not col.currentItem is nothing then
		AsignarDatos(col.currentItem)
		col.movenext
		if col.currentItem is nothing then
			this("MAP_BUTOM_ACTIVATE")=1
		else
			this("MAP_BUTOM_ACTIVATE")=2
		end if
	end if
	col.endBrowse
end function

Función asignardatos


Con esta función recogeremos los datos que queramos del registro recogido.

function AsignarDatos(obj)
	this("MAP_ID")=obj("ID")
	this("MAP_TITULO")=obj("TITULO")
	this("MAP_BANDERA")=obj("ID")
	if obj("IMAGENFOTO")="" then
		this("MAP_IMAGEN")=obj("IMAGENRUTA")
	else
		this("MAP_IMAGEN")=obj("IMAGENFOTO")
	end if
end function