27/05/2011

cfc Genera Select dínamico II

En el primer post cfc Genera Select dínamic se plasmo el componente necesario para generar un combobox a partir de diferentes parámetros de entrada. En este post se muestra la manera de usarlo en la construcción de un formulario.
<cfinvoke component="comp.dspGeneraSelect" method="crearSelect">
<cfinvokeargument name="tabla" value="ext_cat_calidadmigratoria" />
<cfinvokeargument name="campos" value="descripcion,id_cm" />
<cfinvokeargument name="ordenar" value="descripcion" />
<cfinvokeargument name="nombre" value="cCalidadMigratoria" />
<cfinvokeargument name="valor" value="id_cm" />
<cfinvokeargument name="estilo" value="normal-ngo" />
<cfinvokeargument name="desplegar" value="descripcion" />
<cfinvokeargument name="seleccionado" value="#iif(IsDefined('cCalidadMigratoria'),'cCalidadMigratoria','')#" />
<cfinvokeargument name="dSource" value="rh_personal" />
<cfinvokeargument name="filtro" value="estatus = 1" />
<cfinvokeargument name="onChangeScript" value="cAccionNW.value='chkCM'; submit()" />
</cfinvoke>
NOTA: La tabla que se utiliza para obtener los datos debe de ser de lo mas sencillo, es decir solo se puede hacer un select a una tabla para obtener datos, si se requiere obtener los datos de la union de varias tablas se recomienda generar una vista y llamar a la vista en lugar de la tabla.

18/05/2011

Java script change action and target

document.nameofmainframe.target = "_blank";
document.nameofmainframe.action =  "pagedestiny";
document.nameofmainframe.submit();

16/05/2011

JavaScript Validar Input acepta Flotantes de 2 decimales

function isNumberKey(evt)
{
 var e = evt; // for trans-browser compatibility
  var charCode = e.which || e.keyCode;
 var patt1=/^((\d+(\.\d*)?)|((\d*\.)?\d+))$/;
 var str = document.Fevaluaciones.propObj.value+String.fromCharCode(charCode);
 //alert(patt1.exec(str));
 if(patt1.test(str)) {
  try {
   part= str.split(".");
   if(part[1].length <= 2)
    return true
   else 
    return false;
  } catch(e){
   return true;
  }
 } else {
  return false
 };
}

13/09/2010

cfc Genera Select dínamico

Coldfusion es un lenguaje de programación de páginas web, está desarrollado por Adobe. Me he metido un poco a programar bajo coldfusion y me he topado con muchas ventajas, a continuación describo un cfc (coldfusion component) que me paso un compañero de trabajo, es muy útil para poder programar de manera rápida y efectiva parte de un formulario.
Si en nuestro formulario tenemos inputs de tipo select y estos los llenamos con catálogos que tenemos en una base de datos, podremos hacer uso de esta función sin necesidad de hacer otra cosa mas que invocarla y como es un componente dinámico, podemos configurarlo dependiendo de que parámetros le enviemos.




