miércoles, 20 de abril de 2011
System.Data.OleDb.OleDbException: Unspecified error
martes, 15 de febrero de 2011
Cómo desplegar un cubo
En primer lugar generaremos la solución (el cubo) desarrollada con BIDS (SQL Server Business Intelligence Development Studio). En la carpeta "Bin" encontraremos un archivo con extensión "asdatabase" que debemos copiar y llevar al entorno en el que queramos desplegar el cubo.
Una vez hayamos entrado en el servidor de bases de datos en el que queremos desplegar el cubo iremos al directorio C:\Program Files (x86)\Microsoft SQL Server\100\Tools\Binn\VSShell\Common7\IDE\ y abriremos el ejecutable "Microsoft.AnalysisServices.Deployment.exe".
Lo primero que pide el asistente de despliegue es el archico con extensión .asdatabase que hemos copiado antes:

En el formulario siguiente debemos introducir el nombre del servidor de bases de datos (localhost en mi caso) y el de la base de datos del cubo (BI Social Interaction 3).
En el formulario siguiente yo he seleccionado estas opciones porque son las que me interesaban pero en función del caso puede que interese seleccionar otras:
A continuación, actualizaremos la cadena de conexión y el usuario.


Como una imagen vale más que 1000 palabras, subo el resto de pantallazos hasta completar el proceso:




Como veis, desplegar un cubo es una tarea bastante sencilla y rápida.
viernes, 26 de noviembre de 2010
Error editar en hoja de datos
y el motivo del error no es ninguno de los que aparecen en la ventana anterior probad a entrar en el registro de la máquina (inicio->ejecutar->regedit) y eliminar la siguiente entrada:"HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Internet Explorer\ActiveX Compatibility\{65bcbee4-7728-41a0-97be-14e1cae36aae}"
martes, 23 de noviembre de 2010
.Net Framework 2.0 3.0 3.5 x86 y x64
Un saludo!
martes, 28 de septiembre de 2010
Cómo crear un disco duro virtual VHD
A continuación voy a contar cómo crear un disco duro virtual con Windos Server 2008 R2 y cómo mostrar la opción de arrancar el ordenador desde él por comandos (muchos de los pasos, si no todos, se pueden hacer desde ventanas del sistema pero me parece más cómodo hacerlo desde consola).
En primer lugar debemos descargar e instalar Windows AIK; se puede descargar de aquí.
Una vez descargado creamos un directorio en el disco duro en el que guardaremos el disco duro virtual (en mi caso C:\vhds) y por comodidad copiamos a este directorio el archivo intall.wim (situado en la carpeta sources del DVD de Windows 2008 Server).
A continuación, abrimos la consola de comandos y escribimos DISKPART.
Ahora vamos a crear el disco duro virtual escribiendo:
create vdisk file=c:\vhds\Windows2008R2.vhd maximum=50000 type=fixed
donde 50000 es el tamaño en MB del disco duro virtual y fixed indica que el tamaño del disco no irá creciendo conforme vayamos metiendo archivos, sino que ocupará ese espacio desde el momento en el que se cree.
Esto tardará un poco en ejecutarse pero iréis viendo el porcentaje de avance en la pantalla.
Cuando termine escribimos:
sel vdisk file=c:\vhds\Windows2008R2.vhd
attach vdisk
list disk
sel disk 1 -->en mi caso es el disco 1
create part primary
sel part 1
active
format fs=ntfs quick
assign
exit -->Salimos de DISKPART
Si vamos a Equipo (o Mi PC) veremos un nuevo disco duro (en mi caso F:\).
Ahora en la consola de comandos escribimos:
cd c:\Archivos de programa\Windows AIK\Tools\x86\
para situarnos en la carpeta en la que está el archivo imagex.exe.
Comprobamos la información del archivo install.wim que copiamos al principio y aplicamos la imagen al disco virtual (es parecido a una preintalación de Windows).
imagex /info c:\vhds\install.wim
imagex /apply c:\vhds\install.wim /check 1 F: --> Pongo F: porque es la letra que se asignó antes al disco virtual.
Cuando termine la ejecución del comando anterior volvemos a poner DISKPART y escribimos los siguientes comandos:
sel vdisk file=c:\vhds\Windows2010R2.vhd
detach vdisk --> veremos que ha desaparecido la unidad F:\
Exit
Ahora escribimos BCDEDIT
bcdedit /copy {current} /d "Windows Server 2008 R2"
Tras ejecutar este comando, nos aparecerá "La entrada se copió correctamente en {XXXXX}". Copiar ese indentificador y ejecutar los siguientes comandos:
bcdedit /set {XXXX} device vhd=[C:]\vhds\Windows2008R2.vhd
bcdedit /set {XXXX} osdevice vhd=[C:]\vhd\Windows2008R2.vhd
bcdedit /set {XXXX} detecthal on
bcdedit /set {XXXX} description "Windows Server 2008 R2"
Ahora escribimos bcdedit de nuevo para comprobar que se han realizado los cambios, cerramos la consola de comandos y reiniciamos para comprobar que tenemos una nueva opción de arranque.
martes, 7 de septiembre de 2010
The 'Microsoft.ACE.OLEDB.12.0' provider is not registered on the local machine.
Os dejo el link a la página de descarga del componente de conexión para datos de Office
http://www.microsoft.com/downloads/details.aspx?FamilyID=7554F536-8C28-4598-9B72-EF94E038C891&displaylang=en
Como dije en el párrafo anterior, una de las soluciones es recompilar en modo 32 bits, pero hay otra que me ha gustado más. El componente de conexión de datos de Office 2010 está disponible en 64 bits, por tanto, no hace falta recompilar nada y de esta forma, el desarrollo ya está preparado para leer archivos de Office 2010. Este componente se puede descargar de la página:
http://www.microsoft.com/downloads/en/details.aspx?familyid=C06B8369-60DD-4B64-A44B-84B371EDE16D&displaylang=en
Saludos
jueves, 17 de junio de 2010
Comandos STSADM
En muchos casos necesitamos ejecutar comandos STSADM y, a mí por lo menos, en más de una ocasión se me ha olvidado ir al directorio “C:\Archivos de programa\Archivos comunes\Microsoft Shared\web server extensions\12\BIN” antes de ejecutar el comando.
Para evitar esto (que a mí personalmente se me hace algo pesado) os propongo dos soluciones:
1. Crear un script
Una opción para no tener que introducir la ruta a mano es crear un ficheo de texto (.txt), introducir la siguiente línea
cd C:\Archivos de programa\Archivos comunes\Microsoft Shared\web server extensions\12\BIN
y renombrar este fichero a .bat.
Desde mi punto de vista, esto es bastante útil para introducirlo en scripts de despliegue para que los administradores de los servidores sólo tengan que hacer doble-click en un archivo.
2. Variables de entorno
La segunda opción es agregar la ruta (“C:\Archivos de programa\Archivos comunes\Microsoft Shared\web server extensions\12\BIN”) como Variable de Sistema. Esto permitirá que el comando stsadm.exe esté disponible desde cualquier ubicación.
Hacer esto es tan sencillo como:
- Pinchar con el botón derecho del ratón en Mi PC y después con el izquierdo en la opción "Propiedades".
- Seleccionar la pestaña "Opciones avanzadas" y pulsar en el botón "Variables de entorno".
- En la tabla "Variables del sistema" seleccionar la variable PATH y pulsar en el botón modificar.
- En el formulario que ha aparecido, pinchar en el segundo cuadro de texto "Valor de la variable", ir hasta el final y agregar la siguiente línea:
;C:\Archivos de programa\Archivos comunes\Microsoft Shared\web server extensions\12\BIN
Esta opción viene muy bien para las máquinas virtuales en las que desarrollamos y hacemos pruebas.
jueves, 10 de junio de 2010
Obtener valores web.config
<appSettings>
<add key="Clave" value="Valor"/>
</appSettings>
Cuando necesitemos recuperar el valor introducido para esa clave sólo tendremos que poner la siguiente línea de código:
string valor = System.Configuration.ConfigurationManager.AppSettings[“Clave”];
lunes, 25 de enero de 2010
Delay Workflow Sharepoint - Hotfix
System.Threading.Thread.Sleep(SleepTime);
Pero esto tampoco funciona. El flujo nunca sale de esa actividad, es como si muriera cuando termina el bucle... Ante esta situación me puse a buscar en Google y lo pimero que encontré fue el siguiente Hotfix:
http://support.microsoft.com/default.aspx?scid=kb;en-us;932394
Como había actualizaciones posteriores no se podía instalar pero, tras instalar el SP2 del framework 3.0 (que en teoría incluye este hotfix) siguió sin funcionar así que volví a Google pero lo que he encontrado esta vez no es muy alentador:
http://social.msdn.microsoft.com/Forums/en/sharepointworkflow/thread/2390dcee-d2f3-4a55-a024-6ad14913568e
¿Realmente Microsoft no ha sido capaz de sacar una solución para este problema en 3 años?
jueves, 19 de noviembre de 2009
Macro actualizar campos Ms Word
El otro día me comentó un cliente que estos campos no se actualizaban automáticamente y muchos usuarios guardaban el documento sin actualizar los campos, lo cual era un problema para ellos. La solución fue práctiacamente instantánea; una macro que actualice dichos campos al abrir el documento de forma automática:
Dim rango As Range
Dim campo As Field
For Each rango In ActiveDocument.StoryRanges
For Each campo In rango.Fields
campo.Update
Next campo
Next rango
Espero que os resulte útil.
Un saludo.
Subir archivos grandes a Sharepoint
Para poder subir arhivos grandes (en mi caso los más grande tiene unos 500 mb) hay que realizar otros dos cambios:
- Incrementar el tiempo de espera de la aplicación en el IIS (en la pestaña sitio web, apartado conexiones).
- Modificar en el web.config, dentro del apartado System.Web, los atributos executionTimeout y maxRequestLength de la etiqueta httpRuntime:
domingo, 25 de octubre de 2009
SPQuery no filtra, devuelve todos los elementos de la lista
Para construir las querys hay un programa muy útil de U2U llamado Caml Query Builder, pero hay que tener cuidado, ya que este programa devuelve la query incluyendo la etiqueta <query></query> y si queremos que la consulta funcione debemos quitarla, es decir, debería quedar así:
SPQuery query = new SPQuery();
query.Query = ""; Item1
SPListItemCollection collItems = list.GetItems(query);
Un saludo.
miércoles, 23 de septiembre de 2009
Cómo escribir en el event log
System.Diagnostics.EventLog.WriteEntry("Source", "Message");Si queremos usar esto para mostrar excepciones, podemos poner el siguiente código en lugar de "Message":
"Excepción: " + ex.Message
Saludos.
viernes, 3 de abril de 2009
Definir propiedades de Webparts en MOSS
Pues bien, si el objetivo es mostrar una caja de texto es tan simple como poner el siguiente código:
[WebBrowsable(true),
Personalizable(PersonalizationScope.User),
WebDescription("News number you want to show"),
WebDisplayName("News number you want to show")]
public int NewsNumber
{
get { return _newsNumber; }
set { _newsNumber = value; }
}
Esto es la definición básica de la propiedad pero hay que tener en cuenta que en función de cómo hayamos desarrollado la webpart, si estas propiedades no tienen un valor inicial comprendido en un cierto rango puede no funcionar como queremos. Para solucionar esto podemos dar a esa propiedad un valor por defecto como se muestra a continuación:
[WebBrowsable(true),
Personalizable(PersonalizationScope.User),
DefaultValue(2),
WebDescription("News number you want to show"),
WebDisplayName("News number you want to show")]
public int NewsNumber
{
get { return _newsNumber; }
set { _newsNumber = value; }
}
Al igual que esta, hay muchas otras propiedades, también muy interesantes que os invito que descubráis.
Saludos!
miércoles, 25 de marzo de 2009
Intalar Windows 7 en una máquina virtual con Virtual PC
http://msevents.microsoft.com/CUI/WebCastEventDetails.aspx?EventID=1032405053&EventCategory=5&culture=es-ES&CountryCode=ES
Espero que os resulte útil.
Saludos.
Cursos Microsoft
http://www.microsoft.com/spanish/msdn/spain/cursosonline.mspx
Un saludo!!
miércoles, 11 de febrero de 2009
Evento Windows 7 para Partners
Además de las aplicaciones que se incluirán en la versión Enterprise, de las que se habla con mucho detalle en la web del producto y de las que hablaré en otras entradas, me gustaría contar mi opinión tanto del evento como del producto.
Sobre el evento tengo que reconocer que me ha gustado bastante, sobre todo por la claridad con la que se habló.
Acerca del producto había leído muchas opiniones y en la mayoría la impresión era muy buena pero sigo pensando que ni Windows Vista es tan malo ni Windows 7 la solución a todos los males. Desde mi punto de vista, Windows 7, por mucho que haya cambiado internamente, es un Vista optimizado y mejorado, sacado al mercado en un momento en el que la mayoría de los pc's que se venden son capaces de soportarlo (cosa que no ocurrió con Vista) y con un objetivo muy claro, aumentar el rendimiento del usuario.
En el evento se dijeron dos cosas que desde mi punto de vista son fundamentales, por un lado que las aplicaciones que no funcionan en Vista tampoco lo harán en Windows 7 y que aunque todavía se desconocen los reqerimientos mínimos para este sistema operativo lo más probable es que sean los mismos que para Vista, eso sí, tres años más tarde. No obstante, me gustaría mencionar que la demo se hizo en un portatil con 1 GB de RAM, con varias aplicaciones abiertas y el S.O. no se colgaba ni daba la impresión de que fuera lento. Además es importante destacar que Windows 7 arranca muchos menos procesos y esto influye positivamente en el rendimiento.
Aunque ya tengamos una beta del producto, todavía no está fijada la fecha de lanzamiento ni el contenido exacto de cada versión, pero lo que sí parece claro es que "7" no es un "code name", sino que será el nombre comercial con el que saldrá a la venta. Esto es algo que me resultó bastante llamativo.
Bueno, no quiero aburrir a nadie, así que por hoy termino, pero publicaré más entradas sobre Windows 7 conforme lo vaya probando.
Un saludo.
lunes, 2 de febrero de 2009
Telnet en Windows Vista
Para activarlo basta con abrir el panel de control, pinchar en programas y características y, finalmente seleccionar el checkbox que hay a la izquierda de cliente Telnet y aceptar.
lunes, 26 de enero de 2009
Dar formato condicional en Excel 2007
Una vez seleccionado el tipo de indicadores, editaremos la regla de formato condicional. Para ello pincharemos en Formato condicional->Administrar reglas... y aparecerá la siguiente ventana.En este caso no tendremos que preocuparnos de qué regla vamos a editar ya que sólo hay una. La seleccionamos, pulsamos Editar regla... y aparecerá la siguiente ventana.
Como podéis ver en la imagen, yo ya he editado la regla para que haga lo que conté en la entrada anterior. Para que sea lo más genérico posible, en vez de introducir valores, he introducido celdas y, así, si hay trabajadores con jornadas distintas no tendré que preocuparme de editar la regla, bastará con cambiar el número de horas en otra tabla pequeña dentro de la misma hoja.
viernes, 23 de enero de 2009
Indicadores ( KPI s) en excel 2007
En este post me voy a centrar en Excel 2007, concretamente en los indicadores o KPI´s que se pueden insertar y que pueden convertir una tabla muy densa en una tabla grande pero que aporte información de un vistazo.
Imaginemos que queremos llevar un control de las horas que trabajamos al mes, o de las horas que trabajan nuestros empleados. En el caso de que nos interesase la segunda opción, si no tenemos muchos empleados, podríamos tener una hoja por cada empleado y otra hoja de resumen general. No obstante, en cualquier caso, la tabla resultante no es pequeña, ya que tendremos al menos 12 columnas (una por mes) y dentro de cada columna, al menos otras 3 (Hora Entrada, Hora Salida y Horas Trabajadas) y 31 filas (una por día) y además de esto, lo más probable es que tengamos otras tablas para controlar otras cosas. Ciertamente la tabla resultante es bastante grande y su información no es visible de un vistazo, pero, ¿qué pasa si usamos indicadores?. Vean la siguiente imagen.

¿Qué les parece? Debido al tamaño de la tabla, ésta no ha salido entera en la captura de pantalla (aún habiendo reducido el zoom) pero, si se fijan, los indicadores son tan llamativos que en apenas un vistazo podemos ver si se ha trabajado más o menos horas de las debidas por día (he asumido que el trabajor trabaja media jornada) y se podría hacer lo mismo para los totales.
Si se fijan en esta segunda imagen, verán que hay tres indicadores configurados de la siguiente forma:
- Si el empleado no trabaja ese día aparecerá una x roja.
- Si el empleado trabaja menos de 4 horas (media jornada) aparecerá un símbolo de exclamación amarillo.
- Si el empleado trabaja 4 horas o más aparecerá un símbolo verde.
Hacer esto es muy fácil y se tarda 5 minutos, pero en contarlo se tarda algo más, así que se lo contaré en la siguiente entrada.
Un saludo!

