Respuestas de foro creadas
-
AutorEntradas
-
03/08/2024 a las 12:52 en respuesta a: SQL eliminar registros tabla si campo de otra está vacío [RESUELTO] #50566alonsojpdSuperadministrador
Sí que es posible, antes de ejecutar la consulta de eliminación, por seguridad, revisa que esta consulta te devuelva los registros que quieres:
MySQL123select count(*) from clientes cleft join facturas f on f.codigocliente = c.codigowhere f.codigocliente is null;Si la consulta anterior te devuelve los datos correctos, puedes «convertirla» en una consulta de eliminación, como la siguiente, para que elimine todos los registros con el filtro indicado:
MySQL123delete c from clientes cleft join facturas f on f.codigocliente = c.codigowhere f.codigocliente is null;alonsojpdSuperadministradorAdemás, si abres el Visor de eventos (eventvwr.msc), habrá eventos con error de origen SideBySide, con este error:
Error al generar el contexto de activación para «C:\Oracle\instantclient_11_2\SQORAS32.DLL». No se encontró el ensamblado dependiente Microsoft.VC80.MFC,processorArchitecture=»amd64″,publicKeyToken=»1fc8b8e3b»,type=»win32″,version=»8.0.50727.762″. Use sxstrace.exe para obtener un diagnóstico detallado.
Indicando, además, la versión que falta de Microsoft Visual C++ Redistributable, en este ejemplo para el driver ODBC de Oracle 11g, la versión VC80, que es la equivalente a la Visual C++ 2005.
alonsojpdSuperadministradorLa causa habitual del error 14001 en el ODBC de Oracle es que no has instalado el Visual C++ Redistributable correspondiente. Para el caso de Oracle 11g es la versión 2005. En concreto esta:
Microsoft Visual C++ 2005 Service Pack 1 Redistributable Package MFC Security Update
La encontrarás para su descarga en la web oficial de Microsoft. Descarga el instalador e instálala. Una vez instalada se debería corregir el problema.
02/28/2024 a las 13:39 en respuesta a: Error checksum from the provided manifest ovf VMware [RESUELTO] #50472alonsojpdSuperadministradorEl error se debe a que VMware hace una comprobación (checksum) de los ficheros a subir, del hash, con el que haya en el fichero .mf, que tendrá un contenido similar a este:
SHA256(serverfactura.ovf)= 70a566672baad4449dfb7e081025f5552436
SHA256(serverfactura-disk1.vmdk)= 7eadfd3839e92bc496eb5657d3186775d4ec5a5095
SHA256(serverfactura-file1.nvram)= 95f55f0e6beab6a864f57295d81aedb7ae239c3e0e67Lo más sencillo es que NO selecciones el fichero .mf, así no hará la comprobación y te dejará continuar.
02/04/2024 a las 10:14 en respuesta a: Obtener cuatro números seguidos en una línea regex C# [RESUELTO] #50399alonsojpdSuperadministradorPuedes usar la siguiente expresión regular:
1(?<=no derivadas de incapacidad laboral\n)+[0-9]{4}Básicamente, lo que hace es es buscar la línea «no derivadas de incapacidad laboral» y, hace un salto de línea y busca los cuatro números siguientes.
En .Net C# quedaría algo así:
C#123456789if (formato == "IRPF"){Regex regEjercicio = new Regex(@"\b((?<=no derivadas de incapacidad laboral\n)+[0-9]{4})");Match matEjericio = regEjercicio.Match(texto);if (matEjericio.ToString() == "")año = "----";elseaño = matEjericio.ToString();}En la variable «año» quedará almacenado el ejercicio.
01/24/2024 a las 19:33 en respuesta a: Silenciar error Python InsecureRequestWarning Unverified HTTPS request RESUELTO #50336alonsojpdSuperadministradorPara silenciar los warning añade esto al principio del programa Python, justo después de tu línea «import requests»:
Python123456import requestsimport urllib3urllib3.disable_warnings()# Resto del código PythonalonsojpdSuperadministradorEn el ejemplo Python anterior, usamos tanto el # para comentar una línea como «»» para comentar varias líneas juntas.
alonsojpdSuperadministradorPuedes usar tres comillas dobles seguidas para inicio de las líneas a comentar («»») y otras tres comillas dobles («»») para el final. Por ejemplo:
Python123456789101112131415161718192021222324252627# ProyectoA.com Aplicación Python para obtener el estado de un sitio web y devolver los datos en formato tentacle para Pandora FMS# Versión 1.0import argparseimport requestsimport urllib3# Comentario de una línea"""Prueba de comentario de varias líneaslínea dos comentadalínea tres comentada"""urllib3.disable_warnings()# Mostrar resultado en consola con formato tentacle de Pandora FMSdef MostrarResultado(resultado, url, nombreModulo, mensaje):print("<module>")print("<name><![CDATA[{0}]]></name>".format(nombreModulo))print("<type><![CDATA[generic_proc]]></type>")print("<data><![CDATA[{0}]]></data>".format(resultado))print("<description><![CDATA[Comprobar si el sitio web {0} esta activo. {1}]]></description>".format(url, mensaje))# print("<unit>%</unit>")# print("<min_critical>95</min_critical>")# print("<max_critical>100</max_critical>")print("</module>")01/23/2024 a las 12:24 en respuesta a: Uso de curl para saber si una web está funcionando [RESUELTO] #50320alonsojpdSuperadministradorSi la web es HTTPS, puedes añadir el parámetro –insecure al comando curl, quedando:
Shell1curl --insecure -Is https://proyectoa.com | grep "200 OK" | wc -lQuedando el módulo de Pandora:
TeX123456module_beginmodule_name Check_HTTP_GETmodule_type generic_procmodule_description Respuesta GET HTTP por Telnet de servidor web (200 OK)module_exec curl --insecure -Is https://proyectoa.com | grep "200 OK" | wc -lmodule_end01/20/2024 a las 10:01 en respuesta a: Listar carpetas raíz ordenadas por tamaño Linux [RESUELTO] #50315alonsojpdSuperadministradorPuedes usar este comando, te mostrará las carpetas de nivel 1 (no las subcarpetas) y ordenadas por tamaño, de menor a mayor, de la carpeta que le indiques, si quieres para todas las carpetas raíz, ejecuta este comando:
Shell1sudo find / -maxdepth 1 -type d -exec du -sh {} \; | sort -halonsojpdSuperadministradorPuedes usar el siguiente comando, te mostrará todas las carpetas y las mostrará ordenadas de menor a mayor tamaño, quedando las más grandes al final, cerca del cursor en la línea de comandos, así puedes observar las «importantes», las que más ocupan, más rápido:
Shell1du -h * | sort -hTen en cuenta que el comando anterior te mostrará todas las carpetas y subcarpetas también, por lo que el listado puede ser grande.
01/20/2024 a las 09:39 en respuesta a: Error 0x80070643 en actualización de Windows 10 [RESUELTO] #50308alonsojpdSuperadministradorAsí es, con toda seguridad sacarán algún parche nuevo que corrija este problema sin necesidad de tener que aplicar todos los pasos del tutorial. Esto solo lo haremos en aquellas organizaciones donde los parches de seguridad se deban aplicar con rigurosidad. En otros casos, esperaremos a que Microsoft publique una solución automática.
01/20/2024 a las 09:35 en respuesta a: Error 0x80070643 en actualización de Windows 10 [RESUELTO] #50305alonsojpdSuperadministradorHola, sigue los pasos del siguiente tutorial, donde explicamos a qué se debe este error 0x80070643 y cómo solucionarlo:
Solución al error 0x80070643 de la actualización KB5034441 de Windows 10
01/20/2024 a las 09:29 en respuesta a: Cómo hacer ejecutable con fichero .py en Linux [RESUELTO] #50302alonsojpdSuperadministradorHola, sí es posible, sigue las instrucciones de este tutorial, donde explicamos paso a paso cómo generar un ejecutable portable Linux a partir de código fuente Python:
alonsojpdSuperadministradorHola Yusep, el Framework se puede adaptar a cualquier motor de base de datos, pero hay que hacerle algunos ajustes. Para el caso de PosgreSQL, tendrás que añadir el módulo en PHP para soporte de PostgreSQL y, en el Framework, editar aquellos ficheros .php que lleven funciones propias de MySQL y reemplazarlas por las de PosgreSQL.
Por ejemplo, el fichero act_std.php usa la función mysqli_query que tendrías que modificar por la función pg_query.01/02/2024 a las 18:10 en respuesta a: Obtener año y mes en un select SQL desde MySQL/MariaDB [RESUELTO] #50120alonsojpdSuperadministradorTambién puedes usar Extract(Month from ) y Extract(Year from ), quedando el SQL:
MySQL123select Extract(Month from c.fecha) Mes, Extract(Year from c.fecha) Añofrom contabilidad cwhere c.debe > 10001/02/2024 a las 18:06 en respuesta a: Obtener año y mes en un select SQL desde MySQL/MariaDB [RESUELTO] #50119alonsojpdSuperadministradorPuedes usar la función Month() para obtener el mes de una fecha y Year() para obtener el año. Un ejemplo de uso de estas funciones podría ser:
MySQL123select Month(c.fecha) Mes, Year(c.fecha) Añofrom contabilidad cwhere c.debe > 10001/02/2024 a las 17:38 en respuesta a: Convertir SID (array de bytes) a string en C# [RESUELTO] #50118alonsojpdSuperadministradorEn este artículo tenemos un ejemplo completo que obtiene varios atributos del computer en AD DS, entre ellos, el SID:
Obtener todos los atributos del objeto Computer de Active Directory AD DS con C#
12/19/2023 a las 13:23 en respuesta a: Convertir SID (array de bytes) a string en C# [RESUELTO] #50075alonsojpdSuperadministradorCambia estas líneas:
C#123456//Obtenemos objectSidif (resultadoBusqueda.Properties.Contains("objectSid")){var sid = resultadoBusqueda.Properties["objectSid"][0];objectSid = sid.ToString();}por:
C#123456//Obtenemos objectSidif (resultadoBusqueda.Properties.Contains("objectSid")){byte[] sid = (byte[])resultadoBusqueda.Properties["objectSid"][0];objectSid = new SecurityIdentifier(sid, 0).ToString();}Añade al Using:
C#1using System.Security.Principal;12/04/2023 a las 09:02 en respuesta a: Asignar valor null a un campo de una tabla MySQL MariaDB en Delphi 7 [RESUELTO] #50032alonsojpdSuperadministradorPara asignar un valor null a un campo de una base de datos, usando parámetros (como lo has hecho tú), sería usar la propiedad «Value», quedando:
Delphi/Pascal12moduloDatos.tSQL.ParamByName('pFecha').DataType := ftDateTime;moduloDatos.tSQL.ParamByName('pFecha').Value := null;Si necesitas usar un condicional para establecer el valor null al campo fecha o bien el valor de la fecha actual, sería:
Delphi/Pascal12345moduloDatos.tSQL.ParamByName('pFecha').DataType := ftDateTime;if __condicion__ thenmoduloDatos.tSQL.ParamByName('pFecha').Value := null;elsemoduloDatos.tSQL.ParamByName('pFecha').AsDateTime := now;De esta forma, si se cumple la condición se asignará el valor null al campo «fecha» y si no se cumple, se asignará la fecha actual del equipo.
11/17/2023 a las 14:18 en respuesta a: Procedimiento que obtenga iniciales de un nombre y apellidos Delphi [RESUELTO] #49969alonsojpdSuperadministradorPuedes usar la siguiente función, a la que le pasamos el nombre y los apellidos separados y devuelve las iniciales. Aunque no obtuviéramos el nombre y los apellidos separados, el procedimiento sería el mismo, dado que separará cada palabra por los espacios que contenga, independientemente de si es nombre o apellidos:
Delphi/Pascal123456789101112131415161718192021222324252627282930Function obtenerIniciales(nombre : string; apellido1 : string; apellido2 : string) : string;vari : integer;iniciales, inicialesNombre, inicialesApellido1, inicialesApellido2 : string;nombres : TStringList;beginnombres := TStringList.Create;nombres.Delimiter := ' ';nombres.DelimitedText := nombre;//Recorremos los nombres obtenidos y desechamos los artículos que no sean nombresinicialesNombre := '';for i := 0 to nombres.Count - 1 dobegin//Suponemos que no hay nombres con dos o un carácterif (Length(nombres.Strings[i]) > 2) thenif ((AnsiLowerCase (nombres.Strings[i]) <> 'del') and(AnsiLowerCase (nombres.Strings[i]) <> 'los') and(AnsiLowerCase (nombres.Strings[i]) <> 'las')) theninicialesNombre := inicialesNombre + copy (nombres.Strings[i], 0, 1);end;//Como tenemos separados los apellidos, cogemos el primer carácter de cada uno de ellosif (apellido1 <> '') theninicialesApellido1 := copy(apellido1, 0, 1);if (apellido2 <> '') theninicialesApellido2 := copy(apellido2, 0, 1);iniciales := inicialesNombre + inicialesApellido1 + inicialesApellido2;//Quitamos las posibles tildes/acentosiniciales := quitarTildes (iniciales);result := iniciales;end;11/17/2023 a las 14:06 en respuesta a: Procedimiento que quite las tildes/acentos a un texto en Delphi [RESUELTO] #49965alonsojpdSuperadministradorPuedes usar la siguiente función, a la que le pasas el texto y te devuelve el mismo texto, pero sin tildes en las vocales:
Delphi/Pascal12345678910111213141516function quitarTildes (texto : string) : string;constvocalesTildeMin: array [1..5] of string = ('á', 'é', 'í', 'ó', 'ú');vocalesSinTildeMin: array [1..5] of string = ('a', 'e', 'i', 'o', 'u');vocalesTildeMay: array [1..5] of string = ('Á', 'É', 'Í', 'Ó', 'Ú');vocalesSinTildeMay: array [1..5] of string = ('A', 'E', 'I', 'O', 'U');vari: integer;beginfor i := 1 to 5 dobegintexto := StringReplace(texto, vocalesTildeMin[i], vocalesSinTildeMin[i], [rfReplaceAll]);texto := StringReplace(texto, vocalesTildeMay[i], vocalesSinTildeMay[i], [rfReplaceAll]);end;Result := texto;end;Un ejemplo de uso:
Delphi/Pascal123iniciales := inicialesNombre + copy(apellido1, 0, 1) + copy(apellido2, 0, 1);//Quitamos las posibles tildes/acentosiniciales := quitarTildes (iniciales);11/10/2023 a las 09:30 en respuesta a: Errores eliminar carpeta de más de 260 caracteres en Windows [RESUELTO] #49916alonsojpdSuperadministradorEfectivamente, Windows tiene un problema con la longitud de las carpetas y ficheros, que cuando la suma de ambos supera los 260 caracteres, te dará problemas para eliminar, cortar y trabajar con estos ficheros. Es un error que viene arrastrando desde hace años y no han solucionado eficientemente aún, en el año 2023.
Tal y como indicas, si tienes miles de ficheros en carpetas y subcarpetas, si intentas eliminar desde el Explorador de Windows, te tardará mucho en iniciar el proceso porque hace cálculos del número de ficheros y carpetas, así como de su tamaño, antes de eliminar, para mostrarte un progreso.
Para eliminar de forma rápida y sin errores ficheros y carpetas de más de 260 caracteres, lo mejor es que uses una ventana de Símbolo de sistema (MS-DOS) y el comando rmdir. Dado que desde las ventanas de MS-DOS se usarán los nombres cortos de MS-DOS de las carpetas y así podrás eliminarlas sin problemas.
Por ejemplo, para eliminar la carpeta C:\Temp\Carpeta_Larga y todas sus subcarpetas y ficheros, podremos usar el comando:
MS DOS1rmdir /S /Q C:\Temp\Carpeta_Larga10/31/2023 a las 08:41 en respuesta a: Obtener información de estado de proceso PowerShell [RESUELTO] #49870alonsojpdSuperadministradorPuedes usar WMI para ello. Un ejemplo del uso de WMI en un comando PowerShell para obtener el estado de ejecución del proceso «WinRM»:
PowerShell1Get-WmiObject -Class win32_service | Where-Object {$_.name -like "WinRM"}Devolverá algo así como:
TeX123456ExitCode : 1077Name : WinRMProcessId : 0StartMode : ManualState : StoppedStatus : OK10/30/2023 a las 20:26 en respuesta a: Desactivar cortafuegos Windows por comando PowerShell [RESUELTO] #49867alonsojpdSuperadministradorPara desactivar el cortafuegos de Windows en todos los perfiles (dominio, público y privado), desde PowerShell, puedes ejecutar el siguiente comando:
PowerShell1Set-NetFirewallProfile -Profile Domain,Public,Private -Enabled falseY para volver a habilitarlo ejecuta:
PowerShell1Set-NetFirewallProfile -Profile Domain,Public,Private -Enabled true -
AutorEntradas