3ENGINE

Programación y otros cachivaches

Archivo

Página 26/104

Tecnologia

ORA-12640: Authentication adapter initialization failed / ORA-12638: Fallo al recuperar los credenciales


Si Oracle te devuelve un error como estos:

ORA-12640: Authentication adapter initialization failed
ORA-12638: Fallo al recuperar los credenciales

Es debido a la configuración del parámetro SQLNET.AUTHENTICATION_SERVICES que se encuentra en sqlnet.ora (en mi caso este archivo se encuentra en C:\oracle\ora81\network\ADMIN).

Este parámetro permite uno o mas servicios de autentificación.

  • NTS: Autentificación de Windows sin contraseña.
  • NONE: Cualquier usuario valido con contraseña accede.
  • ALL: Cualquier método de autentificación es valido.

Prueba a poner NONE o ALL y el error dejará de aparecer.




Tecnologia

Convertir un datetime a cadena formateada en SQL Server


Si necesitas mostrar en un select una cadena de tipo datetime y quieres cambiar su formato, puedes hacer servir la función CONVERT para SQL Server.

CONVERT(data_type(length),data_to_be_converted,style)

Parámetros style aceptados:

ID Estilo Formato Estilo
100 o 0 mon dd yyyy hh:miAM (o PM)
101 mm/dd/yy
102 yy.mm.dd
103 dd/mm/yy
104 dd.mm.yy
105 dd-mm-yy
106 dd mon yy
107 Mon dd, yy
108 hh:mm:ss
109 o 9 mon dd yyyy hh:mi:ss:mmmAM (o PM)
110 mm-dd-yy
111 yy/mm/dd
112 yymmdd
113 o 13 dd mon yyyy hh:mm:ss:mmm(24h)
114 hh:mi:ss:mmm(24h)
120 o 20 yyyy-mm-dd hh:mi:ss(24h)
121 o 21 yyyy-mm-dd hh:mi:ss.mmm(24h)
126 yyyy-mm-ddThh:mm:ss.mmm(sin espacios)
130 dd mon yyyy hh:mi:ss:mmmAM
131 dd/mm/yy hh:mi:ss:mmmAM

Ejemplo:

SELECT CONVERT(VARCHAR(24),GETDATE(),113) 

Referencias:
What are the valid styles for converting datetime to string?
SQL Server CONVERT() Function
How to convert from string to datetime?




Visto en la calle

Grafittis en Bon Pastor – Barcelona


Grafittis reivindicativos en contra del plan de remodelación del barrio de Bon Pastor en Barcelona




Tecnologia

Ejecutar una macro externa en un .csv de Excel y grabar el resultado en formato .xls de Excel


Si necesitais darle un poco de vida y colorido a un fichero en formato .csv de Excel. Quizas os sirva este ejemplo. Se trata de ejecutar una macro previamente grabada para darle un nuevo formato a la hoja Excel (colorear columnas, cambiar de tamaño las letras, crear gráficos, etc…) para despues grabar el resultado en formato .xls. Comparto este código escrito en c# por si puede ser útil.

Requisito 1: antes de ejecutar el código es importante habilitar la opción «Confiar en el acceso a proyectos de Visual Basic» en la pestaña «Editores de confianza» que se encuentra en Herramientas>Macro> Seguridad.

Requisito 2: debeis tener instaladas las PIAS para Excel.

Código:


    using Microsoft.Office.Interop.Excel;
    using Microsoft.Vbe.Interop;
    .
    .
    public static class MacroExcel
    {
        /*
         * ejecuta macro sobre un csv y devuelve path del xls resultante
         */        public static string abrirCsvEjecutarMacroyGrabarXls(string pathFicheroCsv, string pathMacro, string nombreFuncionMacro)
        {            
            object missing = System.Reflection.Missing.Value;
            string pathXls = Path.ChangeExtension(pathFicheroCsv, "xls");
            //
            // abrir csv
            //
            ApplicationClass excel = new ApplicationClass();
            Workbooks books = excel.Workbooks;
            _Workbook book = books.Open(pathFicheroCsv, missing, missing, missing, missing, missing, missing, missing, missing,
                            missing, missing, missing, missing, missing, missing);
            try
            {
                //                      
                // abrir macro
                //
                VBComponentClass vbComp = (VBComponentClass)excel.VBE.ActiveVBProject.VBComponents.Add(vbext_ComponentType.vbext_ct_StdModule);
                vbComp.CodeModule.AddFromFile(pathMacro);
                //
                // ejecutar macro
                // 
                excel.Run(nombreFuncionMacro, missing, missing, missing, missing, missing, missing, missing,
                    missing, missing, missing, missing, missing, missing, missing, missing, missing, missing,
                    missing, missing, missing, missing, missing, missing, missing, missing, missing, missing,
                    missing, missing, missing);
                //
                // eliminar la macro del xls
                //
                vbComp.CodeModule.DeleteLines(1, vbComp.CodeModule.CountOfLines);
                //
                // grabar xls
                //
                File.Delete(pathXls);
                book.SaveAs(pathXls, Microsoft.Office.Interop.Excel.XlFileFormat.xlWorkbookNormal, missing,
                    missing, missing, missing, XlSaveAsAccessMode.xlNoChange, missing, missing, missing, missing, missing);
            }
            finally
            {
                books.Close();
            }
            return pathXls;
        }
    }

Referencias:
Enlace 2
Enlace 1