<!---NOTA: Silos querys son complejos (en el select hay case o condiciones CREAR UNA VISTA--->
<cfcomponent displayname="Generar Select" hint="Crea un cfselect a partir de una tabla y dos campos" output="true">
<cffunction name="crearSelect" displayname="Init" hint="Constructor" access="public" output="true" returntype="any">
<!---
Recibo la tabla,los campos que se incluiran en el display del select y la expresion de filtro opcional.
Hago un query con los campos pasados.
Concateno los campos del query.
Despliego el cfselect. --->
<cfargument name="tabla" required="true" hint="Tabla sobre la que se crea el cfselect" displayname="Tabla" type="string" />
<cfargument name="campos" required="true" hint="La lista de campos a concatenar" displayname="Campos" type="string" />
<cfargument name="nombre" required="false" hint="El nombre que tendra el select" displayname="Nombre" type="string" />
<cfargument name="valor" required="true" hint="El campo que llenara el valor del select" displayname="Valor" type="string" />
<cfargument name="desplegar" required="false" hint="El campo que se desplegara en el select" displayname="Desplegar" type="string" />
<cfargument name="filtro" required="false" hint="La expresion de filtro para el query" displayname="Filtro" type="string" />
<cfargument name="ordenar" required="false" hint="Ordenar" displayname="ordenar" type="string" />
<cfargument name="onChangeScript" required="false" hint="El script que se usara en el evento onchage" displayname="OnChange Script" type="string" default="" />
<cfargument name="estilo" required="false" displayname="Estilo" type="string" default="" />
<cfargument name="agregarBlanco" required="false" displayname="Agregar Blanco" hint="Determina si agrega un registro en blanco al query" default="true" />
<cfargument name="seleccionado" required="false" displayname="Seleccionado" hint="Determina la opcion seleccionada" default=""/>
<cfargument name="listaFiltrado" required="false" displayname="Lista de Filtrado" hint="Es una lista que incluye los codigos a excluir">
<cfargument name="soloLectura" required="false" default="false" displayname="Solo lectura" hint="Determina si el control es de solo lectura" />
<cfargument name="distinct" required="false" default="false" displayname="Distinct" hint="Booleano que si es verdadero se agrega la clausula distinct a la expresion de consulta" />
<cfargument name="textoSeleccione" required="false" default="Seleccione..." displayname="Texto Seleccione" hint="Si se pasa sustituye el texto Seleccione... de la opcion en blanco" />
<cfargument name="dSource" required="false" default="#application.basedatos#" type="string" displayname="Data source" />

<cfset var qCampos = "" />
<cfset var expresion = "" />
<cfset var i = "" />
<cfset var j = 1 />
<cfif ListLen(arguments.campos) EQ 1>
<cfset expresion = arguments.campos & " AS elcampo" />
<cfelse>
<cfloop list="#arguments.campos#" index="i">
<cfset "campo#j#" = i />
<cfset j = j + 1 />
</cfloop>
</cfif>
<cfquery datasource="#arguments.dSource#" name="qCampos">
SELECT <cfif arguments.distinct EQ true>DISTINCT</cfif> #arguments.campos#
FROM #arguments.tabla#
WHERE 0 = 0
<cfif IsDefined('arguments.listaFiltrado') AND arguments.listaFiltrado NEQ ''>
AND #arguments.valor# NOT IN(#PreserveSingleQuotes(arguments.listaFiltrado)#)
</cfif>
<cfif IsDefined('arguments.filtro') AND arguments.filtro NEQ ''>
AND #URLDecode(PreserveSingleQuotes(arguments.filtro))#
</cfif>
<cfif IsDefined('arguments.ordenar') AND arguments.ordenar NEQ ''>
ORDER BY #arguments.ordenar#
</cfif>
</cfquery>
<cfif agregarBlanco EQ true>
<cfset temp = QueryAddRow(qCampos,1) />
<cfset j = 1 />
<cfloop list="#arguments.campos#" index="i">
<cfif j EQ 1>
<cfset temp = QuerySetCell(qCampos,i,arguments.textoSeleccione) />
<cfset j = j + 1 />
<cfelse>
<cfset temp = QuerySetCell(qCampos,i,'') />
<cfset j = j + 1 />
</cfif>
</cfloop>

</cfif>
<!--- ---------------------------------- --->
<select name="#arguments.nombre#" onchange="#arguments.onChangeScript#" class="#arguments.estilo#" id="#arguments.nombre#" <cfif arguments.soloLectura EQ true>disabled</cfif>>
<cfoutput query="qCampos">
<cfif IsDefined('arguments.desplegar')>
<cfset expresionDisplay = Evaluate('qCampos.#arguments.desplegar#') />
<cfelseif ListLen(arguments.campos) EQ 1>
<cfset expresionDisplay = Evaluate('qCampos.#arguments.campos#') />
<cfelse>
<cfset expresionDisplay = Evaluate('qCampos.#campo1#') & " - " & Evaluate('qCampos.#campo2#') />
</cfif>
<cfset expresionValor = "qCampos."&arguments.valor>
<cfif expresionDisplay NEQ ''>
<option value="#Evaluate(expresionValor)#" <cfif Evaluate(expresionValor) EQ arguments.seleccionado>selected</cfif>>#expresionDisplay#</option>
</cfif>
</cfoutput>
</select>

<cfreturn />
</cffunction>
</cfcomponent>

02/08/2010

SQL server 2005 Search Trigger

If you want to search triggers for text in SQL Server 2005, here is how you can do it.  You would execute this in the case that you are looking for a trigger that updates a certain table, but you cannot find it, and you do not want to go through all the tables one by one, here is what you can execute:

 
SELECT OBJECT_NAME(id)
FROM syscomments
WHERE [text] LIKE '%your_search_here%' AND OBJECTPROPERTY(id, 'IsTrigger') = 1
GROUP BY OBJECT_NAME(id)

05/11/2009

Servira tu=?

Pues vagando de a rapidin por la internet me tope con este post y me enteré de la existencia de la aplicacion que mencionan, mi pregunta es, realmente servira, mira que soy inexperto en el asunto, le pregunte a un compañero de trabajo (tiene una bebe) y me dice que puede que si funcione porque si lloran diferente los bebes :S tendre que tenerlo en mi kit de herramietas para cuando sea papá digo mas vale prevenir no =?. El post es el siguiente:

Image

 

¿Recuerdas el invento de Hebert, el hermano de Homero Simpson? Esta aplicación tiene un 96% de efectividad al interpretar el llanto infantil y funciona con iPhone y iPod Touch.

 

 

Cry Translator es la novedad en aplicaciones para iPhone y iPod Touch. Básicamente su función es captar el llanto del bebé mediante el micrófono del dispositivo e interpretarla de acuerdo a 5 categorías diferentes en menos de 10 segundos. Las categorías son hambre, sueño, fastidio, estrés y aburrimiento, las cuales, según los desarrolladores de la aplicación son categorías de comunicación infantil universales que se entienden independientemente de la cultura o lenguaje.

Su tecnología ha sido probada en Norte América y España, y su precio es de $30 dólares, aunque hasta el 11 de noviembre costara solo $10 dólares, y puedes comprarla en ESTA LIGA.

Aunque algunos son escépticos al aceptar que este tipo de tecnología realmente funcione, no puedes negar sin embargo, que para un padre a veces es muy difícil identificar lo que su bebé necesita exactamente y una pequeña ayuda puede ahorrar mucho tiempo y esfuerzo.

Fuente: http://www.sputnik.com.mx/

08/10/2009

"Robert'); DROP TABLE Students; --"

Traducción - Hola, hablamos de la escuela de su hijo. Tenemos algunos problemas con las computadoras. - Oh, dios mio! rompió algo? - En cierta forma. - De verdad su hijo se llama "Robert'); DROP TABLE Students; --" ? - Claro por supuesto, de cariño le decimos "Bobby Tables". - Bueno, espero que este feliz; acabamos de perder la información de todos nuestros estudiantes. - Y yo espero que hayan aprendido a sanitizar las entradas a sus Base de Datos. Visto en xkcd.com