miércoles, 28 de diciembre de 2016

ASP.NET: app.config

Agregar esto en el web.config cuando vamos a publicar en definitivo un sitio web:

    <serviceHostingEnvironment>
      <baseAddressPrefixFilters>
        <add prefix="http://leonartapps.com"/>
      </baseAddressPrefixFilters>
    </serviceHostingEnvironment>

viernes, 29 de julio de 2016

Orden de ejecución de instrucciones SQL:

1. FROM
2. ON
3. JOIN
4. WHERE
5. GROUP BY
6. WITH CUBE OR WITH ROLLUP
7. HAVING 
8. SELECT 
9. DISTINCT
10. ORDER BY 
11. TOP

lunes, 18 de mayo de 2015

SQL SERVER: Validar si existe columna en una tabla

if NOT exists(select * from sys.columns
            where Name = N'ColumnaA' and Object_ID = Object_ID(N'Tabla'))
begin
 ALTER TABLE [dbo].[Tabla] ADD [ColumnaA] int NULL;
end
else
begin
    Print 'La columna ColumnaA ya existe en la tabla Tabla.'
end

SQL SERVER: Borrar procedimiento almacenado de forma segura

IF EXISTS (SELECT * FROM sys.objects WHERE   object_id = OBJECT_ID(N'NOMBRE_PROC') AND type IN ( N'P', N'PC' ))
begin
drop PROCEDURE [dbo].[NOMBRE_PROC]
end
GO
CREATE dbo.NOMBRE_PROC
(...).....

domingo, 3 de mayo de 2015

MSDTC y .Net: MSDTC no está disponible en el servidor 'X'.

El error que indica que el Microsoft Distributed Transaction Coordinator no está disponible puede significar a que debemos configurarlo, de esta manera ya no recibimos el mensaje de error en .Net cuando utilizamos TransactionScope.

1º En ventana de ejecución poner: comexp.msc

2º Expanda Servicios de componentes, equipos, Mi PC, Administrador de transacciones distribuidas, haga DTC Localy, a continuación, haga clic en Propiedades.

3º En el tab Segumiento puede activar "Seguimiento de todas las trasacciones".

sábado, 2 de mayo de 2015

Sql Server: Eliminar usuario de base de datos.

Para realizar esta tarea lo mejor es estar logueado con otro usuario con privilegios y talvez pueda ser necesario reiniciar el servicio de SQL Server para cancelar todas las posibles conexiones a la bases de datos asociadas al usuario que queremos eliminar. Comandos SQL para eliminar usuario de una base de datos:

Averiguar a cuáles esquemas pertenece el usuario:

SELECT name FROM  sys.schemas WHERE principal_id = USER_ID('usuarioPruebas')

Con la lista anterior, se reemplaza en esta siguiente consulta la palabra SchemaName, por el verdadero nombre del esquema para eliminar al usuario totalmente:

ALTER AUTHORIZATION ON SCHEMA::SchemaName  TO dbo 
GO
DROP USER usuarioPruebas

martes, 30 de diciembre de 2014

SQL SERVER: Consultas recursivas

Esta técnica sirve para conocer los registros hijos en forma recursiva. También puede funcionar en tablas que se referencian a si mismas siempre y cuando se apliquen los ajustes en las consultas.

Case 1


Employee IDNameSupervisor ID
001Paroar HabibNull
002Sumon Mazumder001
003Kalim Uddin001
004Jewel Ahmed002

Case 2


vmenuidvmenunamevparent
M001HR SystemNull
M002PayrollM001
M003Salary BenefitsM002
M004RecruitmentM001

Aplicando la consulta:
WITH security_menu_Recursive(Parent,MenuId,MenuName,LEVEL)
AS
(
    SELECT vparent,vmenuid,vmenuname,0 AS LEVEL FROM dbo.SecurityMenu WHERE vParent = null
    UNION ALL
    SELECT vparent,vmenuid,vmenuname,Level + 1 AS LEVEL FROM dbo.SecurityMenu
    INNER JOIN security_menu_Recursive AS smr ON smr.menuid = dbo.SecurityMenu.vParent
)
SELECT parent,menuid,menuname,LEVEL FROM security_menu_Recursive

Resultado:

ParentMenuIDMenuNameLevel
NullM001HR System0
M001M002Payroll1
M001M004Recruitment1
M002M003Salary Benefits2


Ejemplo completo en codeproject.com


sábado, 20 de septiembre de 2014

VS2012: Microsoft SQL Server Data Tools - Business Intelligence for Visual Studio 2012

Sitio para descargar Microsoft SQL Server Data Tools - Business Intelligence for Visual Studio 2012

Con esta herramienta se pueden ver los reportes de Reporting Services en la versión de Visual Studio 2012. Solo basta con abrir una ventana individual de proyecto de reportes y listo, haga doble clic al reporte para verlo en modo diseño.

sábado, 25 de enero de 2014

jQuery: método val() vs text()

En ocasiones uno quiere establecer un texto a un span utilizando jQuery, pero por aguna razón no funciona, veamos un ejemplo:

