Informática, Noticias y todo lo que venga...

El Blog de Herbert Mendoza...

SQL Server: Como parametrizar una consulta SQL, How to parameterized SQL query

| domingo, 6 de septiembre de 2015


SQL Server: Como parametrizar una consulta SQL, How to parameterized SQL query

Resulta importante en ocasiones hacer uso de un query dinámico, si tenemos parámetros y deseamos usarlos en el query nos enfrentamos a un inconveniente, como podemos concatenarlos si nuestros parámetros son de tipo Entero, Fecha, cualquier otro diferente de String, porque de ser así tendremos que hacer tantas conversiones explícitas como parámetros diferentes de String tengamos, me lo mostró por cierto un amigo llamado HunchBak, así que parte de los créditos son del él, veamos el siguiente ejemplo:

Primero creemos la siguiente tabla:










Código T-SQL para crearla:

USE TEMPDB
GO

IF OBJECT_ID('Cuenta') is not null
BEGIN
 DROP TABLE Cuenta;
END

CREATE TABLE [dbo].[Cuenta]
(
 [Codigo] int NOT NULL,
 [Descripcion] varchar(20) NOT NULL, 
 [Seccion] int NOT NULL
);

INSERT INTO [dbo].[Cuenta]
VALUES
 (2025912, 'PERFORACION A', 1525),
 (2025913, 'PERFORACION B', 1525),
 (2025922, 'CARGA FRONTAL', 23652),
 (2025923, 'CARGA LATERAL', 23652),
 (2025963, 'CHANCADO', 36523),
 (2025964, 'CHANCADO', 36287),
 (2025965, 'CHANCADO', 36523),
 (2025991, 'RECUPERACION', 365247);

GO

Ahora, hacemos una prueba con el siguiente query con el cuál deseamos conocer todas las Cuentas con la DESCRIPCION "CHANCADO" y que sean de la SECCION "36523" :

DECLARE @Descripcion AS varchar(20);
DECLARE @Seccion smallint;

SET @Descripcion = 'CHANCADO';
SET @Seccion = 36523;

DECLARE @sql nvarchar(MAX);

SET @sql = 
N'SELECT 
 Codigo, Descripcion, Seccion
FROM
 Cuenta
WHERE
 Descripcion = ' + @Descripcion + ' AND
 Seccion = ' + @Seccion;

EXEC sp_executesql @sql;

GO

Al ejecutarla, tenemos la siguiente descripción de error:


--Error de conversión al convertir el valor varchar '*' al tipo de datos int, smallint.
--Conversion failed when converting the varchar value '*' to data type int, smallint.

Esto sucede porque no podemos concatenar un tipo de dato Entero a Cadena, podemos hacer una conversión explícita pero estaríamos haciéndolo para cada juego de parámetros y no es lo correcto, lo mejor en estos casos es parametrizar la consulta de esta manera:

DECLARE @Descripcion AS varchar(20);
DECLARE @Seccion int;

SET @Descripcion = 'CHANCADO';
SET @Seccion = 36523;

DECLARE @sql nvarchar(MAX);

SET @sql = 
'SELECT 
 Codigo, Descripcion, Seccion
FROM
 Cuenta
WHERE
 Descripcion = @Descripcion AND
 Seccion = @Seccion';

EXEC sp_executesql @sql, 
 N'@Descripcion varchar(20), @Seccion int', 
 @Descripcion, 
 @Seccion;

GO


Obtenemos la siguiente salida:

Codigo Descripcion Seccion 2025963 CHANCADO 36523 2025965 CHANCADO 36523

Saludos,

SQL Server: Cómo Sumar el tipo de dato TIME, How to SUM Data Type TIME using TSQL

| sábado, 8 de agosto de 2015


SQL Server: Cómo Sumar el tipo de dato TIME, How to SUM Data Type TIME using TSQL

