Thursday, January 25, 2007

Borrar la historia en QCad

Sé que para muchos puede parecer una tontera, pero me he empecinado en borrar la historia que veo en QCad de los archivos que ya abrí. El problema es que no estaba donde pensé en primer momento debía estar, que es en ~/.qcad.
Pues bien, lo encontré en el archivo ~/.qt/qcadrc.
Al final del archivo, hay una sección más o menos de la siguiente forma

[RecentFiles]
File1=/home/rgutier/EMPRESA/bodegastgo.dxf
File2=/home/rgutier/Desktop/PTP-0001A.dxf

Borrando las filas necesarias, se limpia también el historial, aunque por razones que se investigan, nunca queda absolutamente limpio.

Salu2,

Friday, January 05, 2007

Insertar y actualizar datos desde Excel en MS Sql Server

¡Qué horror!... trabajo todo el día en Linux y hoy he publicado dos trabajos hechos sobre Hasefroch... pero de algo tengo que vivir ;)

La idea era la siguiente: necesito actualizar datos en una base de datos MS Sql a partir de datos que ingresé en una planilla electrónica.
Para nuestro caso, una celda contiene el valor del codigo del producto y otra la descripción del mismo a insertar o modificar. Esta macro hace los cambios en la base de datos.

Public Sub ActualizaDescripcion()
Dim Resp, Descr, VlSql, Codigo As String
If Trim(Range("B4").Value) = "" Then
Resp = MsgBox("La descripción en (celda B4) esta vacía", vbCritical, "Error en Descripcion")
Else
Resp = MsgBox("Seguro que desea actualizar la descripcion?", vbYesNo + vbQuestion, "Actualizacion")
If Resp = vbYes Then ' El usuario eligió el botón Sí.
Codigo = Range("A3").Value
Descr = Range("B4").Value

'Revisa si ya existia la descripcion
VlSql = "SELECT Cuantos = Count(invtid) "
VlSql = VlSql & "FROM ASA_InvtDIngles WHERE InvtID = '" & Codigo & "'"

Set RS1 = New ADODB.Recordset
RS1.Open VlSql, ADOCon, , adLockOptimistic
If RS1("Cuantos") > 0 Then
Set RS1 = Nothing
VlSql = "SELECT InvtId, DescrIngles "
VlSql = VlSql & "FROM ASA_InvtDIngles WHERE InvtID = '" & Codigo & "'"
RS1.Open VlSql, ADOCon, , adLockOptimistic
RS1.Fields("DescrIngles") = Descr
RS1.Update
Else
Set RS1 = Nothing
VlSql = "SELECT InvtId, DescrIngles "
VlSql = VlSql & "FROM DescrIngles WHERE InvtID = '" & Codigo & "'"
'Inserta el nuevo registro
RS1.Open VlSql, ADOCon, , adLockOptimistic
RS1.AddNew
RS1.Fields("InvtId") = Codigo
RS1.Fields("DescrIngles") = Descr
RS1.Update
End If
End If
End If
End Sub

Labels: , ,

Ejecutar Macro al cambiar el contenido de una celda en Excel

Hoy me encontré con ese problema. La solución está en asociar una macro que arranque la que estas programando (o programarla ahí mismo), como la que está abajo, a la hoja.
En otras palabras:
1. entras a Excel,
2. presionas Alt+F11 para entrar al ambiente de programación de las macros,
3. en el árbol que se ve a mano izquierda, seleccionas la hoja a la que quieres asociar la macro.
4. copias el código de la macro de abajo

Private Sub Worksheet_Change(ByVal Target As Excel.Range)
'--- Definimos la celda que vamos a monitoriar, en mi caso, la celda B4
If Target.Row = 4 And Target.Column = 2 Then
Call MiPropiaMacro
End If
End Sub

Labels: ,