Buscar palabras clave en la documentación    Buscar Ayuda

Doc. Ref. 9561
Título: Caso práctico: Actualizar nombres de clientes con Excel
Autor: Hexa
Última actualización: 13/10/2014


Caso práctico: Actualizar nombres de clientes con Excel

En este ejemplo veremos cómo revisar y modificar fácilmente los nombres de todos los clientes utilizando Excel. Es especialmente útil si queremos que una tercera persona esta revisión de forma externa, es decir, podemos generar la Excel, enviársela, que realice la revisión, nos la devuelva e incorporemos la información modificada a la base de datos de Hexa.

Los pasos a seguir son los siguientes:

Hacer una copia de seguridad de la tabla de clientes

La forma más cómoda de hacer una copia de respaldo de una tabla de Hexa cuando vamos a hacer un cambio es utilizar la exportación a archivos “dat”. Desde el formulario de gestión de la base de datos, especificamos la tabla “Cliente”, la opción “Incluir datos” y pondremos como referencia para identificar el archivo el texto “SegCambios”. Al pulsar la opción “ExportarTablas” se generará un archivo “Cliente#SegCambios.dat” en la carpeta que está configurada para la exportación (por defecto es la carpeta “dat” que cuelga de la ruta de trabajo de Hexa)

También podemos utilizar cualquier otro método de copia de respaldo del que dispongamos

Exportar a Excel los campos necesarios de la tabla de clientes

La forma más sencilla y rápida es utilizar la utilidad de ejecución de consultas SQL de Hexa. La sentencia “SELECT Codigo, Nombre FROM Cliente ORDER BY Codigo” nos muestra una tabla con dos columnas (Código y Nombre) y una fila por registro de cada cliente. El botón “Exportar” nos permite exportar esa tabla a Excel

Modificar los datos en la Excel

En la Excel generada podemos modificar los nombres de los clientes vigilando en no crear nuevas filas ni columnas. También es importante respetar la columna “Codigo”

Generar un script VBS en Excel que genera las sentencias sql que actualicen los datos.

El siguiente paso será generar una serie de sentencias SQL que nos permitan actualizar la información de la Excel. Hexa dispone de un sistema de incorporación de información de tablas desde Excel. Pero el objetivo de este caso práctico es hacerlo de la forma más manual posible para obtener mayor flexibilidad.

El siguiente script VBS se puede asignar a un botón en Excel para que genere las sentencias y las guarde en un archivo “actClientes.txt”

Private Sub CommandButton1_Click()

Dim T As String : T = ""
For f = 2 To 8543 'Modificar según la cantidad de filas
'Generar una sentencia SQL para cada registro:
T = T & "UPDATE Cliente SET Nombre='" & Replace(Cells(f, 3), "'", "''") & "' WHERE Codigo=" & Cells(f, 2) & ";" & vbCrLf
Next
'Guardar el archivo:
Open "C:\Users\me\Documents\actClientes.txt" For Output As 1 : Print #1, T : Close 1
End Sub

Nos gusta este método porque muy fácilmente se podría modificar el script para realizar cambios automáticos. Por ejemplo se podría pasar los nombres de los clientes a mayúsculas o minúsculas utilizando las prestaciones de Excel

También se podría realizar cambios más complejos, como generar sentencias SQL que renumeren los clientes y todos los documentos asociados a ellos en Hexa (facturas, cuentas, etc.)

En caso de hacer cambios complejos, es muy importante dominar bien la estructura de la base de datos de Hexa y las herramientas de programación. Equivocase en este tipo de acciones puede tener consecuencias realmente graves.

Ejecutar las sentencias

El script generado tendrá el siguiente aspecto:

UPDATE Cliente SET Nombre=‘Ramón Alonso Viñales’ WHERE Codigo=123;
UPDATE Cliente SET Nombre=‘Encofrados Lag, S.A.’ WHERE Codigo=124;
UPDATE Cliente SET Nombre=‘TESC Asociados, S.L.’ WHERE Codigo=125;
(…)

Si el tamaño total es menor que 64Kb, lo podemos ejecutar directamente con la utilidad de ejecución de sentencias SQL de Hexa

En caso de que sea más grande, tendremos que usar una utilidad de gestión de bases de datos como Microsoft SQL Server Management Studio Express

Tags Relacionados:

script cliente dato sql vbs excel