jueves, 30 de marzo de 2017

C# - Llenar Combo Jquery desde la BD

-------------------------------------------------------------------------------------------
.ASPX
-------------------------------------------------------------------------------------------
.javascript
-------------------------------------------------------------------------------------------
   $(document).ready(function () {          
            loadPeriodo();        
        });
        function loadPeriodo() {
            var params = "{}";
            jutils.ajax.loadCombo('listaPeriodo', params, 'cbxAgno', 'ID', 'YEAR');
        }
-------------------------------------------------------------------------------------------
.HTML
-------------------------------------------------------------------------------------------
  <td width="180">
        <span id="spanPer">
             <select id="cbxAgno" name="cbxAgno" class="cont_combo">
             </select>
        </span>
  </td>



// LLENADO EN DURO
  <select id="cbxMes" name="cbxMes" style="font-family: Calibri; font-size: 13px; cursor: default;
width: 135px; height: 21px; margin-left: 0px;">
<option value="1">Abril</option>
<option value="2">Junio</option>
<option value="3">Septiembre</option>
<option value="4">Noviembre</option>
</select>

-------------------------------------------------------------------------------------------
.CS
-------------------------------------------------------------------------------------------

  [WebMethod]
        public static string listaPeriodo()
        {
            var dt = new TributarioWebBc().RecuperaAnos();
            string result = JsonConvert.SerializeObject(dt).Replace("ö", "o");
            return JsonConvert.SerializeObject(dt);
        }




lunes, 27 de marzo de 2017

C# - Split con más de un caracter


var queryPreWhere = strcompletequeryupdate.Split(new string[] {"WHERE"}, StringSplitOptions.None)[0];

var queryPostWhere = strcompletequeryupdate.Split(new string[] { "WHERE" }, StringSplitOptions.None)[1].Replace("= NULL", "IS NULL");

martes, 29 de noviembre de 2016

C# - Encontrar una cadena dentro de una cadena

LA CADENA EN ESTE CASO SERÁ:

valorAuxCadenaCompleta  =   "<INPUT onblur=\"format(this) style=\" id=txtvalorlibro_0 class=caja-datos onkeyup=format(this) onchange=format(this) value=600.000 name=txtvalorlibro ? height:10px;width:120px;text-align:right?>"



                     var valorAuxCadenaCompleta = row["valor_libro"].Value;

  //JC tengo el  valor auxiliar pero con la cadena input completa, asi que obtengo la cadena (valor) de entre la cadena
                    int primero = valorAuxCadenaCompleta.IndexOf("value="); //Última ocurrencia del valor indicado
                    int ultimo = valorAuxCadenaCompleta.LastIndexOf("name="); //Última ocurrencia del valor indicado

                    //ahora tomo el valor de cadena dentro de la cadena.-
                    var valorAux = valorAuxCadenaCompleta.Substring(primero, ultimo - primero);

                    //para no incluir el "value ="
                 var valorAux = valorAuxCadenaCompleta.Substring(primero + 6, ultimo - primero - 6);


  //donde +6  y  - 6 corresponden al largo de "value="

viernes, 28 de octubre de 2016

SQL - Saber que se esta ejecutando en BD desde APP.

DECLARE @BD VARCHAR(100)

--SET @BD = 'leasecom'
SET @BD = 'leaseoper'



select b.name, a.last_execution_time
from sys.dm_exec_procedure_stats a
inner join sys.objects b on a.object_id = b.object_id
where DB_NAME(a.database_ID) = LTRIM(RTRIM(@BD))

ORDER BY 2 DESC

martes, 18 de octubre de 2016

SQL - Último dia del MES en base a una fecha

USE [leaseoper]
GO

/*
       Creado       : 20161018 JC
       Historial    : Ultimo día del mes
       Ejecución    : SELECT leaseoper.dbo.fn_termino_mes (GETDATE())
*/

ALTER FUNCTION fn_termino_mes     (
       @fecha SMALLDATETIME 
       )
RETURNS SMALLDATETIME
AS
BEGIN