Código HTML:

<span>Hola Mundo!!!</span>

<script>
          $('span').val('Hola Mundo!!!');
</script>

Y uno se queda pensando, por qué rayos no aparece el texto en el span?, y esa pregunta se la repite uno un buen rato!

La respuesta del por qué no aparece el texto en el span es porque el span no tiene el atributo value. Hay que recordar una cosa y es que todos los elementos HTML si tienen los mismos atributos pero es solo un conjunto de atributos, muy conocidos por cierto!. Se les conoce como "Global Attributes". Ejemplo de atributos globales pueden ser: id, style, class, lang, title, etc. Sin embargo existen otros tipos de atributos únicos para algunos elementos.

En HTML existe el concepto de "Content Model", se refiere al contenido que pueden tener los elementos de HTML. El contenido de un elemento puede ser:
  • caracteres de datos.
  • comentarios.
  • otros elementos html.

En HTML también existen dos tipos de elementos según el modelo de contenido que pueden manejar:
  • elementos con etiquetas de inicio y final. Como por ejemplo: p, div, b, table, span, etc.
  • elementos únicos, son elementos que no tienen un elemento de cierre: input, link, meta, img.

El elemento span del ejemplo inicial, es un elemento normal con etiqueta de inicio y final y el contenido que puede manejar un span va entre ambas etiquetas. En cambio un elemento input es un elemento que no puede contener datos y eso se debe a que el elemento input es un elemento único o singular, no está hecho para encerrar texto u otros elementos.

Un elemento <input> está hecho para formularios, y tiene varias formas de presentación como por ejemplo una casilla de verificación, un botón de radio, un control escondido (hidden), un cuadro de texto, password, file, un botón, etc.

Un span no tiene el atributo "value" en cambio un input si lo tiene. He ahí la diferencia del por qué con la propiedad val() de jQuery no se puede establecer un texto para el elemento span.

En jQuery existen formas para asignar texto a un elemento y una de ellas es utilizando el método val(), text() o html(). Lo que caracteriza a cada uno de esos métodos es lo siguiente:

val() ==> Modifica el valor del atributo "value" de todos los elementos que tengan el atributo "value". Los elementos que tienen el atributo value son: input, option, param, button, li.

          Código:
          <input id="inputEjemplo" type="text" value="" />
          $("#inputEjemplo").val("Hola mundo!!!")

          Resultado:
          <input id="inputEjemplo" type="text" value="" />


text() ==> Modifica el valor de contenido que pueden encerrar todos los elementos que poseen etiqueta de cierre. El texto que se asigna es texto plano (text plain) por lo que si esperamos poner texto formateado con color, tamaño, etc, no es posible.

         Código:
         <span id="ejemplo"></span>
         $("#ejemplo").text("<b>Hola mundo!!!</b>")

          Resultado:
          Hola mundo!!!

html() ==> Modifica el valor de contenido que pueden encerrar todos los elementos que poseen etiqueta de cierre. El texto que se asigna puede ser texto plano o texto en formato html.

          Código:
          <span id="ejemplo"></span>
          $("#ejemplo").html("<b>Hola mundo!!!</b>")

          Resultado:
          Hola mundo!!!

viernes, 3 de enero de 2014

JQuery: Tomar fecha de un control Datepicker y devolverla en otro formato!



Tomar la fecha del control datepicker y posteriormente presentarla en pantalla en el formato deseado. Se usa el método $.datepicker.formatDate para convertir la fecha en otro formato.


Ejemplo:



//Obtener la fecha del control datepicker.
var fecha = $('#txtFechaNacimiento').datepicker('getDate');


//Mostrar la fecha en un formato deseado, en este caso queremos año-mes-día.
alert($.datepicker.formatDate('yy-mm-dd', fecha))



Se pueden crear muchos formatos combinando diferentes literales. En la página oficial del control Datepicker se explica mejor los tipos de formatos. La lista de literales que se pueden usar son:

  • d - day of month (no leading zero)
  • dd - day of month (two digit)
  • o - day of year (no leading zeros)
  • oo - day of year (three digit)
  • D - day name short
  • DD - day name long
  • m - month of year (no leading zero)
  • mm - month of year (two digit)
  • M - month name short
  • MM - month name long
  • y - year (two digit)
  • yy - year (four digit)
  • @ - Unix timestamp (ms since 01/01/1970)
  • ! - Windows ticks (100ns since 01/01/0001)
  • '...' - literal text
  • '' - single quote
  • anything else - literal text

domingo, 15 de diciembre de 2013

WCF: Bad request? - Dos razones por las cuales ocurre.

Una razón por la cual un servicio responde con la famosa respuesta "Bad Request" es porque un nombre de parámetro en el lado del cliente no tiene el mismo nombre que el nombre del parámetro en la definición del contrato.

Otra razón es el valor de los parámetros que se están pasando al servicio. Si en el lado del cliente el parámetro Edad se pasa con valor -1 pero en el lado del servidor ese parámetro es de tipo Byte, se produce el error y con buena razón. Entonces a revisar también los valores que se pasan por parámetro!