jueves, 28 de octubre de 2010

Saber el ID del ultimo registro agregado

Hay veces que necesitamos saber el Id del último registro agregado a una tabla, por diversas razones, validación, para correr un proceso, etc.
Si es una tabla sin un campo identity, podemos utilizar la siguiente técnica

SELECT TOP 1 [ArticuloID]
FROM Articulos
order by articuloid desc

Si tiene un campo identity podemos hacerlo de la siguiente manera

-- Buscar el valor de la semilla
SELECT IDENT_CURRENT ('pubarticulos') AS LastId;

Ojo.. si es un campo autoincremental y hemos borrado registros, la ultima función me regresa el valor en el que va la semilla.. no el del ultimo registro activo.

También despues de ejecutar un INSERT podemos obtener el último ID con la variable
@@IDENTITY, por lo que podemos utilizar las siguientes instrucciones de ejemplo

SELECT @@IDENTITY AS 'Identity';

o para regresarlo en un procedimiento

Return @@IDENTITY

martes, 1 de junio de 2010

Consumir un Web Service y manipular el resultado XML

 

Este ejemplo servirá para ver dos cosas, como  usar un Web Service y como manipular un documento XML. El Web Service que vamos a ver de ejemplo, me regresa los datos sobre el clima de una ciudad. De parámetros de entrada requiere el nombre de la ciudad y el país.

Les debo el paso a paso… pero aquí esta lo más importante…

url

http://www.webservicex.net/globalweather.asmx

using

image

Código

image

domingo, 30 de mayo de 2010

No funciona mi master page copiado de un web app a un nuevo website

 

Seguimos encontrando diferencias entre un website y un web app. Pues resulta que al copiar un master page que ya funcionaba en un web app no funciona en un master page.

Ahí va brevemente lo que hice para resolverlo:

1.- Copiamos el MasterPage al nuevo web site mediante Add existing item. Nos aseguramos de copiar los tres archivos el .master, el .master.cs y el .master.designer

3.- Abrimos el master.master.cs y el master.master.designer. En los dos archivos hay que quitar las líneas del namespace

image

4.- En el .master en vista de código, modificamos la etiqueta master que dice algo así:

image

y cambiamos las etiquetas CodeBehind e Inherits para que quede algo asi:

image

en lugar de CodeBehind deje codefile y en Inhehits le quite el namespace dejando solo el nombre del master page.

Si quedo??

viernes, 28 de mayo de 2010

Expresiones Regulares

 

.Net tiene un gran soporte para las expresiones regulares. Pero para empezar, que son las expresiones regulares?. Pues las expresiones regulares son unos cadenas especiales para describir patrones. Por ahí leí que son como los viejos "Wildcards" o comodines, pero con esteroides.

Te acuerdas del comando Dir con:
Dir *.txt
pues con expresiones regulares seria:
.*\.txt$.

Por ejemplo, para buscar un correo...cualquier correo, esta sería la expresión, que la saque del regularExpression validator

