lunes, 29 de diciembre de 2008
lunes, 22 de diciembre de 2008
Todo los tipos de conexiones a datos posibles
En este sitio se pueden encontrar todas formas que conectar con diferentes bases de datos.
martes, 28 de octubre de 2008
Forzar descarga de un archivo
Esto es para forzar la descarga de un pdf puede ser util para imagenes y/o otras cosas que los navegadores por defecto abren.
Colocar en el page_load:
Response.ClearHeaders();Response.ClearContent();Response.ContentType = "application/pdf";Response.AddHeader("content-disposition", "attachment; filename=mifactura.pdf");Response.WriteFile(@"C:\Desacarga\test.pdf");
Response.End();Esto va a hacer que el navegador pregunto donde guardar el archivo que esta en el servidor C:\Desacarga\test.pdf con el nombre mifactura.pdf
Desactivar un Boton mientras se hace el submit
Para evitar que se envíen varias veces la misma información (suele pasar cuando hay un proceso lento en el lado del servidor y un cliente impaciente), es útil desactivar el botón que provoca el postback.
Button1.Attributes.Add("onclick", "javascript:document.getElementById('"
+ Button1.ClientID + "').disabled=true;" + this.GetPostBackEventReference(Button1));Si es que se llama Button1 el botón que se quiere desactivar. Colocar esa línea dentro del onLoad de la pagina
Error No se pudo cargar viewstate
No se pudo cargar viewstate. El árbol de control en que se está cargando viewstate debe coincidir con el árbol de control que se utilizó para guardar viewstate durante la solicitud anterior. Por ejemplo, al agregar controles de forma dinámica, los controles agregados durante una devolución deben coincidir con el tipo y posición de los controles agregados durante la solicitud inicial.
Se soluciona agregando: EnableViewState=”false” al tag Page de la vista de código de la pagina aspx.
Recuperar el id del ultimo registro insertado
Algo muy comun es querer saber el id del último registro insertado, acá posteo un ejemplo de como hacer eso para una base de datos SQL Server en c#:
SqlConnection conn= new SqlConnection(
ConfigurationManager.ConnectionStrings["dbConn"].ConnectionString
);
string insertStr ="INSERT INTO [tabla]([texto],[fecha]) VALUES(@texto,getDate())
;SELECT Scope_Identity();";
SqlCommand cmd=new SqlCommand(insertStr,conn);
cmd.Parameters.Add("@texto", SqlDbType.NVarChar).Value="El texto va aca";
cmd.Connection.Open();
string ret=cmd.ExecuteScalar().ToString();
cmd.Connection.Close();
La parte clave esta en la sentencia Select Scope_Identity() del sql.
martes, 6 de mayo de 2008
Lo nuevo de Visual Basic .NET
Los tipos de datos.
- No se admite el tipo Variant, ha sido sustituido por Object. El valor predeterminado de Object es Nothing, en el caso de Variant era Empty.
- En vb6 el tipo Integer era un número de 16 bits, en vb .net el tipo Short reemplaza a Integer, el Interger pasa a tener 32 bits y el long 64 bits.
- El tipo de datos Currency se ha convertido en Decimal. Currency tenía 64 bits, con 4 dígitos a la derecha de la coma.
- Decimal es un número de 96 bits entero y puede constar de hasta 28 dígitos a la derecha de la coma.
- El tipo Date era un entero doble de 64 bits. En .net es un entero.
Cadenas.
- Vb .net no admite cadenas de longitud fija.
- La función DefType que asigna un tipo predeterminado a todas las variables declaradas sin tipo ya no se admite, al igual que DefInt, DefStr, DefBool y DefLng.
- VarPtr, StrPtr, ObjPtr. Estas funciones que devuelven las direcciones enteras de variables en invocaciones a la API, ya no se admiten. El método AddrOfPinnedHandle de las clase GCHand proporciona una funcionalidad similar.
Matrices.
- Todas las matrices tienen base 0.
- Las matrices no pueden ser fijas. No se pueden declarar matrices con tamaño fijo, mediante la especificación de su límite superior e inferior al diseñarlas. Tan solo se puede declarar el límite superior, ya que el inferior es 0.
- La instrucción Option base no se admite.
- La instrucción Redim se modifica. No se puede utilizar en la declaración de una variable de matriz.
Varios.
- El valor de True es -1, este no ha cambiando en .net, sin embargo en el motor CLR, True equivale a 1.
- Vb .net no admite los tipos de datos definidos por el usuario. Han sido sustituidos por estructuras. Constan de estructuras similares pero son mucho más potentes.
- La funcion MsgBox ha sido sustituida por el método Show de la clase MessageBox.
- Propiedades predeterminadas. Vb .net ya no admite las propiedades predeterminadas para cualquier objeto.
Operadores.
- El operador EQV se ha sustituido por el operador “=”.
- Se han añadido los operadores AndAlso y OrElse para procesar los cortocircuitos.
- Nuevos operadores de asignación.
+=, -=, *=, /=, \=, ^=, &=
Variables.
- Ámbito: las variables se pueden declarar dentro de bloques de instrucciones, en cuyo caso sólo estarán disponibles en su interior.
- Declaración: las variables se pueden definir en la misma línea en la que se declaran. También se pueden declarar múltiples variables en la misma línea.
Procedimientos.
- Invocación de procedimientos: ya se trate de subprocedimientos o funciones requiere el uso de paréntesis para incluir argumentos, aunque no se incluya ninguno.
- Procedimientos estáticos: estos ya no se admiten. Se deben definir las variables dentro del procedimiento como Static.
- ByVal, ByRef, As Any: en vb6 el mecanismo predeterminado para transferir parámetros es ByRef. En vb .net es ByVal. Ya no se admite la instrucción As Any de la instrucción Declare para invocaciones API.
Flujo de control.
- La instrucción While … WEnd ya no se admite.
- La bifurcación GoSub a otra subrutina dentro de una procedimiento ya no se admite.
- En vb .net la instrucción Return devuelve el control a la instancia que invoque la función. Si la función es de un determinado tipo, puede devolver también el valor.
Formularios.
- El método PrintForm ha dejado de ser válido. El entorno .net framework dispone de un nuevo subsistema de impresión, en el que se incluye una función de visualización previa.
- Circle, Cls, PSet, Line y Point ya no se admiten en vb .net. los métodos gráficos de vb6 se han sustituido por el espacio de nombre System.Drawing, el cual utiliza las nuevas clases GDI+ para dibujar.
- La propiedad Caption de los controles etiqueta y formularios ya no se admite. La propiedad Text ha pasado a sustituirla.
- La unidad de medida Twips utilizada en formularios ha sido sustituida por Píxeles.
- Fuentes: los formularios en vb6 se podían crear utilizando cualquier tipo de fuente admitida por Windows. Ahora solo se admiten fuentes True Type o Open Type.
- Matrices de controles: en vb .net los controles no se pueden agrupar en matrices, pero se puede utilizar el mismo procedimiento para utilizar controles múltiples con la palabra clave Handles.
- Menús contextuales y menús principales: en un formulario vb6 se puede tener un menú principal y un menú contextual.
- En vb .net solo se puede tener uno de los dos.
Controles.
- El control OLE ya no se admite.
- El control Image se ha sustituido por el PictureBox.
- El control Line ha sido sustituido por los métodos GDI+ Draw.
- El control Shape ha sido sustituido por los métodos GDI+ Draw.
Tipos de aplicaciones.
- Las aplicaciones Clases de Web, Documentos Active X, aplicaciones DHTML y las Propiedades de página ya no se admiten.
- Los controles de usuario creados en vb6 se pueden utilizar en vb .net, pero no existe un entorno de diseño para la edición y modificación de controles.
Acceso a datos.
- Vb .net no admite el estándar para el acceso a datos DAO. A partit de ahora se utilizará ADO .NET.