Que tal,
El tipo de dato TIME, nuevo desde la versión SQL Server 2008, nos permite almacenar tiempo en nuestra base de datos, por ejemplo horas, anteriormente para hacerlo se debía crear un tipo de dato CHAR(8), pero con este tipo de dato cambia mucho las cosas, pero que sucede si estamos usando este tipo de dato (TIME) y de repente deseamos obtener el tiempo total acumulado, por ejemplo:

DECLARE @TablaTiempo TABLE
(
 IDLocacion int,
 IDMedidor int,
 TiempoProceso time(7)
);

--Ingresamos registros
INSERT INTO @TablaTiempo(IDLocacion, IDMedidor, TiempoProceso)
VALUES
 (1, 50, '08:05:30'),
 (1, 85, '00:05:05'), 
 (2, 36, '01:01:55'),
 (2, 26, '00:00:06'),
 (3, 89, '00:05:15');

--Deseamos saber el tiempo de operación por IDLocacion
SELECT 
 t.IDLocacion,
 SUM(t.TiempoProceso)
  AS TotalTiempoProceso
FROM
 @TablaTiempo t
GROUP BY
 IDLocacion;
 

--Descripción del Error --El tipo de datos time del operando no es válido para el operador sum. --Operand data type time is invalid for sum operator.
Entonces, para poder corregirlo y darle solución debemos de realizar lo siguiente:


SELECT 
 t.IDLocacion,
 CAST(DATEADD(
 ms, 
 SUM(DATEDIFF(ms, '00:00:00.000', t.TiempoProceso)), 
 '00:00:00.000') AS time(7)) 
  AS TotalTiempoProceso
FROM
 @TablaTiempo t
GROUP BY
 IDLocacion;


--Obtenemos los siguientes resultados --IDLocacion TotalTiempoProceso --1 08:10:35.0000000 --2 01:02:01.0000000 --3 00:05:15.0000000
Disfruten!


Saludos!

Usando la sentencia Merge en SQL Server, How to use Merge SQL Server

| domingo, 12 de julio de 2015


Usando la sentencia Merge en SQL Server, How to use Merge SQL Server

En esta entrada deseo compartir con ustedes el uso de la sentencia Merge, nada nueva por cierto, nació con SQL Server 2008 y lo curioso es que donde he visitado no la conocen del todo y lo que significa que no saben usarla, dicho en pocas palabras esta sentencia nos permite insertar/actualizar/eliminar nuestro registros en una sola instrucción. Osea si el registro no existe lo inserta y si existe actualiza sus campos.

Esta sentencia MERGE nos evita realizar acciones como la que muestro a continuación, tanto a nivel de base de datos como de nuestra aplicación:


If NOT EXISTS(SELECT 1 FROM TuTabla
    WHERE Campo1 = @Parametro1 AND
    Campo2 = @Campo2
   )
  
  BEGIN
  --Insertar nuevo registro
   --INSERT INTO TuTabla(..,..) 
  
  END
ELSE
  BEGIN
  --Actualizar registro existente
   --UPDATE TuTabla
   --SET        
   --WHERE
  END


Como se puede ver en el ejemplo realizamos 2 consultas a la Base de Datos, una para verificar si el registro ya existe y la otra, en caso existiera hacemos un Update caso contrario lo Insertamos, Merge evita esto.

Veamos primero creemos la siguiente Tabla:
 

Código T-SQL para crearla:

USE TEMPDB
GO

IF object_id ('LecturaMedidor') is not null
BEGIN
 DROP TABLE LecturaMedidor;
END

CREATE TABLE [dbo].[LecturaMedidor]
(
 [FechaLectura] date NOT NULL,
 [SerieMedidor] char(10) NOT NULL, 
 [CodZona] [smallint] NULL,
 [Lectura] decimal(18,7) NULL, 
 [Ajuste] decimal(18,7) NULL
);

ALTER TABLE dbo.LecturaMedidor ADD CONSTRAINT
 PK_LecturaMedidor PRIMARY KEY CLUSTERED
 (
 FechaLectura,
 SerieMedidor
 ) 

GO

