Thursday, December 30, 2010

XML

Public Shared Sub EscribeLog(ByRef servicio As ServiciosADAM, ByVal reporte As String, ByVal ruta As String, ByVal htDescripcion As Hashtable)
        Dim sql As String
        Dim diccionario As IDictionaryEnumerator
        Dim strBuilder As New System.Text.StringBuilder
        Dim writerSettings As New System.Xml.XmlWriterSettings()
        ' Crear diccionario para poder ser recorrido en la generación de la cadena XML
        diccionario = htDescripcion.GetEnumerator
        ' Crear cadena XML
        With writerSettings
            .Indent = True
            .IndentChars = New String(" "c, 4)
        End With
        Dim writer As System.Xml.XmlWriter = System.Xml.XmlWriter.Create(strBuilder, writerSettings)
        With writer
            .WriteStartElement("Descripcion")
            ' Agregar los componentes del diccionario
            While diccionario.MoveNext
                .WriteElementString(diccionario.Key, diccionario.Value)
            End While
            .WriteEndElement()
        End With
        writer.Flush()
        writer.Close()
        ' Eliminar la primera linea de la cadena XML
        Dim cadenaSaltoLinea As String() = Split(strBuilder.ToString(), vbNewLine)
        Dim descripcion As String
        descripcion = String.Join(vbNewLine, cadenaSaltoLinea, 1, cadenaSaltoLinea.Length - 1)
        ' Llamar al procedimiento almacenado
        Try
            sql = "EXEC " & spLogNameEcuador & " "
            sql += "'" & reporte & "', "
            sql += "'" & ADAM.Framework.Windows.ConexionActual.Usuario & "', "
            sql += "'" & ruta & "', "
            sql += "'" & descripcion & "'"
            If (servicio.ejecutaConsulta(sql, ConexionActual.conexionBD) <> 1) Then
                Throw New Exception("La generación del reporte no pudo ser registrada en el log de la base de datos.")
            End If
        Catch ex As Exception
            MuestraErrorAdam(ex)
        End Try
End Sub






---------------------------
VB.NET

For Each dr As Janus.Windows.GridEX.GridEXRow In gridTrabajadores.GetCheckedRows()
            trabajador = dr.Cells("trabajador").Value
            trabajadoresXML += ""
        Next


        Try
            sql = "EXEC "
            sql += Constantes.pe_fpv5_sp_obten_Afp
            sql += " '" + cboCompania.Value + "', "
            sql += " '" + trabajadoresXML + "', "
            sql += cboAnio.Value.ToString() + ", "
            sql += cboPeriodo.Value.ToString()
            DsRepAFPExcel = Servicio.fillConsultaSQL(sql, ADAM.Framework.Windows.ConexionActual.conexionBD)



SQL

-- SELECT trabajador = T.item.value('@trabajador', 'char(10)')
-- FROM   @lsTrabajadorLista.nodes('/info') AS T(item) 






otras paginas
http://www.expert.tc/topic.php?id=128240
http://www.codeguru.com/csharp/csharp/cs_data/xml/article.php/c4227
http://www.codeguru.com/csharp/csharp/cs_data/xml/article.php/c4227
http://social.msdn.microsoft.com/Forums/en/sqlxml/thread/357feaac-892b-4aa9-92f6-9f07d388239f
http://msdn.microsoft.com/en-us/library/ms345110(v=sql.90).aspx

Tuesday, October 26, 2010

Obtener resultado en string separado por comas

DECLARE @var AS NVARCHAR(100)


SELECT @var = COALESCE(convert(nvarchar,@var) + ',' , '') + CONVERT(nvarchar,tabla.id_calendario) FROM
(SELECT distinct(id_calendario) FROM calendario_procesos WHERE anio = 2010 AND tipo_nomina = 'PJ') tabla


SELECT @var

Friday, October 15, 2010

sp_executesql

