viernes, 23 de octubre de 2015

Consultar si algun campo de la tabla es null - Test if any fields are null

Test if any fields are null
Tuve la necesidad de consultar si en una tabla que importe de Excel había algún valor nulo, y buscando en la web encontré el siguiente código que me ha sido muy útil:
--
--
DECLARE @tb NVARCHAR(255) = N'dbo.[planillaa]'
DECLARE @sql NVARCHAR(MAX) = N'SELECT * FROM ' + @tb + ' WHERE 1 = 0';

SELECT @sql += N' OR ' + QUOTENAME(name) + ' IS NULL'
FROM sys.columns 
WHERE [object_id] = OBJECT_ID(@tb);

EXEC sp_executesql @sql;


Como siempre digo, es bueno hacer referencias a las fuentes, en este caso la solución la obtuve de:

http://dba.stackexchange.com/questions/14864/test-if-any-fields-are-null
sql server
Posted by InfoTacticas Soluciones  |  No comments

10/23/2015 03:40:00 p. m. Share:

0 comentarios:

martes, 20 de octubre de 2015

Cómo habilitar .htaccess en WAMP Server - How to Enable .htaccess in WAMP Server.

Cómo habilitar .htaccess en WAMP Server - How to Enable .htaccess in WAMP Server.

Para habilitar .htaccess en WAMP Server, usa los siguientes pasos:

PASO 1: Click en Wamp Server y selecciona Apache > httpd.conf

PASO 2: Encontrar y reemplazar el siguiente texto:
ENCONTRAR: #LoadModule rewrite_module modules/mod_rewrite.so
REEMPLAZAR :  LoadModule rewrite_module modules/mod_rewrite.so

PASO 3: Reiniciar WAMP Server (Restart all Services)

Ahora .htaccess funcionará sin problemas.

Posted by InfoTacticas Soluciones  |  No comments

10/20/2015 08:19:00 p. m. Share:

0 comentarios:

Microsoft HTTPAPI/2.0 use Port 80 – Cannot Start WAMP Apache

Hay mucha información al respecto del porque no se puede iniciar el WAMP Apache. De mi experiencia, les digo que a mi me paso porque tenian iniciado el Servidor IIS, estaba iniciado el servicio de Reporting Service de SQL server, también por que tenía el skype con sesión abierta, todo esto figura en los diferentes blogs y paginas web que pretenden dar una solución a este problema.
Lo que ultimamente me sucedio es que también se debió al servicio:
Servicio Agente de implementación web (Web Deployment Agent Servicio).

Para más información revisen la siguiente página.

http://www.ferolen.com/blog/microsoft-httpapi2-0-use-port-80-cannot-start-wamp-apache/

Posted by InfoTacticas Soluciones  |  No comments

10/20/2015 10:44:00 a. m. Share:

0 comentarios:

jueves, 8 de octubre de 2015

Habilitar vistas en miniatura en Windows 8

Por defecto, en Windows 8 las vistas en miniatura están deshabilitadas y las imágenes se muestran con iconos de imágenes, cuando el tipo de vista es iconos. Para solucionar esto, hay que hacer un cambio en Opciones de Carpeta, para ello seguir los siguientes pasos:
1.- Abrir el explorador de capetas, en la parte superior se muestran fichas o pestañas, por defecto aparece selecciona la ficha Inicio. Debemos hacer click en la ficha Vista.

2.- En la Ficha Vista, en la parte derecha hay que hacer click en la opción: Cambiar Opciones de Carpeta y Búsqueda, y aparecerá una ventana con tres fichas. Debemos hacer click en la ficha Ver y buscar la opción: Mostrar siempre iconos, nunca vistas en miniatura, a continuación debemos quitar el check de la opción. Hacer click enel botón Acepta de la ventana.
3.- Esto es todo, ahora debemos ver las vistas en miniatura de las imágenes y fotos.

Posted by InfoTacticas Soluciones  |  No comments