Ahora creamos un Stored Procedured que se encargue de usar Merge para insertar/actualizar los registros:

USE TEMPDB
GO

CREATE PROCEDURE [dbo].[LecturaMedidorMerge]
(
 @FechaLectura date,
 @SerieMedidor char(10),
 @CodZona smallint,
 @Lectura decimal(18,7),
 @Ajuste decimal(18,7)
)
AS

BEGIN
SET NOCOUNT ON
 
 MERGE LecturaMedidor AS target
    USING (SELECT @FechaLectura, @SerieMedidor, @CodZona, @Lectura, @Ajuste) 
 
 AS source (FechaLectura, SerieMedidor, CodZona, Lectura, Ajuste)
    ON (target.FechaLectura = source.FechaLectura AND 
  target.SerieMedidor = source.SerieMedidor
  )
    WHEN MATCHED THEN      
  UPDATE SET
    CodZona = source.CodZona,
    Lectura = source.Lectura,
    Ajuste = source.Ajuste

 WHEN NOT MATCHED THEN
  INSERT (FechaLectura, SerieMedidor, CodZona, Lectura, Ajuste)
  VALUES
           (source.FechaLectura
           ,source.SerieMedidor
           ,source.CodZona
           ,source.Lectura
           ,source.Ajuste);

END

GO


Ahora realizamos unas pruebas:

USE TEMPDB
GO

SELECT * FROM dbo.LecturaMedidor
GO
--0 rows


--Insertamos 2 registros
EXEC LecturaMedidorMerge '20150701','ABCDF12345',1,1550,0;
EXEC LecturaMedidorMerge '20150702','ABCDF12345',1,1550,0;
SELECT * FROM dbo.LecturaMedidor
--2 rows
--FechaLectura SerieMedidor CodZona Lectura Ajuste
--2015-07-01 ABCDF12345 1 1550.0000000 0.0000000
--2015-07-02 ABCDF12345 1 1550.0000000 0.0000000


--Actualizamos el registro ingresado el 20150701, con nuevo 
--valor de Lectura 2360
EXEC LecturaMedidorMerge '20150701','ABCDF12345',1,2360,0;
SELECT * FROM dbo.LecturaMedidor
WHERE FechaLectura = '20150701'
--1 row modificado
--FechaLectura SerieMedidor CodZona Lectura Ajuste
--2015-07-01 ABCDF12345 1 2360.0000000 0.0000000


Pueden adaptarla de acuerdo a sus escenarios.


Saludos!

Generar PIVOT dinámico en SQL Server

| lunes, 6 de julio de 2015


Generar PIVOT dinámico en SQL Server, How to implement dynamic Pivoting in SQL Server

Que tal amigos de la comunidad,

Por pedido de amigos y preguntas frecuentes, deseo compartirles como armar un Pivot dinámico.
Esta característica de SQL Server, disponible desde la versión 2005, que nos permite convertir filas en columnas, en base a una columna específica, podemos hacerla dinámica o estática.

Veamos, si tenemos el siguiente resultado de un query que muestra las ventas de empleados por día.




















Y deseamos convertir las filas Fecha en columnas y que me muestre la cantidad vendida por cada empleado, algo así:







Entonces, para lograrlo hacemos uso de la sentencia PIVOT SQL Server, les comparto este query y úsenlo según sus escenarios.

DECLARE @columns varchar(MAX);
DECLARE @sql nvarchar(max)
CREATE TABLE #Table
(
IdEmpleado int,
Turno char(1),
CantidadVenta numeric(18,7),
Fecha date
);

INSERT INTO #Table
SELECT '1', 'A', '10','2015-07-05' UNION ALL
SELECT '1', 'A', '15','2015-07-12' UNION ALL
SELECT '1', 'A', '25','2015-07-18' UNION ALL
SELECT '1', 'A', '6','2015-07-25' UNION ALL
SELECT '1', 'A', '9','2015-07-27' UNION ALL
SELECT '1', 'A', '15','2015-07-26' UNION ALL
SELECT '2', 'B', '26','2015-07-26' UNION ALL
SELECT '2', 'B', '19','2015-07-26' UNION ALL
SELECT '2', 'B', '89','2015-07-26' UNION ALL
SELECT '3', 'A', '56','2015-07-26' UNION ALL
SELECT '3', 'A', '15','2015-07-26' 

