All posts by John Harold Belalcazar Lozano

Software Developer Engineer, since 1995. Husband and father of 2 girls. Learning everyday.

Huawei a volar? Huawei to fly?


Que creen que va a pasar con Huawei? acaso no se acuerdan que cuando las dificultades llegan las mejores respuestas aparecen? Huawei de seguro tiene todo listo para responder, pero no lo hacían porque no había necesidad….. ya apareció la necesidad. Google y usa es su culpa, el gigante va a crecer más ahora.

What you think about Huawei? don’t you remember when difficulties arrives the best things will appear? Huawei for sure have everything ready to answer. But they never did anything like that because they weren’t needing that, now, it’s different. Google and usa is your fault, the giant is going to grow now…

huawei-china-5g

Advertisements

Filas a Columnas SQL Server / Rows to Cols in SQL Server


Tenemos una consulta de 4 columnas y las 2 primeras las necesitamos tal como se ven pero de las 2 siguientes la 3ra la necesitamos como columnas según el contenido que tenga y la cuarta como los datos que van en dicha nueva columna. De tal forma que si en la 3ra columna hay 3 o 5 diferentes datos, se crearán 3 o 5 nuevas columnas. A continuación unos datos de ejemplo para entender bien el proceso. / We have 4 Cols and the first 2 we need them exactly as they are, but the next 2 this way, the third must be new colum as different value it has, the fourth is the data for the columns created by the third one. Now this is an example to understand better this process:


create table #tmpartic(codigo varchar(10), nombre varchar(50))
create table #tmpartic_idi(artic varchar(10), idioma varchar(3), traducc varchar(50))
create table #tmpidioma(codigo varchar(3), nombre varchar(50))


insert into #tmpidioma values('ENG', 'ENGLISH')
insert into #tmpidioma values('CAT', 'CATALÀ')
insert into #tmpidioma values('FRE', 'FRENCH')


insert into #tmpartic values('001', 'HELADO DE VAINILLA')
insert into #tmpartic values('002', 'HELADO DE CHOCOLATE')
insert into #tmpartic values('003', 'MALTEADA DE FRESA')
insert into #tmpartic values('004', 'TORTA DE QUESO')
insert into #tmpartic values('005', 'CREMA BATIDA')


insert into #tmpartic_idi values('001','ENG', 'VANILLA ICE CREAM')
insert into #tmpartic_idi values('001','CAT', 'GELAT DE VAINILLA')
insert into #tmpartic_idi values('001','FRE', 'GLACE À LA VANILLE')
insert into #tmpartic_idi values('002','ENG', 'CHOCOLATE ICE CREAM')
insert into #tmpartic_idi values('002','CAT', 'GELAT DE XOCOLATA')
insert into #tmpartic_idi values('002','FRE', 'GLACE AU CHOCOLAT')
insert into #tmpartic_idi values('003','ENG', 'STRAWBERRY SHAKE')
insert into #tmpartic_idi values('003','CAT', 'MALTAT DE MADUIXA')
insert into #tmpartic_idi values('003','FRE', 'FRAISE MALTE')
insert into #tmpartic_idi values('004','ENG', 'CHEESECAKE')
insert into #tmpartic_idi values('004','CAT', 'COCA DE FORMATGE')
insert into #tmpartic_idi values('004','FRE', 'GÂTEAU AU FROMAGE')
insert into #tmpartic_idi values('005','ENG', 'WHIPPED CREAM')
insert into #tmpartic_idi values('005','CAT', 'CREMA BATUDA')
insert into #tmpartic_idi values('005','FRE', 'CRÈME FOUETTÉE')

--esta es la consulta normal que nos muestra las traducciones por cada artículo un dato interesante "article" es la misma palabra para catalán, inglés y francés.
--this is the normal query to bring all the translations for each article by the way "article" is the same word in the 3 languages
select A.CODIGO, A.NOMBRE, C.NOMBRE as IDIOMA, B.TRADUCC
from #tmpartic A
join #tmpartic_idi B on A.CODIGO=B.ARTIC
join #tmpidioma C on B.IDIOMA=C.CODIGO

Esta consulta muestra todos los artículos con cada traducción en estilo filas. / This query is showing all the articles with each traduction in row style:

Resultado Normal
Normal resultset, we want to change the IDIOMA data to cols

