Blog de algunos tips de programación que seran útiles a la hora de hacer un sistema y que pueden ser olvidados por los desarrolladores.
Bienvenidos
L1f3 15 a D@nc3 Flo0r
viernes, 26 de diciembre de 2008
Feliz Navidad
jueves, 4 de diciembre de 2008
Bloquear ciertas aplicaciones en Windows
Algunas veces necesitamos bloquearle aplicaciones a los usuarios muchas veces para que rindan más en su empleo como por ejemplo "MESSENGER"
Esto se puede realizar poniendo ciertos controles en la red, por ejemplo por el firewall, pero también podemos bloquear estos programitas desde la misma computadora del usuario de la siguiente manera:
En ejecutar (run) (inicio/ejecutar)
Escribes gpedit.msc
>User configuration
>Administrative templates
>System
>Don't Run Specified Windows Softwares
> clic en Enable y luego Show
> Allí agregamos el msnmsgr.exe
Y listo ya Messenger no se ejecutará en esa computadora, esto mismo pueden hacer con cualquier otro software que deseen bloquear.
Cheers!
sábado, 22 de noviembre de 2008
Error: Insufficient data for an image al exporter un reporte a pdf
Es posible que en alguna ocasión se hayan encontrado con este error muy común, el mensaje "Insufficient data for an image" al exportar un reporte desde la aplicación a pdf.
Este error suele ocurrir cuando tenemos una imagen en nuestro reporte que el servidor no puede cargar entonces para resolver este inconveniente simplemente tenemos que cambiar
la imagen que está en el reporte (que lo más seguro es que sea JPG, JPEG o GIF) por una imagen .BMP .. si.. así de sencillo… la imagen que está en tu reporte cámbiala por una .bmp
y listo!! No tendrás problemas al exportar a pdf.
miércoles, 27 de agosto de 2008
Darle formato a un campo de un gridview
Este articulo lo envía mi amigo y hermano Oscar Peña y trata de cómo darle un formato específico a un campo de un gridview en .NET
Saben que a veces nuestros jefes (los clientes) nos piden que los campos tengan algún formato en específico como un signo de dinero ($), guiones, paréntesis, etc.
Entonces para eso podemos utilizar el siguiente codiguito…. CHEERS!!! J
Un ejemplo de una tarjeta de credito.
------------------------------------------------------------------------------------------------------------------------------
GridViewRowEventArgs ea = e as GridViewRowEventArgs;
if (ea.Row.RowType == DataControlRowType.DataRow)
{
DataRowView drv = ea.Row.DataItem as DataRowView;
Object ob = drv["no_tarjeta"];
if (!Convert.IsDBNull(ob))
{
Int64 iParsedValue = 0;
if (Int64.TryParse(ob.ToString(), out iParsedValue))
{
TableCell cell = ea.Row.Cells[1];
cell.Text = String.Format(System.Globalization.CultureInfo.CurrentCulture,
"{0:####-####-####-####}", new object[] { iParsedValue });
}
}
}
viernes, 22 de agosto de 2008
Mascaras en MS CRM 4
Gracias a Danny Knight por este aporte.
Muchos usuarios se fijan en las cosas bonitas antes que funcionales, ese es un mal que vivimos todos los programadores. Pero aveces tienen razón!!!
Un caso en el que tienen razón es si te piden que el campo de teléfono en su interfaz de CRM tenga una mascara. Entonces para hacer esto nos aprovecharemos de el "On change event" de un campo en los formularios.
El código a continuación formatea lo que se escribe en los campos de texto de forma que se pongan paréntesis y guiones a los números de teléfono y se guarden de una manera mas presentable para el usuario.
Para hacer esto vamos al editar el formulario de una entidad, haces doble clic en el campo de teléfono y en la pestaña de Eventos veras el Onchange event (en español seria AlCambiar) le das a Editar, copias este código.. y LISTO!!!
TE DEJO DOS CODIGOS, AMBOS FUNCIONAN A LA PERFECCION Y HACEN LO MISMO .. CHEERS!! JJ
CODIGO 1
// Attempt to auto-format basic phone numbers. This method supports
// 7 and 10 digit numbers. Example: (410) 555-1212
// Get the field that fired the event
var oField = event.srcElement;
// If we have the field and all is well
if (typeof(oField) != "undefined" && oField != null)
{
// Remove any non-numeric characters
var sTmp = oField.DataValue.replace(/[^0-9]/g, "");
// If the number is a length we expect and support, format the number
switch (sTmp.length)
{
case "4105551212".length:
oField.DataValue = "(" + sTmp.substr(0, 3) + ") " + sTmp.substr(3, 3) + "-" + sTmp.substr(6, 4);
break;
case "5551212".length:
oField.DataValue = sTmp.substr(0, 3) + "-" + sTmp.substr(3, 4);
break;
}
}
CODIGO 2
//--> start
// Here we place current phone number to oField
var oField = event.srcElement;
// Here we see if the phone number is valid
if (oField.DataValue != "undefined" && oField.DataValue != null)
{
// This removes any unwanted characters (non numeric)
var sTmp = oField.DataValue.replace(/[^0-9]/g, "");
// Here we use switch structure format number
switch (sTmp.length)
{
case 10:
oField.DataValue = "(" + sTmp.substr(0, 3) + ") " + sTmp.substr(3, 3) + "-"
+ sTmp.substr(6, 4);
break;
}
}
//--> end
Poner campos autonumericos en MS CRM 4
Si deseamos tener un campo auto numérico en una entidad de MS CRM 4
Podemos utilizar una forma un poco absurda pero que funciona.
Es sencillo y se puede lograr con un poco de conocimientos de TSQL
Lo primero que debemos hacer es crear el campo de tipo INT en la entidad en CRM
Luego vamos a la base de datos del CRM y eliminamos ese campo de la base de datos y lo volvemos a crear auto numérico
Asi engañamos al CRM y el campo que se creó previamente ira incrementándose de forma automática cada vez que guardemos un nuevo registro en la entidad.
Luego simplemente agregamos el campo al formulario, lo pones Read Only y LISTO!!!
Codigo sql:
ALTER TABLE [tabla] DROP COLUMN [columna]
ALTER TABLE [tabla] ADD [columna] INT IDENTITY
NOT NULL
martes, 29 de julio de 2008
Presentar el número de fila en un DataGridView (winform) y un GridView
Para una aplicacion Winform utilizamos los siguientes pasos
1) Ir a la configuracion de columnas del DataGrid
2) Agregar una columna (Unbound Column) y ponerla de primera
3) Asignar un nombre
4) Propiedad: ReadOnly = True
4) Asignar la propiedad VirtualMode del DataGrid con valor True
5) En el evento CellValueNeeded usar el siguiente código:
V.B.
If e.RowIndex >= 0 AndAlso e.ColumnIndex = Me.columna.Index Then
e.Value = e.RowIndex + 1
End If
End Sub
private
void dataGridView1_CellValueNeeded(object sender, DataGridViewCellValueEventArgs e)
{
if (e.RowIndex >= 0 && e.ColumnIndex == columna.Index)
{
e.Value = e.RowIndex + 1;
}
}
====================================================================
Para hacerlo en una aplicación Web
1) Ir a la configuración de columnas del GridView
2) Agregar una columna tipo TemplateField y asignar un Header
3) En el html agregar el siguiente código
miércoles, 9 de julio de 2008
Obtener solo la hora de un campo datetime
Si queremos obtener solamente la parte de la hora en un campo datetime en sql hacemos:
SELECT CONVERT(VARCHAR,getdate(),108)
Recuerda.. que si es de un campo en especifico solo cambias el [getdate()] por el nombre del [campo]
Aquí una tabla con las diferentes formatos de datetime en sql server
http://www.mssqltips.com/tip.asp?tip=1145
domingo, 1 de junio de 2008
Encriptar secciones del Web.config en asp.net 2.0
Muchas veces tenemos en nuestro web config nuestras credenciales para la conexión a la Base de Datos
Esto es posible encriptarlo de manera que ningún intruso pueda ver esta información:
Hay dos maneras de hacerlo:
La primera es utilizando el aspnet_regiis.exe
Utilizando esta sentencia
aspnet_regiis -pef [sección del web.config] [ruta del web.config]
Ej.: aspnet_regiis –pef ConnectionStrings c:\aplicacion
Si deseamos desencriptar simplemente cambiamos pef por pdf
Ej.: aspnet_regiis –pdf ConnectionStrings c:\aplicacion
Pero si en nuestro servidor no podemos ejecutar comandos por ejemplo si nuestra página esta hosteada en un servidor remoto, podemos hacer esto mismo por programación con la siguiente secuencia
Configuration config = ConfigurationManager.OpenExeConfiguration(Request.ApplicationPath);
ConfigurationSection section = config.Sections["connectionStrings"];
section.SectionInformation.ProtectSection("DataProtectionConfigurationProvider");
config.Save();
lunes, 19 de mayo de 2008
Cannot resolve the collation conflict
el error que nos da el query es: Cannot resolve the collation conflict between "SQL_Latin1_General_CP1250_CI_AS" and "Latin1_General_CI_AS" in the equal to operation.
Esto se resuelve con la clausula COLLATE.
Ej.:
SELECT <>
FROM TableA A
JOIN TableB B ON A.col=B.col
COLLATE SQL_Latin1_General_CP1250_CI_AS
sábado, 10 de mayo de 2008
Shrinking a log file to a specified target size
USE [DB_NAME];
GO
-- Truncate the log by changing the database recovery model to SIMPLE.
ALTER
DATABASE [DB_NAME]
SET RECOVERY SIMPLE;
GO
-- Shrink the truncated log file to 1 MB.
DBCC SHRINKFILE ([DATABASE LOG LOGICAL NAME], [TAMANO FINAL EN MB]);
GO
-- Reset the database recovery model.
ALTER
DATABASE [DB_NAME]
SET RECOVERY FULL;
GO
CLAUSULA: CASE WHEN
CLAUSULA: CASE WHEN
Es parecida al CASE que utilizamos en programación, con la ventaja de que el mismo puede ser utilizado en un campo de la consulta.
Caso de uso: Imagine que tiene un campo dentro de la tabla en el que usted quiere desplegar un valor en específico en el caso en el que ese campo tenga valor (es decir no desea desplegar el valor del campo sino un valor especificado por usted). En ese caso utilizamos el CASE WHEN el campo en cuestión tenga valor le decimos que despliegue la letra "P" de lo contrario que despliegue un espacio.
Ej.:
SELECT [campo1], [campo2], CASE WHEN [campo3] IS NOT NULL THEN 'P' ELSE ' ' END
FROM [tabla]
miércoles, 16 de abril de 2008
AutoRefresh una pagina web
Para autorefrescar una pagina web tenemos dos maneras
La primera es simple HTML
<META HTTP-EQUIV="Refresh" CONTENT="10;URL=http://www.dotnetspider.com";>
Esto se pone en el head de la pagina y se especifica el tiempo en segundos
La segunda por .NET
Response.AppendHeader("Refresh", "10; URL=http://www.dotnetspider.com")
Cheers :D
martes, 18 de marzo de 2008
Cerrar Pagina ASP.NET
Para cerrar una pagina en ASP.NET solo hay que usar el metodo ClientScript que permite usar un script sin tener que ponerlo en el diseño, primero se pone Page.GetType para que agarre el tipo de la pagina, luego el evento y por ultimo el script que se quiere ejecutar.
ClientScript.RegisterStartupScript(Page.GetType(), "OnLoad", "<script language=javascript>" + "window.close()" + "</script>");
lunes, 18 de febrero de 2008
Error en reporte al poner campos con los mismos nombres pero de tablas diferentes
"the value expression for the textbox uses an aggregate expression without a scope. a scope is required for all aggregates used outside of a data region unless the report contains exactly one data set"
Si se nos presenta este error, es probablemente porque estemos agregando campos de varias tablas con el mismo nombre o que estemos usando diferentes tablas de diferentes datasets en el mismo reporte.
En este caso lo que hay que hacer es poner en el expression del campo que este dando error… al final… (el dataset)(underscore)(la tabla)
Ej: =First(Fields!nombre.Value, "dsPrueba_TablaPersonas")
viernes, 15 de febrero de 2008
Cómo instalo el AjaxControlToolkit?
Para instalar el Ajax Control Toolkit
Lo primero que tienes que hacer es descargarlo de ASP.NET/AJAX
- te diriges al ToolBox y le das click derecho + Add Tab
- En el tab que creaste, haces clic derecho + Choose Items…
- En la ventana que aparece, le das a Browse
- Buscas la ruta donde descomprimiste el Ajax Control Toolkit
- Abres la carpeta SampleWebSite, luego BIN
- Y buscas la dll (AjaxControlToolkit.dll)
- Le das a OK.. y ya esta instalado
Ya puedes usar todos los recursos del Ajax Control Toolkit
miércoles, 13 de febrero de 2008
Cambiar Formato de Objetos String
Si queremos cambiar el string que se peresenta en un label o un textbox, solo usamos el metodo string.format
el cual solo afecta la presentacion pero no el valor que tiene.
Ej.:
Esto nos devuelve 40 en vez de 40.00
beca = Convert.ToDecimal(txtBeca.Text)*100;
txtBeca.Text = string.Format(" {0:###} ", beca);