--SELECT * from #Table

 SET @columns = STUFF(
 (
 SELECT
   ',' + QUOTENAME(LTRIM(Fecha))
 FROM
   (SELECT DISTINCT Fecha
    FROM #Table
   ) AS T
 ORDER BY
 Fecha
 FOR XML PATH('')
 ), 1, 1, '');

 SET @sql = N'
 SELECT
   * 
  FROM
  (  
  SELECT  IdEmpleado, Turno, CantidadVenta, Fecha
  FROM #Table
  ) AS T
  PIVOT   
  (
  SUM(CantidadVenta)
  FOR Fecha IN (' + @columns + N')
  ) AS P order by IdEmpleado;'; 

EXEC sp_executesql @sql;
DROP TABLE #Table;



Saludos, si tienen una pregunta no duden en publicarla.

Formatear una cadena XML en VB.NET

| lunes, 1 de diciembre de 2014


Buenas tardes,

Lo ultimo que se me presento fue leer un campo tipo XML de una base de datos SQL y mostrarlo en un formulario, todo estuvo muy bien pero al leer el campo XML y mostrarlo en un campo tipo TextBox se mostraba de manera desordenada y no mostraba ese aspecto ordenado jerarquicamente por niveles.

Deseo compatirles este código que les puede ayuda a formatear su cadena XML y mostrarlo de manera más elegante.

Private Sub frmVisor_Load(sender As System.Object, e As System.EventArgs) Handles MyBase.Load
        Dim docXML As New XmlDocument()

        Try
            Cursor = Cursors.WaitCursor
            If txtDetalle.Text.Trim <> "" Then
                docXML.LoadXml(txtDetalle.Text)
                Using string_writer As New System.IO.StringWriter()
                    Using xml_textwriter As New XmlTextWriter(string_writer)
                        xml_textwriter.Formatting = Formatting.Indented
                        docXML.WriteTo(xml_textwriter)
                        xml_textwriter.Flush()
                        txtDetalle.Text = string_writer.ToString()

                    End Using
                End Using

            End If
        Catch ex As Exception
            Throw
        Finally
            Cursor = Cursors.Default
        End Try
    End Sub



Si tienes alguna pregunta, no dudes en hacerla.

Saludos
Herbert Mendoza

Como agregar Subindice/Superindice en Microsoft Reporting Services

| viernes, 19 de septiembre de 2014



Estoy de vuelta y con algunas novedades, no recuerdo el tiempo que estuve fuera pero así que hoy deseo mostrarles como lograr crear un Superindice/SubIndice en Reporting Services (How to Add SubScripts/Superscripts). En otra palabras lograr el efecto del formato de Potencia (X2)


Les voy a comentar hasta dos métodos que pueden usar, el segundo método tiene alguna limitación pero el primero es mucho más sencillo y de mayor potencia.


Método 1

1. Hagan (Inicio + R) y escriban: charmap.exe

2. Sobre la pantalla mostrada, eligan la letra Lucida Sans Unicode.


3. Escribe tu texto en la parte inferior de la pantallita, también puedes ubicar los caracteres que desees como para el caso de SubIndices, Superindices.


4. Cuando ubiques tu símbolo deseado haz doble clic sobre el y este aparecerá en cuadro de texto inferior, ahora sólo copia el texto generado y pégalo en tu informe Reporting Services, sólo ten una consideración, el tipo de letra en tu control SSRS debe ser Lucida Sans Unicode.



5. El resultado es:



Método 2

SSRS permite interpretar Tags HTML (en otro artículo ya les cuento mayor detalle) dentro de cada uno de sus controles TextBox.