10/08/2015 08:01:00 a. m. Share:

0 comentarios:

domingo, 4 de octubre de 2015

Modificar el tipo de dato y el nombre de una columna de una tabla en SQL SERVER

Propongo un ejemplo en el que tenemos una tabla Informe con la siguiente estructura
create table Informe
(
 IdInforme int identity primary key,
 Informe varchar(max), 
 Observaciones varchar(max),
 FechaRegistra datetime,
 Estado bit 
)
Necesito hacer dos cambios, primero cambiar el tipo de dato del campo Estado, de bit a int; para este caso usare la instrucción alter table Informe alter column de la siguiente manera:
alter table Informe alter column Estado int 
El segundo cambio que necesito es renombrar el campo Observaciones por el nombre Conclusion, en este caso lo mejor es hacerlo de la forma que se muestra a continuación, usando el procedimiento almacenado del sistema: sp_rename, donde el primer parámetro es el nombre de la tabla seguido de un punto y seguido del nombre del campo a renombrar, el segundo parámetro es el nuevo nombre del campo y el tercer parámetro es el valor COLUMN, que indica que el cambio afectará a un objeto del tipo Columna.
EXEC sp_rename 
    @objname = 'Informe.Observaciones', 
    @newname = 'Conclusion', 
    @objtype = 'COLUMN'
Para verificar los cambios procedemos a usar un select sobre la tabla Informe o a usar el procedimiento almacenado del sistema sp_execute 'NombreTabla' para listar la estructura de la tabla de manera detallada.
select * from Informe
sp_help 'Informe'
sql server
Posted by InfoTacticas Soluciones  |  No comments

10/04/2015 11:11:00 p. m. Share:

0 comentarios:

martes, 9 de junio de 2015

Problemas corriendo un archivo BAT que contiene ñ o caracteres especiales

Problem running BAT file with accented characters or ñ in it.
Tenía un archivo bat en el que necesitaba direccionar a una ruta que contenía un caracter especial: "ñ" y al ejecutar el bat, la ruta no era reconocida como válida.

@echo off
for /f "tokens=2 delims=:." %%x in ('chcp') do set cp=%%x
chcp 1252>nul

cd C:\Users\Dise^ñador\Desktop\Tomonorte\SBS_prueba
sbsDesktop.exe
rem pause

chcp %cp%>nul

En el bat mostrado lo que se hace es moverse a una ruta específica (que contiene eñe) y luego se espera que se ejecute una app de consola: sbsDesktop.exe.
Entonces, de manera general necesitamos definir nuestras instrucciones del bat dentro de la siguiente estructura, para no tener problemas con los caracteres especiales:

@echo off
for /f "tokens=2 delims=:." %%x in ('chcp') do set cp=%%x
chcp 1252>nul

rem "COLOCAR AQUI TUS INSTRUCCIONES"

chcp %cp%>nul

Como siempre es importante mencionar la fuente de donde uno se guía.
http://www.codedisqus.com/0zmWUWXPXP/problem-running-batcmd-file-with-accented-characters-in-it.html
bat
Posted by InfoTacticas Soluciones  |  No comments

6/09/2015 04:23:00 p. m. Share:

0 comentarios:

lunes, 18 de mayo de 2015

Problemas Sintax Highlighting para código < y > como parte del lenguaje c-sharp

Problems Sintax Highlighting with code < and > in c-sharp language for example.
Cuando se trabaja con Sintax Highlighting para un lenguaje como c-sharp, en ocasiones utilizamos código como List listado = new List(). En este caso, se mostrará Sintax Highlighting cerrará ambas etiquetas de manera automática, generándose 2 lo que no debería formar parte de nuestro código, en este caso es conveniente reemplazar: "<" y ">" con < and >
C#
Posted by InfoTacticas Soluciones  |  No comments

5/18/2015 07:56:00 a. m. Share:

0 comentarios:

Generar archivo de texto en MVC.NET para ser descargado