DECLARE @inicio_mes        SMALLDATETIME,
             @termino_mes SMALLDATETIME,
             @fecha_mes          CHAR(6)

SELECT @fecha_mes   = CONVERT(CHAR(06), DATEADD(MONTH, - 1, @fecha), 112)
SELECT @inicio_mes  = CONVERT(SMALLDATETIME, @fecha_mes + '01', 112) --primer dia del mes 
SELECT @termino_mes = DATEADD(DAY, - 1, DATEADD(MONTH, 1, @inicio_mes)) --ultimo dia del mes

RETURN @termino_mes
END

SQL - Primer dia del MES en base a una fecha


USE [leaseoper]
GO

/*
       Creado       : 20161018 JC
       Historial    : Primer día del mes
       Ejecución    : SELECT leaseoper.dbo.fn_inicio_mes (GETDATE())
*/


ALTER FUNCTION fn_inicio_mes (
       @fecha SMALLDATETIME )
RETURNS SMALLDATETIME
AS
BEGIN

DECLARE @inicio_mes SMALLDATETIME,
             @fecha_mes CHAR(6)

SELECT @fecha_mes   = CONVERT(CHAR(06), DATEADD(MONTH, - 1, @fecha), 112)
SELECT @inicio_mes  = CONVERT(SMALLDATETIME, @fecha_mes + '01', 112) --primer dia del mes de proceso


RETURN @inicio_mes

END

martes, 20 de septiembre de 2016

C# - Generar Grilla Jquery Standard pasando solo columnas (separadas por ;)

.ASPX (tiene pagina maestra, pero no es necesaria)
_________________________________________________________

<%@ Page Title="Genera Grilla Standard" Language="C#" MasterPageFile="~/Site.Master"
    AutoEventWireup="true" CodeBehind="GeneraGrillaStandard.aspx.cs" Inherits="LeaseOperWeb.Utils.GeneraGrillaStandard" %>

<asp:Content ID="Content1" ContentPlaceHolderID="HeadContent" runat="server">
</asp:Content>
    <asp:Content ID="Content2" ContentPlaceHolderID="HeaderContent" runat="server">
        <table width="100%" border="2">
            <tr>
                <td>
                </td>
                <td align="center">
                    GENERADOR GRILLA STANDARD JQUERY&nbsp;
                </td>
                <td>
                    &nbsp;
                </td>
                <td>
                    &nbsp;
                </td>
            </tr>
            <tr>
                <td>
                    Ingrese Columnas<br />
                    Separador de Columnas &quot;;&quot;
                </td>
                <td>
                    <asp:Button ID="BtnGenerarGrilla" runat="server" Text="Generar Grilla JQUERY" ToolTip="el separador debe ser ;"
                    Height="67px" Width="154px" onclick="BtnGenerarGrilla_Click1"/>
                </td>
                <td>
                    &nbsp;
                </td>
                <td>
                    &nbsp;
                </td>
            </tr>
            <tr>
                <td>
                    &nbsp;
                </td>
                <td>
                    &nbsp;</td>
                <td>
                    &nbsp;
                </td>
                <td>
                    &nbsp;
                </td>
            </tr>
            <tr>
                <td>
                    Grilla Standard
                </td>
                <td>
                    &nbsp;
                    <asp:TextBox ID="txtColumnasEntrada" runat="server" Height="182px"
                        TextMode="MultiLine" Width="574px"></asp:TextBox>
                </td>
                <td>
                    &nbsp;
                </td>
                <td>
                    &nbsp;
                </td>
            </tr>
            <tr>
                <td>
                    &nbsp;
                </td>
                <td>
                    <asp:TextBox ID="txtGrillaJqueryStandard" runat="server" Height="492px" TextMode="MultiLine"
                        Width="726px"></asp:TextBox>
                </td>
                <td>
                    &nbsp;
                </td>
                <td>
                    &nbsp;
                </td>
            </tr>
            <tr>
                <td>
                    &nbsp;
                </td>
                <td>
                    &nbsp;
                </td>
                <td>
                    &nbsp;
                </td>
                <td>
                    &nbsp;
                </td>
            </tr>
            <tr>
                <td>
                    &nbsp;
                </td>
                <td>
                    &nbsp;
                </td>
                <td>
                    &nbsp;
                </td>
                <td>
                    &nbsp;
                </td>
            </tr>
        </table>
    </asp:Content>



