lunes, 19 de mayo de 2014

Validar un carácter ASCII en una cadena de texto en C#


Con este metodo, se puede validar un carácter por el codigo ACSII de un String, el método recibe una palabra la cual se recorre carácter por carácterpara compararlo con un código ACSII puntual, para este ejemplo se valida el 31 = US ( Separador de unidades ) El cual no es un carácter imprimible, develve el string sin ese caracter encontrado.

public string ValidaAcsii(string texto)
        {
            string respuesta = string.Empty;
            for (int i = 0; i <= texto.Length-1; i++)
            {
                respuesta += (int)texto[i] != 31 ? texto[i].ToString() : string.Empty;
            }
            return respuesta;
        }

jueves, 20 de marzo de 2014

Exportar DataGridView a Excel C#



El siguiente código exporta una grilla DataGridView a un archivo Excel, el objeto dgvLog es el nombre de la grilla que se tiene en el formulario. Para este método se usa la librería
Microsoft.Office.Interop.Excel.dll


 try
            {
                if (dgvLog.DataSource != null)
                {
                    SaveFileDialog fichero = new SaveFileDialog();
                    fichero.Filter = "Excel (*.xls)|*.xls";
                    if (fichero.ShowDialog() == DialogResult.OK)
                    {
                        Microsoft.Office.Interop.Excel.Application aplicacion;
                        Microsoft.Office.Interop.Excel.Workbook libros_trabajo;
                        Microsoft.Office.Interop.Excel.Worksheet hoja_trabajo;
                        aplicacion = new Microsoft.Office.Interop.Excel.Application();
                        libros_trabajo = aplicacion.Workbooks.Add();
                        hoja_trabajo = (Microsoft.Office.Interop.Excel.Worksheet)libros_trabajo.Worksheets.get_Item(1);

                        //exportar cabeceras dgvLog
                        for (int i = 1; i <= this.dgvLog.Columns.Count; i++)
                        {
                            hoja_trabajo.Cells[1, i] = this.dgvLog.Columns[i - 1].HeaderText;
                        }

                        //Recorremos el DataGridView rellenando la hoja de trabajo con los datos
                        for (int i = 0; i < this.dgvLog.Rows.Count - 1; i++)
                        {
                            for (int j = 0; j < this.dgvLog.Columns.Count; j++)
                            {
                                hoja_trabajo.Cells[i + 2, j + 1] = this.dgvLog.Rows[i].Cells[j].Value.ToString();
                            }
                        }

                        libros_trabajo.SaveAs(fichero.FileName, Microsoft.Office.Interop.Excel.XlFileFormat.xlWorkbookNormal);
                        libros_trabajo.Close(true);
                        aplicacion.Quit();
                    }
                }
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.Message);
            }

viernes, 20 de diciembre de 2013

Acceder a un control desde un hilo C#

Para acceder a un control como un botón o un caja de texto se debe deshabilitar la propiedad encargada de esta excepción  CheckForIllegalCrossThreadCalls:

          CheckForIllegalCrossThreadCalls = false;

De esta forma permite acceder a un control.

viernes, 13 de diciembre de 2013

Salir (break) de un FOR (loop) en PL SQL ORACLE

Para salir de un ciclo, usar (EXIT WHEN) por ejemplo:

  DECLARE
 
     dato INTEGER := 10;

 
  BEGIN
       FOR i IN 1..99 LOOP
 
           
dato := dato + 5 ;
 
            DBMS_OUTPUT.PUT_LINE(
dato);
 
            EXIT WHEN
dato > 100; 
 
       END LOOP;
  END;


Para este caso se ejecuta hasta que dato sea mayor q 100, aunque el ciclo sea 99 veces.

martes, 26 de noviembre de 2013

Ver el código de un procedimiento almacenado o paquetes (stored procedures o packages) ORACLE




Esta es la consulta para ver el código fuente de un procedimiento:

     SELECT text FROM all_source WHERE name = 'nombre_procedimiento';

Cuando queremos el BODY de un paquete se hace la siguiente consulta: 

SELECT text FROM all_source WHERE name = 'NOMBRE_PACKAGE' AND type='PACKAGE BODY';


Si queremos ver el listado de objetos de la base de datos hacemos la siguiente consulta:

SELECT * FROM dba_objects 

También se puede filtrar por paquetes, procedimiento o nombre del objeto a buscar:

SELECT * FROM dba_objects where object_type='PACKAGE' and object_name = 'nombre_objeto'