Si deseaste usar el Tag SUP de HTML este no funciona en Reporting Services.

<p>X <sup>2</sup> </p>

1. Debes de Activar el reconocimiento de código HTML en el TextBox de tu Reporte.


2. El Tag que si funciona es el siguiente, coloca la siguiente expresión en alguna caja de Texto que previamente activaste Reconocimiento HTML:

="X &sup1;"

Este nos pintará (X1), si deseas texto más personalizados prueba el Método 1 y divierte.

Sus comentarios como siempre son bienvenidos.


Bytes.
Saludos...



SQL Server: Leer Archivos XML usando TSQL, How to read XML Files using TSQL

| jueves, 30 de mayo de 2013



SQL Server: Leer Archivos XML usando TSQL, How to read XML Files using TSQL 

Que tal  amigos, veremos cómo podemos leer archivos XML usando SQL Server, los archivos XML son muy útiles en muchos casos en particular, podemos usarlos para transferir datos entre aplicaciones, almacenar información adicional en columnas de tipo XML, entre otros casos más, desde la versión 2005 SQL Server ofrece un nuevo tipo de dato llamado XML, por lo cual si usan SQL Server 2005 o superior les recomiendo usar este tipo de dato y con él sus métodos.
 En el presente ejemplo veremos como leer un archivo XML sin tipo, este es un archivo no tiene un namespace que lo asocie a un esquema que valide los datos,

Como leer archivos XML sin namespace, Leer archivos XML sin tipo

 Tenemos el siguiente Archivo XML:

<ConfirmMessageKidaph NumeroEnvio="259870" >
  <NodoDetalle secuencia="0" 
 Codigo="KD-SEND-80103" Destino="Flour">
    <NodoAccion TipoAccion="F"/>
  </NodoDetalle>
  <NodoDetalle secuencia="1" 
 Codigo="KD-SEND-00048" Destino="Cable INC">
    <NodoAccion TipoAccion="F">
      <NodoFecha Estado="confirmado"
  year="2013" day="15" month="1" hour="8"
  min="30"/>
    </NodoAccion>
  </NodoDetalle>
</ConfirmMessageKidaph>


Para realizar la lectura en SQL Server realizar lo siguiente:

USE TEMPDB
GO

DECLARE @strXML xml;
SET @strXML ='
<ConfirmMessageKidaph NumeroEnvio="259870" >
  <NodoDetalle secuencia="0" 
 Codigo="KD-SEND-80103" Destino="Flour">
    <NodoAccion TipoAccion="F"/>
  </NodoDetalle>
  <NodoDetalle secuencia="1" 
 Codigo="KD-SEND-00048" Destino="Cable INC">
    <NodoAccion TipoAccion="F">
      <NodoFecha Estado="confirmado"
  year="2013" day="15" month="1" hour="8"
  min="30"/>
    </NodoAccion>
  </NodoDetalle>
</ConfirmMessageKidaph>'


SELECT
    A.n.value('@NumeroEnvio[1]', 'varchar(20)') AS NumeroEnvio,
    B.n.value('@secuencia[1]', 'varchar(10)') AS secuencia, 
    B.n.value('@Codigo[1]', 'varchar(20)') AS Codigo,
    B.n.value('@Destino[1]', 'varchar(30)') AS Destino,
    C.n.value('@TipoAccion[1]', 'varchar(20)') AS TipoAccion,
    D.n.value('@Estado[1]', 'varchar(20)') AS [Estado],
    D.n.value('@year[1]', 'varchar(20)') AS [year],
    D.n.value('@day[1]', 'varchar(20)') AS [day],
    D.n.value('@month[1]', 'varchar(20)') AS [month],
    D.n.value('@hour[1]', 'varchar(20)') AS [hour],
    D.n.value('@min[1]', 'varchar(20)') AS [min]
FROM
    @strXML.nodes('/ConfirmMessageKidaph') AS A(n)
    OUTER APPLY
    A.n.nodes('NodoDetalle') AS B(n)
    OUTER APPLY
    B.n.nodes('NodoAccion') AS C(n)
    OUTER APPLY
    C.n.nodes('NodoFecha') AS D(n);