En un nuevo Proyecto MVC, generamos el Controlador: GenerarArchivo, cuyo método index invocará a la vista GenerarArchivo, que es una vista sencilla, y contiene un link para descargar el archivo de texto, y su contenido es mostrado a continuación:
//
//
@{
    ViewBag.Title = "GenerarArchivo";
}

Generación de Archivos

Descargar Archivo de Texto
El link lnkDescargarArchivoTexto, está referenciando a la acción DescargarExportableTXT del controller: GenerarArchivo. Está acción o método debe devolver un FileContentResult que creamos en memoria en dicho método. El contenido del controller GenerarArchivo es mostrado a continuación:
//
//
public class GenerarArchivoController : Controller
    {
        //
        // GET: /GenerarArchivo/

        public ActionResult Index()
        {
            return View("GenerarArchivo");
        }

        public FileContentResult DescargarExportableTXT()
        {
            List<string> listado = new List<string>();
            listado.Add(new String[]{"Carlos Alvarado Ferreiros", "52632030", "27/10/1990"});
            listado.Add(new String[]{"Franciso Larios Loaiza", "20205263", "15/02/1982"});
            listado.Add(new String[]{"Deysi Zárate Ríos", "42635120", "10/01/1975"});
            listado.Add(new String[]{"Marcela Morán Flores", "20435230", "26/05/1985"});

            Int32 numeroItems = listado.Count();
            StringWriter sw = new StringWriter();
            using (sw)
            {
                for (Int32 i = 0; i < numeroItems; i++)
                {
                    sw.WriteLine(listado[i][0] + "|" + listado[i][1] + "|" + listado[i][2]);                   
                }

            }
                        
            String contenido = sw.ToString();
            String NombreArchivo = "ListadoClientes_" + DateTime.Now.Date;
            String ExtensionArchivo = "txt";
            return File(new System.Text.UTF8Encoding().GetBytes(contenido), "text/" + ExtensionArchivo, NombreArchivo + "." + ExtensionArchivo);
        }
    }

Puede descargar el proyecto desde: https://www.dropbox.com/s/gnm4sooawcejfut/ProyectoGenerarArchivoTexto.rar?dl=0
C#
Posted by InfoTacticas Soluciones  |  1 comment

5/18/2015 07:14:00 a. m. Share:

1 comentarios:

miércoles, 13 de mayo de 2015

Pasar Datos de Prodecimiento Almacenado a una Tabla Temporal o Variable Tabla

Si un Procedimiento Almacenado devuelve como resultado un conjunto de registros obtenidos con SELECT, este resultado puede ser obtenido y utilizado dentro de otro procedimiento almacendado, para ello este resultado debe ser almacenado en una tabla temporal o una variable tabla que tenga la misma estructura de campos que el procedimiento almacenado a ejecutar devuelve.
A continuación se muestra un ejemplo de su uso. Espero les sirva.
--
--
---exec spr_ObtenerAgendaPorTipoContacto 2
-- Crear el Procedimiento almacenado
create procedure spr_ObtenerAgendaPorTipoContacto  
@Tipo varchar(2) 
as

 SELECT 1, 'VARGAS', 'DAVILA', 'CARLOS', '949685100', 'CE' -- Compañero Estudios
 UNION 
 SELECT 2, 'DURAND', 'ALVA', 'LUCIA', '949685002', 'CT' -- Compañero Trabajo
 UNION 
 SELECT 3, 'FLORES', 'CASTRO', 'CESAR', '949452200', 'CT' -- Compañero Trabajo
GO

-- CON TABLA TEMPORAL
CREATE TABLE #AgendaTemporal (
 Id INT, 
 ApePaterno VARCHAR(20), 
 ApeMaterno VARCHAR(20), 
 Nombres VARCHAR(30), 
 Telefono varchar(20),
 TipoContacto varchar(2)  
) -- crear tabla temporal