.CS
_________________________________________________________

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;

namespace LeaseOperWeb.Utils
{
    public partial class GeneraGrillaStandard : System.Web.UI.Page
    {
        protected void Page_Load(object sender, EventArgs e)
        {
            if (!IsPostBack)
                txtGrillaJqueryStandard.Attributes.Add("onfocus", "this.select();");

        }

        protected void BtnGenerarGrilla_Click1(object sender, EventArgs e)
        {
            try
            {
                if (txtColumnasEntrada.Text.Trim() != string.Empty)
                    PrepararGrilla();
                else
                    Response.Write("<script language='JavaScript'>alert('Debe indicar las columnas para generar Grilla JQuery');</script>");
            }
            catch (Exception ex)
            {
                throw ex;
            }
        }

        private void PrepararGrilla()
        {
            try
            {
                const string quote = "\"";
                var listaColumnas = txtColumnasEntrada.Text.Trim().Split(';');
                var grillaEncabezado = @"var lastsel;" + Environment.NewLine +
                                       @"function defineGrid() {" + Environment.NewLine +
                                       @"try {" + Environment.NewLine +
                                       @" $(" + quote + "#Grid" + quote + ").jqGrid({" + Environment.NewLine +
                                       @"datatype:" + quote + "local" + quote +","+ Environment.NewLine +
                                       @"colNames: [";

                var grillaColumnasEncabezado = string.Empty;
                var tope = listaColumnas.Length - 1;
                for (int j = 0; j < listaColumnas.Length; j++)
                {
                    if (j != tope)
                        grillaColumnasEncabezado = grillaColumnasEncabezado + "'" + listaColumnas[j] + "',";
                    else
                        grillaColumnasEncabezado = grillaColumnasEncabezado + "'" + listaColumnas[j] + "']," + Environment.NewLine;
                }

                var grillaPreColumnas = @"colModel: [";
                const string columnasStandard =
                    @"{name: 'nomCol', index: 'nomCol', align: 'center', width: '100px', editable: false, hidden: false }";
                var grillaColumnaDetalle = string.Empty;
                for (int i = 0; i < listaColumnas.Length; i++)
                {
                    listaColumnas[i] = columnasStandard.Replace("nomCol", listaColumnas[i]);
                    if (i != tope)
                        grillaColumnaDetalle = grillaColumnaDetalle + listaColumnas[i]+","+ Environment.NewLine;
                    else
                        grillaColumnaDetalle = grillaColumnaDetalle + listaColumnas[i] + @"]," + Environment.NewLine;

                }

                var grillaPie = @" //multiselect: true," + Environment.NewLine +
                                "rowNum: 150," + Environment.NewLine +
                                "rowList: [10, 25, 50, 100, 150, 200, 250, 300, 350]," + Environment.NewLine +
                                "pgbuttons: false," + Environment.NewLine +
                                "pager: $('#pager2')," + Environment.NewLine +
                                "viewrecords: true," + Environment.NewLine +
                                "width: 1000," + Environment.NewLine +
                                "shrinkToFit: false," + Environment.NewLine +
                                "autowidth: false," + Environment.NewLine +
                                "forceFit: true," + Environment.NewLine +
                                "height: 200," + Environment.NewLine +
                                "editurl: jutils.pageName()," + Environment.NewLine +
                                "onSelectRow: function (id, status) {" + Environment.NewLine +
                                "if (id && id !== lastsel) {" + Environment.NewLine +
                                " $('#Grid').jqGrid('restoreRow', lastsel);" + Environment.NewLine +
                                "}" + Environment.NewLine +
                                "}" + Environment.NewLine +
                                "});" + Environment.NewLine +
                                "$(" + quote + "#Grid" + quote + ").jqGrid('navGrid'," + quote + "#pager2" + quote + ", { edit: false, add: false, del: false, refresh: false, search: false });" + Environment.NewLine +
                                "} catch (e) {" + Environment.NewLine +
                                "jutils.showError(e, arguments.callee.name);" + Environment.NewLine +
                                "}" + Environment.NewLine +
                                "}";


                ArmarGrilla(grillaEncabezado, grillaColumnasEncabezado, grillaPreColumnas, grillaColumnaDetalle,
                    grillaPie);
            }
            catch (Exception ex)
            {
                throw ex;
            }
        }