GO


Si usas una versión inferior a SQL Server 2005, tenemos que usar OPENXML, hagan lo siguiente:
USE TEMPDB
GO

DECLARE @strXML varchar(max);
SET @strXML ='
<ConfirmMessageKidaph NumeroEnvio="259870" >
  <NodoDetalle secuencia="0" Codigo="KD-SEND-80103" Destino="Flour">
    <NodoAccion TipoAccion="F"/>
  </NodoDetalle>
  <NodoDetalle secuencia="1" Codigo="KD-SEND-00048" Destino="Cable INC">
    <NodoAccion TipoAccion="F">
      <NodoFecha Estado="confirmado" year="2013" day="15" month="1" hour="8" min="30"/>
    </NodoAccion>
  </NodoDetalle>
</ConfirmMessageKidaph>
'

DECLARE @IdDoc int;
EXEC sp_xml_preparedocument @IdDoc OUTPUT, @strXML
        SELECT * 
        FROM  OPENXML (@IdDoc, '/ConfirmMessageKidaph/NodoDetalle/NodoAccion', 1)
                WITH (
                      [NumeroEnvio]  varchar(20) '../../@NumeroEnvio',
                      [secuencia]  varchar(10) '../@secuencia',
                      [Codigo] varchar(20) '../@Codigo',
                      [Destino] varchar(30) '../@Destino',
                      [TipoAccion] varchar(20) '@TipoAccion',
                      [Estado] varchar(20) 'NodoFecha/@Estado',
                      [year] varchar(20) 'NodoFecha/@year',
                      [day] varchar(20) 'NodoFecha/@day',
                      [month] varchar(20) 'NodoFecha/@month',
                      [hour] varchar(20) 'NodoFecha/@hour',
                      [min]  varchar(20) 'NodoFecha/@min'
                      );

EXEC sp_xml_removedocument @IdDoc;
GO


Esta forma quita performance, además al final no deben de olvidar usar la sentencia sp_xml_removedocument ya que el documento analizado utiliza la octava parte de la memoria total asignada a SQL Server, así que liberen memoria.


EXEC sp_xml_removedocument @IdDoc;


Así que si tiene SQL Server 2005 o superior usen el tipo de datos XML.

Espero les haya servido, cualquier pregunta, no duden en hacerla.