\w+([-+.']\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*

Las clases regex pertenecen al namespace System.Text.RegularExpressions,por lo para utilizarlas, debemos agregar el siguiente using a nuestros programas en C#:
Using System.Text.RegularExpressions;

Y para ver si nuestras expresiones regulares son correctas, ahí les dejo esta liga..

http://derekslager.com/blog/posts/2007/09/a-better-dotnet-regular-expression-tester.ashx

Salu2 y byte

jueves, 27 de mayo de 2010

Diferencia entre un website y un web application

 

Son parecidos, pero diferentes….

miércoles, 26 de mayo de 2010

Web service

 

http://www.webservicex.net/currencyconvertor.asmx

 

using

using net.webservicex.www;

protected void cmdConvertir_Click(object sender, EventArgs e)
{
    // Tomamos los valores de las monedas de los dos textboxes...
    // Como los tipos de moneda son un enumerativo (Currency)... tenemos que convertir
    // del string que tomamos del textbox a un enumerativo Currency que sera donde lo asignamos
    // esto lo logramos con Enum.Parse(typeof(Currency), variableString)
    Currency moneda1 = (Currency) Enum.Parse(typeof(Currency),txtMoneda1.Text);
    Currency moneda2 = (Currency) Enum.Parse(typeof(Currency),txtMoneda2.Text);
    // string donde guardaremos el resultado
    string xmlResultado;
    // Ahora si creamos una instancia local de nuestro web service y lo nombramos convertor
    CurrencyConvertor convertor = new CurrencyConvertor();
    // invocamos al metodo ConversionRate del webservice y le mandamos los dos parametros tipo Currency
    // como el resultado que me devuelve es un double, lo paso a string para poderlo poner en el textbox
    xmlResultado = convertor.ConversionRate(moneda1, moneda2).ToString();
    txtResultado.Text = xmlResultado;
}

martes, 25 de mayo de 2010

Slideshow Ajax Control Toolkit

 

Hoy vamos a ver como aplicar el SlideShow a un control Image para poder mostrar una galería fotográfica. El control nos permitirá pasar de una foto a otra en un sólo control de imagen por medio de los botones anterior y siguiente, además, de permitir la ejecución automática mediante el botón Ejecutar. 

1.- Primero agregamos a una página el ToolkitScriptManager arrastrándolo desde la barra de controles del Ajax Control Toolkit. Éste será el encargado de coordinar las llamadas asíncronas de Ajax

image[6]

2. Agregamos los siguientes controles de la barra de controles estándar y les configuramos las propiedades ID y Text como se indica. La página debe ir quedando como se muestra en la imagen.

  Id Text
Label lblTitulo Título
Imagen imgFoto  
Label lblDescripcion Descripción
Button cmdPrev <<
Button cmdPlay Ejecutar
Button cmdNext >>

image

3. Ahora que ya tenemos la página, empezamos con Ajax. De la barra de controles del Ajax Control Toolkit, arrastramos un control SlideShowExtender directamente a la imagen.

4. Seleccionamos el SlideShow Extender (yo lo hago en el tab de source más fácil) y en la ventana de propiedades le configuramos las siguientes propiedades.

Propiedad Valor
AutoPlay true
ImageDescriptionLabelID lblDescripcion
ImageTitleLabelID lblTitulo
Loop True
NextButtonID cmdNext
PlayButtonID cmdPlay
PreviousButtonID cmdPrev
PlayButtonText Play o Ejecutar ;)
StopButtonText Stop o Detener :D
   

5. Ahora, para agregarle el comportamiento e indicarle de donde tomar las fotos y las descripciones, tenemos que hacerlo por código mediante un método de un Web Service. Tenemos dos formas de hacerlo fácil:

  • Si seguimos en la ventana de propiedes del SlideShow extender, nos fijamos que abajo de las propiedades hay una liga que dice Add SlideShow method. Le damos click y nos agrega un método Web en nuestro page behind.

image

  • Si estamos en la vista de diseño, seleccionamos la imagen, y le damos click en el Smart Tag (la flechita) y le damos Add SlideShow method.

6.- En el code behind, nos creo un método Web GetSlides(), quitamos el código que nos puso por defualt y le ponemos el código para que quede como en el ejemplo.

[System.Web.Services.WebMethodAttribute(), System.Web.Script.Services.ScriptMethodAttribute()]
public static AjaxControlToolkit.Slide[] GetSlides(string contextKey)
{
    return new AjaxControlToolkit.Slide[] {
        new AjaxControlToolkit.Slide("graficos/00001.jpg", "Blue Hills", "Go Blue"),
        new AjaxControlToolkit.Slide("graficos/00002.jpg", "Sunset", "Setting sun"),
        new AjaxControlToolkit.Slide("graficos/00003.jpg", "Winter", "Wintery..."),
        new AjaxControlToolkit.Slide("graficos/00004.jpg", "Sedona", "Portrait style picture")};
}

Listo, ahora solo queda grabar y probar. Cualquier duda… ahí me avisan…

Salu2 y Byte…

Teclas rápidas para Virtual PC

 

Pantalla completa/Ventana Right Alt + Enter
Ctrl-Alt-Del Right Alt + Del
Liberar mouse a máquina real Right Alt
Capturar mouse en virtual machine Click dentro de la ventana

Virtual Machine Additions

 

Virtual machine additions proveen mejoras de desempeño y características de integración en los sistemas operativos huéspedes. Estas características incluyen integración de apuntadores, compartición de carpetas y sincronizaciones.

Para instalar Virtual Machine additions hay que realizar lo siguiente:

1.- Dentro de nuestra máquina virtual corriendo, seleccionamos la opción dentro Install or Update Virtual Machine Additions dentro del menú Action.

lunes, 24 de mayo de 2010

Utilizar el TextBox autocomplete del Ajax Control ToolKit

 

Utilizar el TextBox autocomplete de ACTK

En esta entrada vamos a ver como aplicar el Autocomplete Extender a un textbox para darle el comportamiento de "adivino" a nuestro control, mientras vamos escribiendo, nos irá sugeriendo la respuesta.

1.- Primero agregamos a una página el ToolkitScriptManager arrastrándolo desde la barra de controles del Ajax Control Toolkit. Éste será el encargado de coordinar las llamadas asincronas de Ajax.

image

2. Agregamos un textbox y un botón de las herramientas estándar a la página y los nombramos txtBuscar y cmdBuscar respectivamente cambiando su propiedad ID en la ventana de propiedades.

3.- Ahora, de la barra de controles del Ajax Control Toolkit, arrastramos un Autocomplete extender y lo arrastramos al control textbox. El código debe ir quedando así.

image

4.- Ahora en vista de diseño, le damos click a la fechita del smart tag y seleccionamos la opción de Add AutoComplete page method.

image

5.- En el método creado, escribimos el siguiente código y lo probamos

// Create array of movies

string[] movies = {"Star Wars", "Star Trek", "Superman", "Memento", "Shrek", "Shrek II"}; 

// Return matching movies

return (from m in movies where m.StartsWith(prefixText,StringComparison.CurrentCultureIgnoreCase) select m).Take(count).ToArray();  

Configurar un nuevo sitio en IIS

 

Ya una vez que tenemos instalado nuestro servidor Web IIS, ahora vamos a crear un nuevo sitio Web en un servidor IIS en Windows Vista. Para crearlo, hacemos lo siguiente:

1. Boton de Inicio-> Computer y le damos click derecho

image
2. Seleccionamos la opción Manage
3. Aceptar en la ventana de autorización para que se ejecute como Administrador
4. Del panel izquierdo seleccionamos y abrimos Services and Applications

5. Ahora seleccionamos Internet Information Services (IIS) Manager

image

6. En el panel del medio nos aparece el nombre de nuestra computadora, lo expandemos  y a manera de árbol aparece la carpeta Web Sites con los sitios que tenemos, así como se muestra en la imagen.

image
7. Le damos click derecho sobre la Default Web Site y seleccionamos la opción Add application
8. En la ventana que se abre, escribimos el nombre de la aplicación y el directorio físico donde se encuentra, yo lo puse dentro de inetpub que es donde se graban por default los sitios Web en IIS. Nos aseguramos que el directorio exista para que nos permita continuar.

image
9. Le damos Ok y el nuevo sitio aparece ahora en la lista de Aplicaciones Web.

image

Ya nuestro sitio se encuentra creado, pero sin contenido, luego en otra entrega le agregaremos contenido. Ahora para probarlo solo nos queda entrar al sitio directamente en el navegador con la direccion: localhost/nombreSitio o en el panel de Actions, ir a la opción de Browse

En la siguiente entrada veremos como publicar una aplicacion Asp.Net

Salu2 y Byte

Instalar IIS en Windows Vista/XP

 

IIS (Internet Information Services) es el servidor Web de Microsoft para su plataforma Windows. Si queremos publicar nuestros sitios desarrollados en ASP.Net necesitamos subirlos a un servidor Web IIS. A continuación describo brevemente como instalar IIS en Windows Vista ya que el proceso es ligeramente diferente en un Windows Server.

Para empezar IIS se encuentra en el Disco de Instalación de Windows, pero no viene como una característica por defaul.

1. Entramos al panel de control -> Programs -> Turn Windows features On or Off

2. Le damos continuar a la alerta de seguridad de windows

3. En la lista de las características de Windows, seleccionamos Internet Information Services, abrimos la opción y podemos seleccionar alguna de las opciones como compatibilidad con IIS 6, management scripts and tools o la de manage service para administración remota. image

4.- Ya en la lista, podemos también seleccionar la opción de FTP Publishing Service si queremos dar acceso por FTP

5. Ya una vez seleccionadas nuestras opciones le damos OK y esperamos a que termine de instalar.

6. Ya una vez que terminó de instalar el IIS, podemos probarlo abriendo nuestro navegador web y escribiendo en la barra de direcciones: localhost

image

Se nos abre un sitio como el anterior. No hay mucho que hacer, pero ya sabemos que está bien instalado. En siguientes entradas veremos como configurar un nuevo sitio IIS y como publicar una aplicación ASP.Net

salu2 y byte…

viernes, 21 de mayo de 2010

ASP.NET AJAX Control Toolkit

 

Sabes javascript?, tanto así como para hacer una página tipo iGoogle, Facebook, con cajas de texto que tienen la función de autocompletar que mientras escribimos van “adivinando” lo que buscamos, galerías fotográficas en las que pasamos de foto en foto sin recargar toda la página, controles de calendario con efectos gráficos y muy completos, popups que nos desactivan la ventana activa, controles anclados, notificaciones al instante… todo esto lo podemos hacer con AJAX, imagínate programar todo esto, la buena noticia es q no tenemos que hacerlo.

Ajax Control Toolkit es un proyecto disponible de manera gratuita y contiene mas de 40 controles, que permiten agregar una gran interactividad y atractivo visual a nuestras aplicaciones ASP.net. Controles como Autocompletar, Calendario, acondeón, páneles colapsables, efectos de animación y slideshows,y lo mejor de todo, solo arrastrando y configurando algunas propiedades, sin saber mucho de las tecnologías utilizadas, haciendo que se reduzca la curva de aprendizaje. .

 

Sitio oficial

El sitio oficial de Ajax Control Toolkit en codeplex es el siguiente:
http://ajaxcontroltoolkit.codeplex.com/
en este sitio podemos ver los últimos controles que se han agregado, podemos bajar los binarios e incluso un proyecto con el fuente de cómo utilizar los controles.

Si queremos ver funcionar en vivo los controles, aquí podemos ver la galería de controles completamente funcionales:
http://www.asp.net/ajax/ajaxcontroltoolkit/Samples/Accordion/Accordion.aspx

Mediante Ajax Control Toolkit podemos aplicar Ajax a nuestros proyectos ASP.Net de una manera fácil y así poder crear potentes aplicaciones Web 100% Ajax sin necesidad de saber nada de JavaScritp o XML  y siendo compatible con todos los navegadores modernos, ya que es una tecnología que independiente del navegador con que accedamos.

Ligas de Interes:

Traducción al castellano

http://www.subgurim.net/Articulos/ajax-y-javascript/155/asp-net-ajax-control-toolkit-traducido-al-castellano.aspx

En siguientes entradas voy a ver algunos ejemplos de como utilizar algunos de los controles del Ajax Control Toolkit, salu2 y byte

Leer datos utilizando un dataReader

 

Un ejemplo de código para leer datos utilizando un DataReder

string connectionString = (string)ConfigurationManager.ConnectionStrings["NorthWindConnectionString"].ToString();
SqlConnection conn = new SqlConnection(connectionString);
string querySring = "Select * from users";
SqlCommand comando = new SqlCommand(querySring, conn);
conn.Open();
SqlDataReader dr = comando.ExecuteReader();
if (dr.HasRows)
{
    while (dr.Read())
    {
        string usrId = dr["UserId"].ToString();
        //entidad = LoadData();
    }
}
dr.Close();
conn.Close();

Tomar una cadena de conexión del Web.Config mediante código

 

1.- Agregar el siguiente using al principio del archivo

    using System.Configuration;

2.- Declarar una variable string donde tomaremos el connectionstring del Web.config

string connectionString = (string)ConfigurationManager.ConnectionStrings["NorthWindConnectionString"].ToString();

ASP.Net y Ajax

 

Todos hemos entrado a las nuevas aplicaciones llamadas de redes Sociales: Facebook, Badoo, Twitter, MySpace; blogs, youtube e incluso aplicaciones como Picasa y Google Earth. Todas estas aplicaciones tienen un rico contenido, son bonitas y tienen una gran interacción con los usuarios. Una particularidad, parece que se actualizan dinámicamente cada parte de manera independiente sin las molestas recargas de las pantallas completas y los tiempos de espera, esto es debido en gran medida a la utilización de Ajax.

Ajax (Asynchronous JavaScript And XML) es una técnica de desarrollo Web que permite crear este tipo de aplicaciones interactivas o RIA (Rich Internet Applications). El término Asíncrono significa que los datos se recargan en segundo plano sin tener que recargar toda la página y tener que esperar si estamos haciendo otra cosa. Javascript es el encargado de hacer las llamadas y recibir y actualizar los datos recibidos de manera asíncrona.

Esto permitió el desarrollo de lo que actualmente se conoce como el Web 2.0, aplicaciones ricas como las redes sociales,los blogs, sitios de videos, los wikis y demás sitios con una gran atractivo e interacción con el usuario.

Pues Ajax se encarga de todas estas idas y vueltas al servidor sin que nos demos cuenta y sin tiempos de espera.
Todo esto muy bonito como usuario, pero, como desarrollador...apenas estamos aprendiendo una nueva tecnología, por ejemplo ASP.Net, o pasando de la versión 2.0 a la 3.0, cuando los usuarios nos piden que nuestras aplicaciones se parezcan a estas aplicaciones a las que están acostumbrados... que problema....

La buena noticia, es que ASP.net soporta Ajax.
ASP.Net Ajax 1.0 se publicó como una descarga aparte, que teníamos que agregar a nuestro Visual Studio. Con el .Net Framework 3.5, el soporte a Ajax vienen integradas en ASP.Net, por lo que en la versión de Visual Studio 2008 no requerimos ninguna instalación extra. Además, contamos con otra herramienta el ASP.NET AJAX Control Toolkit, del cual hablaré en otra entrada.

salu2 y byte 

Restaurar una base de datos de SQL Server 2008 en un servidor SQL Server 2005

 

Quise restaurar una base de datos de un servidor SQL Server 2008 a un servidor SQL Server 2005 y me di cuenta de lo que suponía que no se puede, por lo menos no de una manera directa con Backup y Restore. Al modo, no me quede con las ganas ni con la duda, así que a investigar.

Lo tenemos que hacer con la opción de scripting, esa fue la forma que halle para resolver el problema. A continuación detallo el proceso.

 

Generar el Script

Ya una vez conectado al servidor, hacemos lo siguiente:

  1. Seleccionas la base de datos, le damos click derecho, task y generate scripts.
    • image
  2. La primer pantalla de bienvenida le damos siguiente.
  3. Seleccionamos la base de datos y marcamos la opción de Script all objects in the selected database.
    • image
  4. Ahora nos presenta una pantalla de opciones, vamos a seleccionar las mas importantes.
  5. Primero cambiamos la opcion Script for Server Version a SQL Server 2005.
    • image
  6. Ponemos la opción Script DataBase Create a verdadero si es una nueva base de datos.
  7. También ponemos la opción Script Data a verdedero.
  8. Existen otras opciones como de indices de texto completo y llaves primarias que configuraremos según sea el caso.
  9. Ya una vez que estamos contentos con nuestra configuración damos siguiente.
  10. En la opción de salida, le damos Script to file, le indicamos el archivo de salida y le damos siguiente.
    • image
  11. Por ultimo nos presenta una pantalla donde revisamos las opciones seleccionadas. Las analizamos y si todo esta bien le damos Finish.

Corregir el script

  1. Ya una vez que finalizó el proceso, revisamos el script. Hay que poner atención a lo siguiente:
    1. USE

      [master]

      GO

      /****** Object: Database [Ejemplo] Script Date: 05/21/2010 10:54:09 ******/

      CREATE

      DATABASE [Ejemplo] ON PRIMARY

      (

      NAME = N'ConacytWSData', FILENAME = N'D:\Archivos de programa\Microsoft SQL Server\MSSQL10.SQLSERVER2008\MSSQL\DATA\Ejemplo.mdf' , SIZE = 7168KB , MAXSIZE = UNLIMITED, FILEGROWTH = 1024KB )

      LOG ON

      (

      NAME = N'ConacytWSData_log', FILENAME = N'D:\Archivos de programa\Microsoft SQL Server\MSSQL10.SQLSERVER2008\MSSQL\DATA\Ejemplo.ldf' , SIZE = 1024KB , MAXSIZE = 2048GB , FILEGROWTH = 10%)

      GO

  2. Hay que notar que hace referencia a una unidad local, que talvez ni existe en el otro servidor, así que hay que modificarlo para que quede en el directorio de la instalación de nuestra instancia de SQL Server 2005.
  3. También hay que poner en comentario las siguientes líneas:
    1. --EXEC sys.sp_db_vardecimal_storage_format N'Ejemplo', N'ON'

      --GO

      USE

      [Ejemplo]

      GO

Ejecutar el script

Ahora nada más queda entrar a la instancia de SQL Server 2005 y correr el script…espero todo vaya bien…

salu2 y byte!!!

miércoles, 17 de marzo de 2010

Mostrar etiquetas html en este blog

Resulta que publiqué una entrada en este blog en el que ponía el contenido del web.config, y como es contenido en XML, resulta que no me lo puso.
Lo que ocurrió, que lo escribí en mi super editor el NotePad, pero al copiarlo al blogger, desaparecio todo el contendio de las etiquetas, y viendo el codigo en html, vi que lo tomaba tal cual.
Lo que yo deseaba era que mostrara el contenido, no que lo intentara interpretar o lo tomara como etiquetas, así que la solución que tuve es pasarlo a html, pero como no soy un super experto en eso, y no me gusta hacerlo a pie... hay que utilizar alguna herramienta.

Editor HTML
Puedes utilizar tu herramiendo de edición HTML, como el Microsoft Expression Web, copias el contenido del Notepad en edición, y copias el codigo html generado y lo pegas en el blogger...y listo.
Editor en línea
También lo puedes hacer en lína si no tienes ninguna herramienta instalada o no estás en tu compu.
Utilice la siguiente página: http://blogcrowds.com/resources/parse_html.php
Solo pegas el contenido y le das al botón parse y listo, te pone el código html que puedes pegar en la pestaña de edición de html de tu entrada en el blog.

Aplicar un tema a nuestros sitio Web en ASP.Net

Para dar un formato consistente a todo nuestro sitio, podemos utilizar Themes y estilos. Esto es algo como definir el estilo de un control una sola vez, y aplicarlo a todos los controles en una página e incluso, todo el sitio.

Aplicar un tema a todo el sitio
Para aplicar un tema a todo el sitio, lo tendremos que indicar en el archivo de configuración del sitio(web.config) dentro del elemento , como se muestra a continuación:

<configuration>
<system.web>
<pages theme="ThemeName" />
</system.web>
</configuration>

Para aplicar un tema como un Style sheet theme, tenemos que configurar el atributo styleSheetTheme

<configuration>
<system.web>
<pages styleSheetTheme="Themename" />
</system.web>
</configuration>

Aplicar un tema a una página
Para aplicar un tema a una página individual, lo indicamos en el atributo theme o StyleSheetTheme de la página.

<%@ Page Theme="ThemeName" %>
<%@ Page StyleSheetTheme="ThemeName" %>

Aplicar un tema a un control
Por default, los temas se aplican a todos los controles dentro del sitio, pero se puede dar el caso que necesitemos darle un formato especial a un control en particular, por lo que podemos poner un tema a nivel control. Para esto, creamos una entrada en el archivo Skin que tenga un SkinID y lo aplicamos a los controles deseados.

<asp:Calendar runat="server" ID="DatePicker" SkinID="SmallCalendar" />