INSERT #AgendaTemporal (Id, ApePaterno, ApeMaterno, Nombres, Telefono, TipoContacto)
EXEC spr_ObtenerAgendaPorTipoContacto 'CT'

select Id, ApePaterno, ApeMaterno, Nombres, Telefono, TipoContacto 
from #AgendaTemporal

drop table #AgendaTemporal -- Eliminar la tabla temporal

-- CON VARIABLE TABLA
DECLARE @AgendaTemporal2 TABLE (Id INT, ApePaterno VARCHAR(20), 
 ApeMaterno VARCHAR(20), 
 Nombres VARCHAR(30), 
 Telefono varchar(20),
 TipoContacto varchar(2) 
) -- crear variable tabla

INSERT @AgendaTemporal2 (Id, ApePaterno, ApeMaterno, Nombres, Telefono, TipoContacto)
EXEC spr_ObtenerAgendaPorTipoContacto 'CE'

select Id, ApePaterno, ApeMaterno, Nombres, Telefono, TipoContacto 
from @AgendaTemporal2
--------------------------------
-------------------------------- 

Siempre es bueno mencionar las referencias de donde uno se guía para aprender, en este caso: https://fuentedeconocimientos.wordpress.com/2013/02/09/pasar-datos-de-procedimiento-almacenado-a-tabla-temporal/comment-page-1/
sql server
Posted by InfoTacticas Soluciones  |  No comments

5/13/2015 03:15:00 p. m. Share:

0 comentarios:

martes, 12 de mayo de 2015

En base a una fecha de un mes dado, obtener la fecha del ultimo día de ese mes - SQL Server

En base a una fecha de un mes dado, como por ejemplo el 11 de enero del 2015, deseamos obtener la fecha del último día de ese mes: 31/01/2015, para eso emplearemos el código SQL que se muestra a continuación
--
--
DECLARE @FechaInicioPeriodo datetime = convert(datetime, '11/01/2015', 103) 
(select dateadd(day,-1,left(convert(varchar(8),dateadd(month,1,@FechaInicioPeriodo),112),6)+'01'))
 

La fecha 11/01/2015 es convertida a datetime, con la estructura 103, a fin de que sea reconocida como una fecha en formato dd/mm/yyyy, tal como lo estamos ingresando, porque de otra manera seria tomada como el 01/11/2015 y nos devolvería como resultado el 30/11/2015, y no es el resultado que esperamos.
sql server
Posted by InfoTacticas Soluciones  |  No comments

5/12/2015 04:30:00 a. m. Share:

0 comentarios:

jueves, 7 de mayo de 2015

Tiempo Transcurrido entre FechaInicio y FechaFin en Años, Meses, Días y horas, minutos, segundos

En esta oportunidad les dejo el código en T-SQL para obtener el tiempo Transcurrido entre 2 fechas. Esta solución la copie del siguiente enlace y me sirvió mucho, fue la mas simple que encontré. https://social.msdn.microsoft.com/Forums/es-ES/c3830d57-7943-4172-816d-2852dc48a22b/como-obtener-el-tiempo-transcurrido-de-varias-fechas-horas-de-inicio-y-fechas-horas-fin-y-sumar-los?forum=sqlserveres
--
--
set dateformat dmy

declare @fechaInicio as datetime = '01/01/2014 02:00'
declare @fechaFin as datetime = '30/03/2015 08:00'
declare @fechaDiferencia as datetime = @fechaFin - @fechaInicio 
declare @difSegundos as bigint = DATEDIFF( SECOND, @fechaInicio, @fechaFin )

select @fechaInicio as fechaInicio, @fechaFin as fechaFin
, @fechaDiferencia as fechaResultado
--tiempo transcurrido en años, meses, días y en horas:minutos:segundos
, DATEDIFF( YEAR, '19000101', @fechaDiferencia ) as anios
, MONTH( @fechaDiferencia ) -1 as meses
, DAY( @fechaDiferencia ) -1 as dias
, CAST( @fechaDiferencia AS TIME ) as tiempo