Referencia: Herbert Mendoza (http://litigiouslobo.blogspot.com/)
 


Microsoft Active Professional 2013 (MAP)

| sábado, 23 de marzo de 2013


Después de una larga temporada, inicio este mes con un reconocimiento como Microsoft Active Professional (MAP), esta distinción se le otorga sólo al top 5% de la comunidad de Profesionales de IT que por su constante esfuerzo, participación y capacitación en tecnologías Microsoft se destaca por sobre el resto de los profesionales realzando día a día el valor de esta comunidad.

Parte del mensaje de Microsoft:



ERES UN MICROSOFT ACTIVE PROFESSIONAL

El equipo de Microsoft Perú felicita y agradece tu constante esfuerzo por participar activamente en nuestros programas de entrenamiento y presentación de productos en los últimos meses.

Por esta razón y porque valoramos tu compromiso por mantenerte actualizado te otorgamos el diploma MAP (Microsoft Active Professional) que demuestra que eres un profesional preocupado por mantenerte al dia y participas activamente de la comunidad técnica existente alrededor de la tecnología Microsoft.

Desde aquí, muchas gracias:


Algo más:

La primera Iniciativa de MAP será la creación de un grupo en Linkedin:
El objetivo es reunir en este ámbito a los Microsoft Active Professionals para ofrecer un espacio de interacción entre los profesionales más interesados y de activa participación, con el objetivo de compartir experiencias, ideas, información, novedades y opiniones.
Este grupo es cerrado y exclusivo para los Microsoft Active Professionals, más otros profesionales destacados como MVPs o evangelistas de Microsoft que creemos pueden aportarles valor.


Saludos
Herbert Mendoza

Hi5 Tagged, una nueva apuesta por la lucha de Redes Sociales

| sábado, 10 de marzo de 2012

Desde la aparición de MySpace, Fotolog, Metroflog entre otras tantas buenas redes que en su tiempo fuerón lo mejor de su época aparecido Hi5, una Red Social muy famosa en países de habla hispana que permitía entre tantas cosas personalizar el perfil al gusto del Usuario, con el tiempo Hi5 cambio de Administración y se convirtió en Hi5 UX, donde eliminó los famosos códigos CSS, los tapices y oriento su negocio hacia juegos y un sector de mercado muy diferente a lo que muchos de sus usuarios incluyéndome tuvimos que dejarla, Facebook desde su comienzo parecía una Red Social muy sencilla y minimalista que poco a poco fue captando público, muchos de los cuáles éran de Hi5, Hoy en día Facebook está introduciendo cambios muy bruscos, lo último que agrego fue Timeline, y según las fuentes será obligatorio para todos, Timeline me hace recordar a Hi5, quizas Facebook tuvo alguna inspiración en ello, Hi5 quizas vió su error de realizar cambios bruscos y perder su mayor cuota de usuarios y en un intento por sobrevivir se une a Tagged y buscan integrar sus aplicaciones y usuarios, lo he probado y me parece muy bueno, te permite personalizar tu perfil de usuario, buscar gente de tu ciudad de una manera fácil casi como Badoo pero sin muchas restricciones, en resumen, me gusta el nuevo Hi5 y su perfil, sólo el tiempo dirá si vuelve a posicionarse como una de las grandes Redes Sociales, Aunque Facebook este por encima de todo, nada lo hace invulnerable sino sólo recordemos a MySpace que en un instante llegó a ser nada.

Saludos

Camtica, Capturador de Pantalla

| miércoles, 28 de diciembre de 2011



Son nuevos creando videos en su computador? si lo son este software les caerá muy bien, una interfaz bastante sencilla y fácil de usar, Camtica nos permite realizar Grabaciones de la Pantalla, Presentaciones, capturar la actividad de nuestra pantalla con voz, hacer uso de la WebCam, capturar la animación del Mouse y el resultado puede ser guardado en mucho formatos incluyendo *.AVI y *.WMV.

Por qué usar Camtica?

- Para crear grabación de pantalla de manera profesional, demostraciones, presentaciones, tutoriales, grabar conferencias y más...
- Para generar videos de manera efectiva que te ayude en la enseñanza, aprendizaje.
- Para crear demostración en video del uso de cualquier programa.
- Para mostrar a los clientes como usar su Producto.
- Para crear enseñanza interactivo, tutoriales para el colegio o colegas de clase.
- Para crear un conjunto de videos respondiendo a las preguntas realizadas con mayor frecuencia.
- Para compartir tu grabación en Youtube o cualquier otro sitio de videos.

Características:

- Graba la pantalla completa, selecciona región rectangular, región dinámica alrededor del cursor del Mouse.
- Graba cualquier elemento en la pantalla incluyendo ventanas, objetos, menús, pantallas completas y regiones rectangulares.
- Graba la pantalla del escritorio con Audio y Video juntos personalizando de esta manera tus videos al incluir la película de la Webcam sobre ti mismo.
- Graba chat, video llamadas con Skipe, Juegos, Animaciones flash en sitios.
- El movimiento del Mouse según la localización del cursor.
- Graba el video en muchos formatos incluyendo *.AVI y *.WMV.
- Soporta varios Codec de Audio y Video.* Free support and advice.
- Actualizaciones y Mejoras Gratis.
- Compatible con Windows XP/2000/Vista/Windows7

Mayor info en:
http://jiteco.com/screen_recorder_software.html

Enlace para descargar Camtica:
http://jiteco.com/download/camtica/camtica.exe


Saludos