Archive for January, 2010

Como devolver 0 si sum() es null

En algunas ocasiones me a tocado realizar calcualos utilizando el sum() de una consulta o query a la base de datos.
El problema surge cuando este sum() no tiene registros y me devuelve NULL como valor. Aqui es donde entra COALESCE que funciona parecido a un case con el que puedo asignar 0 en el caso que la consulta me devuelva NULL

Ejemplo:

select COALESCE(sum(pode_monto),0) from polizas_descuentos

De no encontrar ningún registra obtendré 0 en lugar de NULL

qsql = “select pole_id, pole_fecha_letra ‘Fecha de pago’, pole_monto Monto, ”
qsql = qsql & ” pole_abono Abono, pole_recibo ‘Recibo Cassa’, ”
qsql = qsql & ” pole_recibo_aseguradora ‘Recibo Aseguradora’, pole_estatus ‘Est.’, ”
qsql = qsql & ” pole_comentario ‘Comentario’, popa_id, poli_id”
qsql = qsql & ” from polizas_letras where poli_id=’” & npoliza & “‘”

Como borrar los archivos de un folder en asp.net

Al generar unos graficos dinamicos que utilizan un archivo xml como fuente de datos me tope que los browsers seguian leyendo el xml del cache por lo que generé un xml con la fecha y hora para que fuera distinto cada vez.

El problema con esto fue que se mantenian los xml viejos y fueron llenando el folder por lo que se debía eliminar los antiguos antes de generar el nuevo xml.

Solución

Private Sub borrar_xml()
‘tengo que borrar los xml para que no se llene el directorio de estadísticas viejas.

Dim direc As New DirectoryInfo(Server.MapPath(“”).ToString)
Dim archivo() As FileInfo
Dim x As Integer
archivo = direc.GetFiles
For x = 0 To archivo.Length – 1
If archivo(x).Name.ToString.Contains(“.xml”) Then
archivo(x).Delete()
End If
Next

End Sub

Como validar que un usuario seleccionó una fecha en un datetimepicker

Uno de mis clientes me pide que le deje un campo tipo datetimepicker vacio para que no se le olvide seleccionar la fecha correcta. Después de investigar y tratar un par de soluciones llegue a la conclusión que la mejor forma de hacer esto es utilizando la propiedad checked. En pocas palabras te indica si la persona a entrado o no en el control datetimepicker.

Solucion:

Al momento de validar los datos utilizas un if que te diga si checked es true.

ejm.

If dtp_fecha.checked then
msgbox (“el usuario seleccionó”)
else
msgbox(“Seleccione una fecha!!!”)
end if

Como agregar un “dropdown” o “combobox” a un gridview en asp.net

Estoy trabajando en una aplicación que necesita que se le asignen clientes a los agentes de una tienda. Esta muestra en un gridview todas las asignaciones y dentro de ese gridview me debe permitir reasignar a otro agente a través de un combobox o dropdown. Por esta razón me vi obligado a ingresar un combobox al gridview.

Esta fue la solución:

En el área de html tenemos:

<asp:GridView ID=”drg_queue” runat=”server” AutoGenerateColumns=”False”
CellPadding=”3″ GridLines=”None” Font-Names=”tahoma”
Font-Size=”10pt” BackColor=”White” BorderColor=”White” BorderStyle=”Ridge”
BorderWidth=”2px” CellSpacing=”1″>
<RowStyle BackColor=”#DEDFDE” ForeColor=”Black” />
<Columns>
<asp:BoundField DataField=”ID” HeaderText=”ID” ></asp:BoundField>
<asp:BoundField DataField=”Cliente” HeaderText=”Cliente” />
<asp:BoundField DataField=”agente” HeaderText=”Agente” >
<asp:TemplateField HeaderText=”Reasignar”>
<ItemTemplate>
<asp:DropDownList ID=”cmb_agentes_asignar” runat=”server”>
</asp:DropDownList>
</ItemTemplate>
</asp:TemplateField>

</Columns>
<FooterStyle BackColor=”#C6C3C6″ ForeColor=”Black” />
<PagerStyle BackColor=”#C6C3C6″ ForeColor=”Black” HorizontalAlign=”Right” />
<SelectedRowStyle BackColor=”#9471DE” Font-Bold=”True” ForeColor=”White” />
<HeaderStyle BackColor=”#ff0000″ Font-Bold=”True” ForeColor=”#ffffff” />
</asp:GridView>

Luego de esto debo llenar el combo box del gridview de la siguiente forma:

Protected Sub drg_queue_SelectedIndexChanged(ByVal sender As Object, ByVal e As GridViewRowEventArgs) _
Handles drg_queue.RowDataBound

If e.Row.RowType = DataControlRowType.DataRow Then
‘—->lleno un datatable con la data que necesito
Dim dt_usuario As New DataTable
qsql = “select usua_id, usua_nombre from usuarios”
qsql = qsql & ” where tien_id=’” & h_tienda.Text & “‘ and usua_activo=1″
qsql = qsql & ” order by usua_nombre”
dt_usuario = fngnl.obtener_datasource_sql(qsql)
‘—->lleno el combobox o dropdownlist…
Dim ddl As DropDownList = e.Row.FindControl(“cmb_agentes_asignar”)
ddl.DataSource = dt_usuario
ddl.DataTextField = “usua_nombre”
ddl.DataValueField = “usua_id”
ddl.DataBind()
End If
End Sub

Como limpiar los TEXTBOX en un form de .net

Me encontraba cansado de estar limpiando a mano los textbox de los formularios cada vez que realizaba una tarea, por lo que decidí buscar una manera fácil de realizarlo.

La solución:

Sólo debes llamar esta sub

private sub limpiar_forma()

for each ctl in miforma.controls
if typeof ctl is textbox then
ctl.text = “”
end if
next

end sub

for each ctl in form1.controls
if typeof ctl is textbox then
ctl.text = “”
end if
next

Como usar now() como default sobre campo datetime en Mysql

Una de las limitantes que posee Mysql 5.1 es la capacidad de utilizar funciones como valores default en los campos. Esto incluye la función now().

Por esta razón si se crea una tabla con un campo tipo datetime y se especifica now() como default se recibirá un error como el siguiente “invalid default value for ‘xxx’

La única solución que he podido encontrar es la siguiente:

Para un escenario con una tabla llamada usuarios_bitacora con un campo datetime llamado usbi_fecha_ingreso, debemos crear un trigger de esta forma:

CREATE TRIGGER login_usuario BEFORE INSERT ON `usuarios_bitacora`
FOR EACH ROW SET NEW.usbi_fecha_ingreso = NOW();

Esto hará que cada registro tenga now() como valor predeterminado.