--ahora, aquí está la magia, nosotros le decimos al sql server que le proporcionaremos los nombres de columnas en la variable @cols
--now, here is the magic, we are telling sql server that we will provide the column names in the @cols variable
--then we will query the data with the dynamic result for the columns.
declare @cols as nvarchar(4000), @query as nvarchar(4000)
select @cols=STUFF((select ',' + quotename(RTRIM(NOMBRE))
from #tmpidioma group by nombre for xml path(''),type).value('.', 'varchar(4000)'),1,1,'')
--print @cols
set @query= N'select codigo,nombre,'+@cols+ N' from (
select A.CODIGO, A.NOMBRE, C.NOMBRE as IDIOMA, B.TRADUCC
from #tmpartic A
join #tmpartic_idi B on A.CODIGO=B.ARTIC
join #tmpidioma C on B.IDIOMA=C.CODIGO
where 1=1
) P PIVOT(
max(traducc) for idioma in ('+@cols+N')
) as pivot_table '
--print @query
exec sp_executesql @query

Y este es el resultado final. / This is the final result:

Resultado Esperado
Resultset rows to cols

Todo se puede hacer en un script sql, pero también se puede crear un stored procedure. Depende de para que necesite utilizar este proceso. / You can do this in a script sql file, but also you can create a stored procedure. It depends on the requirement that you are working on.

Listar todos los stored procedures en SQL SERVER


Para cuando necesitamos saber que tantos SPs hay en un servidor de SQL Server / If you need to find all the SPs in a SQL Server:

create table #temptable(bd varchar(50) null, name varchar(150) null, object_id integer null, modify_date datetime null)

use master
execute sp_MSforeachdb ‘use [?];insert into #temptable select ”?”,name, object_id, modify_date from sys.procedures’

select * from #temptable

Tenga en cuenta que esto puede durar varios minutos dependiendo del tamaño del SQL Server. / Note that running time of this maybe take several minutes depending on the SQL Server Size.

Object reference not set to an instance of an object. Visual Studio C++ Project.


Object reference not set to an instance of an object. When compiling a C++ Project.

This means something is not working due compiler is missing or trying to use some extensions that are not ready to use. To check this open Visual Studio in Safe Mode by running it with devenv /safemode, then reopen the project and build it again.

If the project is now building ok, you can reset settings in your dev environment by clicking “Tools->Import and Export Settings” then choosing “Reset all settings”.

To run Visual Studio in Safe Mode the easy way is to add the parameter /safemode in the shortcut of the App. For this start by right click on the icon app, on Visual Studio right click again, then choose properties:

safemode0

Add the parameter at the end of the target expression:

safemode00

Now when you click on the App icon it must be run on “Safe Mode”

safemode1

After you check that its working, modify again the shortcut to eliminate the “/safemode” parameter to continue using your Visual Studio in normal mode.

 

You can do this on command window too, open a new cmd window then go to the directory of the devenv.exe file and there write the command “devenv,exe /safemode”

safemode2

 

your virus and threat protection is managed by your organization


Si le sale este mensaje en su windows defender y no está vinculado a un antivirus empresarial, probablemente un programa malware lo ha deshabilitado en el registro. Para corregir abra una ventana de comandos en modo administrador y ejecute este comando:

REG DELETE “HKLM\SOFTWARE\Policies\Microsoft\Windows Defender” /v DisableAntiSpyware

Responder Yes y enter para proceder. Luego dar clic derecho sobre el ícono de windows defender y escoger Quick Scan. Si no aparece reiniciar el computador. Y al abrir de nuevo el windows defender activar la protección si es requerido.

HP OfficeJet 4658. Espere hasta que la impresora acabe antes de empujar el extensor de la bandeja de salida.


HP OfficeJet 4658. Espere hasta que la impresora acabe antes de empujar el extensor de la bandeja de salida.

Este error en algunos blogs aparece que se debe a atasco de papel, en mi caso no era esto porque cuando se usaba la opción copiar realizaba las copias bien. El problema era cuando se intentaba imprimir desde Windows, salía ese mensaje y no imprimía nada.

Lo resolví recuperando el controlador correcto de la impresora, se hace de esta forma: Ingresar a Impresoras y Dispositivos, ubicar la impresora HP OfficeJet correspondiente y doble clic:

Opciones Impresora
Entrar a las opciones de la impresora

 

 

 

 

 

 

Una vez aparezca la ventana de configuración, dar clic en la pestaña “Opciones Avanzadas”, ir a “Controlador” y buscar el controlador que corresponda a la HP OfficeJet que tenga. Luego clic en “Aceptar”.

Controlador Impresora
Verificar Controlador de la Impresora

 

 

 

 

 

 

 

 

Reintentar de nuevo la impresión.