SET @sql = 'SELECT @rpta = SUM(importe)
FROM   ' + @ls_tabla + '
WHERE  concepto = (SELECT valor FROM FPV5_EC_parametros_maestro WHERE id = 150)
       AND trabajador IN (SELECT DISTINCT(tra_cod)
                          FROM   #trabajadores)'


EXEC sp_executesql @sql,
     N'@rpta float output',
     @rpta = @hor_tra OUTPUT


SET @hor_tra = COALESCE(@hor_tra, 0)

Wednesday, October 13, 2010

Obtener diferentes valores de un mismo campo - Múltiples Joins

Obtener diferentes valores de un mismo campo - Múltiples Joins

SELECT ROW_NUMBER() OVER(ORDER BY t.trabajador) AS 'nro',
       t.trabajador,
       CASE 
            WHEN t.sexo = 1 THEN 'M'
            ELSE 'F'
       END AS sexo,
       SUM(a.importe) AS importe_1165,
       SUM(b.importe) AS importe_1006,
       SUM(c.importe) AS importe_601
       
FROM   trabajadores t
       INNER JOIN (
                SELECT trabajador,
                       concepto,
                       SUM(importe) AS importe
                FROM   transacciones_ns
                WHERE  compania = 'A'
                       AND clase_nomina = 'AD'
                       AND id_calendario = 209
                       AND concepto = 1165
                       AND trabajador = 90
                GROUP BY
                       trabajador,
                       concepto
            ) a
            ON  a.trabajador = t.trabajador
       INNER JOIN (
                SELECT trabajador,
                       concepto,
                       SUM(importe) AS importe
                FROM   transacciones_ns
                WHERE  compania = 'A'
                       AND clase_nomina = 'AD'
                       AND id_calendario = 209
                       AND concepto = 1006
                       AND trabajador = 90
                GROUP BY
                       trabajador,
                       concepto
            ) b
            ON  b.trabajador = t.trabajador
            INNER JOIN (
                SELECT trabajador,
                       concepto,
                       SUM(importe) AS importe
                FROM   transacciones_ns
                WHERE  compania = 'A'
                       AND clase_nomina = 'AD'
                       AND id_calendario = 209
                       AND concepto = 601
                       AND trabajador = 90
                GROUP BY
                       trabajador,
                       concepto
            ) c
            ON  c.trabajador = t.trabajador
GROUP BY 
t.trabajador,
sexo
                
También se puede revisar el artículo siguiente:
http://efreedom.com/Question/1-1172926/SQL-Issue-Calculating-Percentages-Using-Multiple-Joins-Table                
                

Thursday, September 9, 2010

sql beautifier

http://www.ubitsoft.com/products/t-sql-beautifier/

http://www.sqlinform.com/online.phtml

http://www.dpriver.com/pp/sqlformat.htm

sql assistant (best)

Wednesday, September 8, 2010

sql tables


IF OBJECT_ID('tempdb..#reporte') IS NULL
    BEGIN
        CREATE TABLE #reporte
        (
            tra_tot  INT,
            ing_tot  FLOAT,
            hor_tra  FLOAT,
            hor_ext  FLOAT
        )
    END
  
  
        DECLARE @lt_trabajadores TABLE (
                trabajador CHAR(10),
                registro_fiscal VARCHAR(20),
                nombre VARCHAR(100),
                clave_unica VARCHAR(25),
                fecha_baja VARCHAR(40),
                concepto SMALLINT,
                importe DECIMAL
        )



Otros archivos de interés:


Leer 1
Leer 2

Friday, September 3, 2010

T SQL - usar otra bd en tiempo de ejecucion

           --    FROM   PUNKUADAM.dbo.trabajadores t
           --           INNER JOIN punkuadam.dbo.vw_nombre_separado vns
           --                ON  vns.trabajador = t.trabajador
           --           INNER JOIN punkuadam.dbo.transacciones_ns tn
           --                ON  tn.trabajador = t.trabajador
           --           INNER JOIN punkuadam.dbo.transacciones_ns tn2
           --                ON  tn2.trabajador = t.trabajador
           --           INNER JOIN punkuadam.dbo.plazas p
           --                ON  p.trabajador = t.trabajador
           --           INNER JOIN punkuadam.dbo.puestos p2
           --                ON  p.puesto = p2.puesto