Librerias JavaScript
Porque la IU tambien importa. Aqui les dejo unas librerias Javascript (con AJAX) que recomiendo:
Prototype Scriptaculos Mochikit Extjs YUI
Un espacio de tecnologia
Porque la IU tambien importa. Aqui les dejo unas librerias Javascript (con AJAX) que recomiendo:
Prototype Scriptaculos Mochikit Extjs YUI
Posteado por:
Carlos
a las
10:02 p.m.
2
comentarios
Etiquetas: JavaScript
Cuando en una pagina quieres que el usuario al dar click en un boton descargue directamente un archivo PDF que sea el producto de la exportación de un reporte de CrystalReports este es el codigo que debes de usar
Dim Reporte As New MiReporte
'Se llena con información el reporte
Dim oStream As New System.IO.MemoryStream
oStream = Reporte.ExportToStream _
(Reporte.ExportOptions.ExportFormatType.PortableDocFormat)
Response.Clear()
Response.Buffer = True
Response.ContentType = "application/pdf"
Response.AddHeader("Content-Disposition", "attachment;filename=" + "Archivo.pdf")
Response.BinaryWrite(oStream.ToArray())
Response.End()
Posteado por:
Carlos
a las
12:51 p.m.
0
comentarios
Etiquetas: ASP.NET, CrystalReports
Visual Studio .NET 2005 por si es capaz de hacer debbug a codigo javascript, solo que por default Internet Explorer tiene bloqueda esta opcion, pero lo bueno es que es facil volver a admitirla.
Para hacer esto solo hay que seguir los siguientes pasos:
Posteado por:
Carlos
a las
5:38 p.m.
0
comentarios
Etiquetas: .NET, JavaScript
En este articulo se describe una forma en que se puede tomar en cuenta para manejar más de un solo evento en los triggers DML
La sintaxis para crear triggers DML es la siguiente
CREATE TRIGGER nombre_trigger
ON { tabla | vista }
{ FOR | AFTER | INSTEAD OF }
{ [ INSERT ] [ , ] [ UPDATE ] [ , ] [ DELETE ] }
[ WITH APPEND ]
[ NOT FOR REPLICATION ]
AS { sentencia_sql [ ; ] [ ,...n ] | EXTERNAL NAME
Pero...que pasa si no quieres hacer un trigger para cada evento, y en vez deseas hacer un solo que responda a cualuqier evento, en ese caso esta es una buena opcion
Primero que nada hay que saber que en los triggers se generan tablas temporales, una llama INSERTED y otra DELETED
Cuando se inserta un registro y un trigger responde a ese evento entonces se llena la tabla INSERTED, en caso de eliminar un registro se llena la tabla DELETED, mas sin embargo no hay una tabla UPDATED en vez se llenan las dos tablas son la información de lo que se inserta y lo que se borra
Esto ultimo es la base para lo que a continuación se va a realizar, la parte importe es hacer condiciones las cuales distingan cual fue la o las tablas que se llenaron, lo cual con un SELECT COUNT(*) se puede realizar, esto resulta algo asi:
CREATE TRIGGER nombreTrigger ON nombreTabla
FOR INSERT, UPDATE, DELETE
AS
IF (SELECT COUNT(*) FROM INSERTED) > 0 AND (SELECT COUNT(*) FROM DELETED) > 0
BEGIN
'Sentencia SQL
REURN
END
IF (SELECT COUNT(*) FROM INSERTED) > 0
BEGIN
'Sentencia SQL
END
IF (SELECT COUNT(*) FROM DELETED) > 0
BEGIN
'Sentencia SQL
END
En la primera parte se hace una condicion para saber si ambas tablas estan llenas lo cual indica un UPDATE, si es cierto sale del triger de lo contrario continua la seleccion.En la segunda y tercera parte se distingue que tabla por individual esta llena. En este punto ya podemos saber que evento disparo el trigger y podemos actuar debidamente
Gracias a el Rola por su colaboración en este articulo
Posteado por:
Carlos
a las
5:01 p.m.
0
comentarios
Las Master Page en ASP.NET te permiten crear una disposicion de controles consiste. Una sola Master Page define el look & fell y el comportamiento estandar para un conunto de paginas
Las Master Page son una poderosa herramienta al momento de crear un sito, y su habilidad de anidarse es aun mejor, puedes crear una jerarquia completa lo cual facilita mucho la tarea de tener una consistencia entre las paginas
El unico detalle que tienen es que al momento de anidar Master Page solo se puede hacer es Vista-Fuente y no permite la Vista-Diseño
Este es un pequeño ejemplo de como anidar un par de Master Page; asi seria la Master Page Padre:
Y asi queda la Master Page hija:
Posteado por:
Carlos
a las
6:05 p.m.
1 comentarios
Etiquetas: ASP.NET

Todos en algun momento hemos tenido que hacer algun trigger en alguna tabla, pero que pasa si este trigger requiere de mucho procesamiento, SQL no esta diseñado para hacer mucho procesamiento, entonces la opcion es crear un Trigger CLR, este aparta de que se escribe con lenguaje .NET puede optimizar el uso de recursos
Cuando se vaya a tomar la decision de hacer un Trigger T-Sql o CLR se debe pensar primero en la complejidad del mismo
Una vez que tomamos la decision de que nuestro trigger empezemos a checar la sintaxis para crear un Trigger T-Sql
Imports SystemYa que tenemos nuestro propio ensamblado solo es cuestion se subirlo a SQL, hay que recordar que esta es una función nueva de SQL Server 2005, es cuestion de elegir del browser la base de datos deseada, abrir la seccion de programabilidad y ahi a la seccion de ensamblados; una vez ya localizada esta seccion es cuestion de dar boton derecho con el mouse y elegir nuevo ensamblado
Imports System.Data.SqlClient
Imports System.Data.SqlTypes
Imports Microsoft.SqlServer.Server
Imports System.Transactions
Partial Public Class Triggers_
Public Shared Sub trig()
Using connection As New SqlConnection("context connection=true")
Dim command As SqlCommand
Dim reader As SqlDataReader
Dim value As Integer
connection.Open()
command = New SqlCommand("SELECT * FROM INSERTED", connection)
reader = command.ExecuteReader()
reader.Read()
value = CType(reader(0), Integer)
reader.Close()
If value = 1 Then
Try
Dim trans As Transaction
trans = Transaction.Current
trans.Rollback()
Catch ex As SqlException
' Catch the exception.
End Try
Else
End If
connection.Close()
End Using
End Sub
End Class
Posteado por:
Carlos
a las
10:58 a.m.
0
comentarios
Las vistas de esquema de información de SQL son muy utiles en caso de que quieren tener algun registro o control sobre una base de datos. Estas son vistas "ocultas" de las cuales puedes sacar informacion
En estas vistas hay dos tablas que por lo pronto voy a mencionar: COLUMNS y TABLES, de estas igual como su nombre lo sugiere puedes sacr informacion de las columnas y de las tablas de una base de datos
El acceso a estas vista es algo mas o menos asi:
Posteado por:
Carlos
a las
9:38 a.m.
0
comentarios
Para poder tener un efecto de interoperabilidad de Microsoft Office 2003 desde un lenguaje .NET es necesario contar con los ensamblados necesarios para logarlo, estos se puden descargar desde el siguiente link
Posteado por:
Carlos
a las
9:15 a.m.
0
comentarios
Has querido usar un InputBox en ASP.NET, o simplemente quieres abrir una ventana extra del navegador y quieres que te regrese un resultado? esta es la solución
Primero que nada necesitas tener dos paginas una principal y la quieres que se abra
En la primera necesitas tener una funcion que abra la segunda la cual puede ser algo asi:
Posteado por:
Carlos
a las
3:41 p.m.
Etiquetas: ASP.NET, JavaScript
La funcion javascript que se utiliza es el __doPostBack cuya sintaxis es mas o menos asi:Para que se pueda utilizar no se necesita que la metas junto con tu pagina ya que ASP autogenera esta
fucion con cualquier sitio que estes realizando, en realidad solo existen 2 controles ASP que por si solos
pueden realizar un postback: el button y el imagebutton todos los demas controles necesitan esta funcion
para generar un post back
A continuacion muestro un ejemplo de esto
Ahora; ya que sabemos esto podemos utilizar esta funcion para generar un postback, con la sigueinte sintaxis
Posteado por:
Carlos
a las
3:10 p.m.
0
comentarios
Etiquetas: ASP.NET, JavaScript
Imports Microsoft.Office.Interop.Excel
Public Class ImprimirExcel
Shared Function Imprimir(ByVal Direccion As String) As Boolean
Try
Dim xlsApp As New Microsoft.Office.Interop.Excel.Application
xlsApp.Workbooks.Open(Direccion)
Dim IE As System.Collections.IEnumerator
IE = xlsApp.Workbooks.GetEnumerator()
While IE.MoveNext
CType(IE.Current, Microsoft.Office.Interop.Excel.Workbook).PrintOut()
End While
Return True
Catch ex As Exception
Return False
End Try
End Function
End Class
IEnumerator es la interfaz base para todos los enumeradores no genéricos.
Para obtener la versión genérica de esta interfaz, vea IEnumerator.
La instrucción foreach del lenguaje C# (for each en Visual Basic) oculta la complejidad de los enumeradores. Por tanto, se recomienda el uso de foreach en lugar de manipular directamente el enumerador.
Los enumeradores se pueden utilizar para leer los datos de la colección, pero no para modificar la colección subyacente.
Inicialmente, el enumerador se coloca delante del primer elemento de la colección. El método Reset también devuelve el enumerador a esta posición. En esta posición, una llamada a la propiedad Current produce una excepción. Por lo tanto, se debe llamar al método MoveNext para desplazar el enumerador hasta el primer elemento de la colección antes de leer el valor de Current.
Current devuelve el mismo objeto hasta que se llama a MoveNext o a Reset. MoveNext establece el valor de Current en el siguiente elemento.
Si MoveNext pasa el final de la colección, el enumerador se coloca detrás del último elemento de la colección y MoveNext devuelve el valor false. Cuando el enumerador está en esta posición, las llamadas posteriores al método MoveNext también devuelven el valor false. Si la última llamada al método MoveNext ha devuelto false y se realiza una llamada a la propiedad Current, se produce una excepción. Para volver a establecer el valor de Current en el primer elemento de la colección, se puede llamar primero al método Reset y después al método MoveNext.
Mientras no se modifique la colección, el enumerador continúa siendo válido. Si se realizan cambios en la colección, como agregar, modificar o eliminar elementos, el enumerador se invalida definitivamente y la siguiente llamada a MoveNext o a Reset produce una excepción InvalidOperationException. Si la colección se modifica entre MoveNext y Current, Current devuelve el elemento en el que está establecido, aunque el enumerador ya haya quedado invalidado.
El enumerador no tiene acceso exclusivo a la colección; por lo tanto, la enumeración a través de una colección es un procedimiento que, en esencia, no es seguro para la ejecución de subprocesos. Aunque una colección esté sincronizada, otros subprocesos pueden seguir modificándola, por lo que el enumerador produce una excepción. Con el fin de garantizar la seguridad para la ejecución de subprocesos durante la enumeración, se puede bloquear la colección durante toda la enumeración o detectar las excepciones debidas a cambios efectuados por otros subprocesos.
Posteado por:
Carlos
a las
4:29 p.m.
0
comentarios
Por Mauro Sant'Anna
Visual Studio .NET incluye Crystal Reports como un mecanismo "oficial" de creación de reportes. Crystal Reports es un producto muy desarrollado y complejo para la creación de reportes, y cuenta con una infinidad de opciones. En este artículo, nos vamos a concentrar en crear reportes relativamente sencillos, pero mostrando los detalles específicos de la versión .NET, tanto en aplicaciones WinForms como en aplicaciones WebForms (ASP.NET). Este artículo considera que usted ya posee alguna familiaridad con Visual Studio .NET y también con ADO.NET.
Crear un reporte
Independientemente de cómo se hará la presentación, el reporte se define en un archivo ".RPT", que forma parte de su proyecto. Ese archivo especifica el modo en que se hará la presentación del reporte, pero no incluye los datos propiamente dichos. Los datos se definirán en el tiempo de ejecución.
Crystal Reports se basa en un concepto muy común de la definición de reportes: los reportes se componen de "secciones", y cada sección es un espacio horizontal en la página. Existen diversos tipos de secciones, por ejemplo:
* Encabezado del reporte, aparece en la primera página.
* Encabezado de página, aparece en la parte superior de todas las páginas.
* Detalle: lo más importante. En el tiempo de ejecución, se genera una de estas secciones para cada línea (registro) en la base de datos.
* Pie de página, aparece en la parte inferior de todas las páginas.
* Pie de reporte, aparece al final del reporte.
En un principio, todos los reportes presentan estas cinco secciones. Otras secciones son opcionales, como por ejemplo:
* Encabezado de grupo, aparece antes de un grupo.
* Pie de grupo, aparece al final del grupo.
Se podrá omitir una o más secciones, en caso de que no sean necesarias.
Posteado por:
Carlos
a las
5:40 p.m.
1 comentarios
La Fundación Mozilla lanza la nueva versión del navegador Firefox 2.0, apenas una semana después de que Microsoft pusiese a disposición de los usuarios el Internet Explorer 7.
Posteado por:
Carlos
a las
2:46 p.m.
0
comentarios
Etiquetas: Firefox
Por primera vez se publica una versión preliminar de VSTO v3.
Esta versión de VSTO funciona con Office 2007 Beta 1 Technical Refresh.
VSTO v3 proporciona soporte para la integración de código .NET con la nueva versión de Office 2007.
Entre las características más destacables estan:
Enlace a la página de descarga de VSTO v3.
Posteado por:
Carlos
a las
2:43 p.m.
0
comentarios
Las aplicaciones Web ASP.NET versión 2.0 configuradas para la autenticación de formularios utilizan un vale de autenticación que se transmite entre el servidor Web y el explorador en una cookie o en una cadena de consulta URL. El vale de autenticación se genera cuando el usuario inicia sesión por primera vez y se utiliza en ocasiones posteriores para representar al usuario autenticado. Contiene un identificador de usuario y, con frecuencia, el conjunto de las funciones a las que pertenece el usuario. El explorador transmite al servidor Web el vale de autenticación en todas las solicitudes posteriores que forman parte de la misma sesión. Además del almacén de identidades de usuario, también debe proteger este vale para no poner en peligro el mecanismo de autenticación.
No proteger debidamente la autenticación de formularios es una vulnerabilidad habitual que puede traducirse en:
| • | Elevación de privilegios: un intruso puede elevar los privilegios de su aplicación actualizando el nombre de usuario o la lista de funciones contenida en el vale y enviando a continuación la información actualizada al servidor. Un intruso capaz de insertar código malintencionado en su aplicación (en una nueva página ASPX, por ejemplo), también será capaz de crear y modificar los vales de autenticación de formularios | ||||||
| • | Secuestro de sesión: puede ocurrir que un intruso se haga con el vale de autenticación de otro usuario y lo utilice para obtener acceso a su aplicación. Esto puede suceder de varias maneras:
| ||||||
| • | Utilización de la sesión después de cerrarla: incluso después de que el usuario haya cerrado la sesión de la aplicación y el desarrollador haya llamado a FormsAuthentication.SignOut, el vale de autenticación sigue siendo válido hasta que caduca su tiempo de vida (TTL), de manera que cabe la posibilidad de que un intruso lo utilice para suplantar la identidad de otro usuario. | ||||||
| • | Interceptación: puede ocurrir que un intruso mire el contenido de un vale de autenticación para obtener información confidencial y utilizar esta información para poner en peligro la aplicación. | ||||||
| • | Exposición del almacén de identidades de usuario: un intruso con acceso al almacén de identidades de usuario puede obtener acceso a los nombres de usuario y contraseñas, directamente desde el almacén de datos o mediante un ataque de inyección SQL. |
Para proteger el sistema de estas amenazas, la autenticación de formularios en ASP.NET ofrece las contramedidas siguientes:
| • | Algoritmos hash MAC (HMAC): utilizan SHA1 o MD5 para proporcionar protección frente a posibles alteraciones. Cualquier cambio realizado en el vale de autenticación se detecta en el servidor y se genera una excepción si se ha modificado. |
| • | Cifrado: el cifrado convierte los datos de texto sin cifrar contenidos en el vale de autenticación de formularios en texto cifrado ilegible. ASP.NET versión 2.0 utiliza el cifrado simétrico AES para impedir que cualquiera pueda ver el contenido del vale de autenticación de formularios. |
| • | Restricción de la duración de la sesión: puede aplicar restricciones de la duración para reducir la ventana de tiempo durante la cual un intruso puede suplantar la identidad de otro usuario utilizando para ello el vale de autenticación de éste. |
| • | Transmisión obligatoria a través de HTTPS: puede impedir que los vales de autenticación se transmitan a través de conexiones HTTP. Esto impide que un intruso pueda ver o modificar el contenido del vale de autenticación mientras éste atraviesa la red. |
Posteado por:
Carlos
a las
9:32 a.m.
1 comentarios
Etiquetas: ASP.NET
GoogleMaps.Subgurim.NET es el control de GoogleMaps más avanzado para ASP.NET 2.0.
Con todo el poder de la API oficial de GoogleMaps pero sin necesidad de una sola línea de código BLOCKED SCRIPT todo ASP.NET!!
Con solo arrastrar con el ratón, y unas pocas líneas de código, podrás programar potentes aplicaciones con mapas de Google!!
Posteado por:
Carlos
a las
3:03 p.m.
0
comentarios
Etiquetas: Google
1ª - La letra “e”, es un símbolo de modernidad, un homenaje a nuestra vieja y culta Europa, una “e” de esperanza…
2ª - Es fácil de usar, al no tener navegación por pestañas, te puedes concentrar más en una sola página, navegarás menos pero…absorberás más conocimientos.
3ª - No requiere instalación, en el 90 % de los casos vendrá con tu flamante nuevo equipo, nada de complicadas instalaciones, horas de descarga de otros navegadores que vete tu a saber que oscuros misterios esconderán… (ahora bien, te las vas a ver para desinstalarlo)
4ª - Serás un buen ciudadano, podrás entrar a todo tipo de páginas de organismos y estamentos oficiales, no sentirás el “vacio administrativo” de una página que respeta los estándares y dice que tu Konqueror es un señor muy malo…
5ª - Tus capacidades de búsqueda se ampliarán, verás crecer y crecer las barras que se te instalarán de buenos señores que querrán que amplíes horizontes y se abrirán muchas bellas ventanas emergentes de gente que se preocupa por el tamaño de tu pene…
6ª - Te harás un experto en seguridad informática, no habrá Spyware que se te resista, tu página de inicio será secuestrada tantas veces que te harás un experto en rescates…
7ª - Un seg que estoy pensando más…
8ª - La banca electrónica no tendrá secretos para ti, aprenderás lo que es el Phising plácidamente mientras miras la bonita suma que te cargó El Corte Inglés a fin de mes en tu tarjeta de buen ciudadano.
9ª - No estarás pendiente de engorrosas actualizaciones, serás libre, gracias a su código cerrado no serás incomodado en la calma de tu espacio digital, ojos que no ven, tiempo perdido que no se siente…
10ª- Te sentirás comprendido, es más fácil, más plástico, decir “uso Explorer” que “uso Fairfos”, no sentirás el rechazo social, eres parte de algo, algo grande, el espíritu de Gates, todo un símbolo de la concordia en este mundo te acompañará…
11ª- Tus hijos crecerán en un entorno feliz, todo tiene lógica, desde la base de la familia, Windows, pasando por sus descendientes tan cercanos, tan nuestros. Imagínate, tu bebé mandando mails con Outlook Express “nene, deja eso del Thunderbird, caca“, gestionando su futuro Master con Microsoft Office, hablando con sus amigos por el Messenger (”el aMSN es de niños malos !”)…el sueño Americano será el tuyo.
12ª- La más importante, Internet Explorer es como el ColaCao, siempre ha estado ahí, cuando de pequeños nos dieron Nesquik, llegó el fracaso escolar, si mi mamá no me hubiera hecho pasar por ese trance, hoy en día sería un Blogger admirado pero…que se puede esperar de un pobre chaval que no pasó de 2º de BUP…
Posteado por:
Carlos
a las
3:01 p.m.
0
comentarios
Etiquetas: Firefox
El espacio de nombres System.Resources proporciona clases e interfaces que permiten a los programadores crear, almacenar y administrar diversos recursos específicos de las referencias culturales que se utilizan en las aplicaciones. Una de las clases más importantes del espacio de nombres System.Resources es la clase ResourceManager.
La clase ResourceManager permite el acceso y el control, por parte del usuario, de los recursos almacenados en el ensamblado principal o en ensamblados satélites de recursos. Utilice los métodos System.Resources.ResourceManager.GetObject y System.Resources.ResourceManager.GetString para recuperar objetos y cadenas específicos de las referencias culturales.
Clases
| Clase | Descripción |
| MissingManifestResourceException | Excepción que se produce si el ensamblado principal no contiene los recursos de la referencia cultural neutral. Éstos son necesarios debido a la pérdida de un ensamblado satélite apropiado. |
| MissingSatelliteAssemblyException | La excepción que se produce cuando no existe el ensamblado satélite para los recursos de la referencia cultural neutra. |
| NeutralResourcesLanguageAttribute | Informa a ResourceManager de la referencia cultural neutral de un ensamblado. No se puede heredar esta clase. |
| ResourceManager | Proporciona un acceso cómodo a los recursos específicos de cada referencia cultural en tiempo de ejecución. |
| ResourceReader | Enumera las secuencias y archivos ".resources", y lee los pares secuenciales nombre-valor de los recursos. |
| ResourceSet | Almacena todos los recursos adaptados a una referencia cultural determinada, pasando por alto otras referencias culturales, incluidas las reglas de reserva. |
| ResourceWriter | Escribe recursos en el formato predeterminado del sistema para un archivo de resultados o una secuencia de salida. Esta clase no se puede heredar. |
| ResXDataNode | Representa un elemento en un archivo de recursos. |
| ResXFileRef | Representa un vínculo a un recurso externo. |
| ResXFileRef.Converter | Proporciona un convertidor de tipos para convertir datos de ResXFileRef en una cadena y desde una cadena. |
| ResXResourceReader | Enumera las secuencias y archivos de recursos XML (.resx) y lee los pares secuenciales nombre-valor de los recursos. |
| ResXResourceSet | Recopila todos los elementos que representa un archivo de recursos XML (.resx) en un único objeto. |
| ResXResourceWriter | Escribe recursos en un archivo de recursos XML (.resx) o en una secuencia de salida. |
| SatelliteContractVersionAttribute | Indica a ResourceManager que pida una versión en particular de un ensamblado satélite para simplificar las actualizaciones del ensamblado principal de una aplicación. |
Interfaces
| Interfaz | Descripción |
| IResourceReader | Proporciona la funcionalidad básica para leer datos de los archivos de recursos. |
| IResourceWriter | Proporciona la funcionalidad para escribir los recursos en un archivo o secuencia de salida. |
Enumeraciones
| Enumeración | Descripción |
| UltimateResourceFallbackLocation | Especifica el ensamblado de la clase ResourceManager que se va a utilizar para recuperar recursos neutrales utilizando Empaquetar e implementar recursos. |
Posteado por:
Carlos
a las
12:10 p.m.
0
comentarios
Etiquetas: VB.NET