        private void ArmarGrilla(string grillaEncabezado, string grillaColumnasEncabezado, string grillaPreColumnas, string grillaColumnaDetalle, string grillaPie)
        {
            txtGrillaJqueryStandard.Text = grillaEncabezado + grillaColumnasEncabezado + grillaPreColumnas +
                                           grillaColumnaDetalle + grillaPie;

            txtGrillaJqueryStandard.Focus();
        }


    }
}

.ASPX (representación de la grilla en una pantalla)
_________________________________________________________
 <tr>
                    <td class="modul_bordes">
                        <div id="printerElement2">
                            <table id="Grid">
                                <tr>
                                    <td>
                                    </td>
                                </tr>
                            </table>
                        </div>
                        <div id="pager2">
                        </div>
                    </td>
                    <td width="10">
                    </td>
</tr>


viernes, 2 de septiembre de 2016

SQL - update select con columnas agregadas (suma)

--NC VALOR JC
UPDATE #ficha_det
SET valor_nota_credito = tablaAdd.campoSum
FROM #ficha_det det, (SELECT a.num_factura,a.rut_proveedor, nc.tipo_docum, SUM(ISNULL(nc.neto,0)+ISNULL(nc.exento,0))  campoSum
                          FROM #ficha_det a, t_nota_credito_debito nc
                          WHERE nc.num_factura=a.num_factura   
 AND nc.rut_proveedor=a.rut_proveedor AND tipo_docum=1
                         GROUP BY a.num_factura,a.rut_proveedor, nc.tipo_docum )  tablaAdd
WHERE det.num_factura = tablaAdd.num_factura AND det.rut_proveedor = tablaAdd.rut_proveedor
AND tablaAdd.tipo_docum = 1


Otro Ejemplo:


--dias mora
UPDATE #universo
SET dias_mora = tablaAdd.dias_mora
FROM leaseoper..t_cuotas cu , (SELECT DATEDIFF(DAY,MIN(c.fecha_vencimiento),GETDATE()) AS dias_mora, u.operacion FROM leaseoper..t_cuotas c ,#universo u
WHERE c.operacion = u.operacion
GROUP BY dias_mora, u.operacion ) tablaAdd
WHERE cu.operacion = tablaAdd.operacion AND #universo.operacion = cu.operacion AND
 cu.estado IN (1,3)


Otro Ejemplo:
--total de nominas
  UPDATE #nominas_universo
   SET total_nomina = tablaAdd.campoSum
   FROM #nominas_universo uni , (SELECT b.numero_nomina, (SUM(ISNULL(b.monto,0))) campoSum
FROM #nominas_universo a , dbo.t_req_pago b
WHERE a.numero_nomina = b.numero_nomina
GROUP BY b.numero_nomina )tablaAdd
   WHERE uni.numero_nomina = tablaAdd.numero_nomina

jueves, 18 de agosto de 2016

C# - Crystal Reports Setear número en reporte.-


ToText(numero a setear, decimales, separador de miles, separador decimal)


ENTRADA 10.000,00

Totext(ToNumber({Table.operacion}),0,"")

SALIDA 10000


------------------------------------------------

ENTRADA 10.000,00

Totext(ToNumber({Table.operacion}),0,".")

SALIDA 10.000


------------------------------------------------

ENTRADA 10.000,00

Totext(ToNumber({Table.operacion}),2,".",",")

SALIDA 10.000,00

martes, 16 de agosto de 2016

C# - Editar columnas en DataTable de solo lectura (table.Load())

foreach (DataColumn col in sdtDetalleBien.Columns)
                    {
                         col.ReadOnly = false;

                    }