El resultado de la consulta lo muestro en la siguiente imagem:

sql server
Posted by InfoTacticas Soluciones  |  No comments

5/07/2015 07:28:00 a. m. Share:

0 comentarios:

miércoles, 6 de mayo de 2015

Obtener el número de días de un mes dado en SQL Server

Para obtener el número de días del mes de una fecha determinada, una opción es:
  • De una fecha determinada, obtener el primer día de ese mes y con esa fecha se va a trabajar. Sumarle un mes a dicha fecha.
  • Encontrar la diferencia en días entre la fecha aumentada un mes y la fecha inicial.
  • El resultado es el número de días del mes de la fecha especificada.
set dateformat dmy -- para usar la fecha en formato dd/mm/yyyy

declare @fecha datetime
set @fecha = '31/03/2016'
-- Obtenemos el primer dia del mes de interés
declare @fecha_dia_uno date = DATEADD(day, -datepart(day, @fecha) +1, @fecha)

-- A la fecha del primero del mes le sumamos un mes
-- y luego especificamos la diferencia en días entre la fecha del primer dia aumentada un mes y la fecha del primer dia
-- el resultado es el número de dias del mes de la fecha inicial
select DATEDIFF(dd, @fecha_dia_uno, DATEADD(mm, 1, @fecha_dia_uno))

sql server
Posted by InfoTacticas Soluciones  |  No comments

5/06/2015 02:23:00 a. m. Share:

0 comentarios:

domingo, 5 de abril de 2015

Cómo insertar un salto de línea en Blogger (para plantillas que no permiten ver el vínculo a la entrada completa)

How to insert a jump break on Blogger, in templates ?

Accedemos al editor de entradas, escribimos nuestra entrada completa y marcamos la "zona de corte" con el icono "Salto de línea" donde queramos que finalice el resumen y después se muestre el vínculo de Más información o Leer Más o Leer post completo (u otro texto personalizado) que permita mostrar el contenido completo de nuestro post.
Cuando pulsamos en el icono salto de línea (marcado en la imagen anterior con el icono con una "hoja cortada en dos partes"), nos aparece la barra horizontal en la "zona de corte" donde deseamos crear el salto de línea.
Cuando publiquéis el post, se verá en la página principal lo que está escrito hasta la línea o salto, y justo donde está la línea aparecerá el texto Más información o Leer más. Sin embargo en ocasiones la entrada se muestra recortada pero no aparece el texto de Más información, en ese caso hay que acceder a la opción: Plantilla --> Editar HTML, tal como se ve en la siguiente imagen.
En el código que se muestra, debe estar presente el siguiente bloque de código:

  

Se trata de un etiqueta condicional que indica a Blogger "Si en el post de entrada hay un "hasJumpLink" o salto de línea. Para encontrarlo, usar  CTRL + F  para buscar el texto: hasJumpLink, Si este no se encuentra esa puede ser la razón por la que no nos aparece el texto de Más información en el post. En este caso algunas recomendaciones indican que se debe colocar el código de arriba antes de

blogger
Posted by InfoTacticas Soluciones  |  4 comments

4/05/2015 05:30:00 p. m. Share:

4 comentarios:

martes, 24 de marzo de 2015

Funciones en SQL para obtener la posicion, ocurrencias de una subcadena dentro de una cadena

A continuación les comparto algunas funciones últiles en SQL Server 2008 / 2008R2 para manipular cadena de caracteres. Espero les sirva.

Obtener la última posición de una subcadena
--
--
create function fnr_ireObtenerUltimaPosicionSubCadena(@cadenaBuscar varChar(max),@caracter varchar(1))
returns int
as
begin
        return len(@cadenaBuscar) - charindex(@caracter, reverse(@cadenaBuscar)) +1
end
El resultado de la siguiente prueba es que la subcadena 'NA' está presente por última vez en la posición 28 de la cadena.
--
--
select dbo.fnr_ireObtenerUltimaPosicionSubCadena('TRUJILLO CAPITAL INTERNACIONAL DE LA PRIMAVERA', 'NA')
Obtener el número de ocurrencias de una subcadena
sql server
Posted by InfoTacticas Soluciones  |  No comments

3/24/2015 08:20:00 a. m. Share:

0 comentarios:

sábado, 7 de marzo de 2015

Error "Failed to load Msxmlsql.dll" en SQL2008R2 Developer

Después de instalar el SQL SERVER 2008R2 64 bits en mi sistema operativo Windows 7 Professional 64 bits, tuve problemas para ejecutar el procedimiento almacenado "sp_xml_preparedocument" que permite analizar documentos XML. Intente las soluciones que aparecen en este post:
https://social.msdn.microsoft.com/Forums/sqlserver/en-US/28f42f15-8ae3-4734-8694-7908fa331a3b/error-failed-to-load-msxmlsqldll-on-sql2008express-and-sql2008r2-developer?forum=sqlxml
pero solo las dos ultimas me sirvieron de referencia para la solución que finalmente me funcionó.
La solución fue copiar los archivos msxmlsql.dll y msxmlsql.rll desde mis archivos de instalación hacia el directorio:
C:\Program Files\Microsoft SQL Server\MSSQL10_50.SQLSERVER2008R2\MSSQL\Binn
Y con eso ya puedo procesar el contenido de archivos xml.
sql server
Posted by InfoTacticas Soluciones  |  1 comment

3/07/2015 09:59:00 p. m. Share:

1 comentarios:

viernes, 6 de marzo de 2015

Hacer que los reportes RDLC (Reportes para Report Viewer c#) se incrusten con la aplicación a la hora de publicar

Por mucho tiempo trabajé con los reportes de Reportviewer, indicando simplemente su ruta en el sistema de archivos, de modo que cuando tenia que publicar, copiaba yo misma todos los reportes en sus carpetas respectivas, porque estos no se incrustaban en la aplicación a la hora de publicar. La instrucción en código que usaba era la siguiente:
rvInformes.LocalReport.ReportPath = "Reportes/Informes/rptInformes_PagoMedicos.rdlc";
Hasta que buscando un poco más de información encontré el modo de hacer que dichos reportes sean embebidos como recursos de la aplicación, a continuación les muestro el modo en que lo trabajo.
    ReportParameter[] repParamHeader = new ReportParameter[1];                    
    repParamHeader[0] = new ReportParameter("RP_UsuarioLogueado", UsuarioLogeado.nombre, false);

    // LAS TRES LINEAS SIGUIENTES SON OBLIGATORIAS PARA QUE SE RECONOZCA COMO RECURSO EMBEBIDO
    rvInformes.ProcessingMode = ProcessingMode.Local;                    
    rvInformes.Reset();  
    rvInformes.LocalReport.ReportEmbeddedResource = "miempresa.aplicacion.Reportes.Informes.rptInformes_PagoMedicos.rdlc";
                                        
    rvInformes.LocalReport.DataSources.Clear();
    rvInformes.LocalReport.DataSources.Add(new ReportDataSource("dsInformes", miDataTablePagos));
    rvInformes.LocalReport.SetParameters(repParamHeader);
    rvInformes.LocalReport.Refresh();

miempresa.aplicacion.Reportes.Informes es el namespace en mi proyecto ASP.NET MVC. Es necesario que cada reporte RDLC esté configurado de la siguiente manera, tal como se ve en la siguiente imagen
En Acción de Compilación debe especificarse: Recurso incrustado
En Copiar en el directorio de resultados debe especificarse: Copiar siempre
visual studio
Posted by InfoTacticas Soluciones  |  No comments

3/06/2015 04:00:00 p. m. Share:

0 comentarios:

Get updates in your email box
Complete the form below, and we'll send you the best coupons.

Deliver via FeedBurner
back to top