Menú

Mostrar Mensajes

Esta sección te permite ver todos los mensajes escritos por este usuario. Ten en cuenta que sólo puedes ver los mensajes escritos en zonas a las que tienes acceso en este momento.

Mostrar Mensajes Menú

Mensajes - ka0s

#121
Programación Visual Basic / Re: Exportar a EXCEL
18 Septiembre 2009, 06:03 AM
Vuelvo a comentar...
Finalmente pude lograrlo. Costó pero con esfuerzo se pudo.

Parece que hay que aplicarlo de esta manera:

Sheet.Range("A1:J1").Font.Bold = True
Sheet.Range("A1:J1").HorizontalAlignment = xlCenter
Sheet.Range("A1:J1").Interior.ColorIndex = 33
Sheet.Range("A1:J1").Interior.Pattern = xlSolid

Para la parte que sigue después del rango, lo saqué con el código de VBA que obtuve antes.

Pero la verdad que es rarísimo, como dije antes, es la primera vez que me pasa que el VB no me ayuda cuando voy escribiendo el código o poniendo el . (punto) para que me aparezca la propiedad a utilizar.

Les dejo imágen que como va quedando:



Muchas gracias igualmente.

Cualquier duda, pregunten si no entendieron como usarla.
#122
Programación Visual Basic / Re: Exportar a EXCEL
18 Septiembre 2009, 05:50 AM
Gente, pude poner en negrita. Pero más de eso no pude avanzar.
La verdad es rarísimo. No es como los otros componentes que vos agregas y te vas GUIANDO PORQUE EL VB TE VA AYUDANDO A MEDIDA QUE VAS TIPEANDO. En este no te arroja ninguna ayuda y no sabes si lo que escribis está bien o mal :S.

La verdad rarísimo.

El que sepa poner alguna cosa más me avisa por favor.

Código (vb) [Seleccionar]
rivate Sub GridAExcel()
Dim Excel As Excel.Application
Dim i As Integer, j As Integer
Dim Sheet As Object
Dim Book As Object
Screen.MousePointer = vbHourglass

Set Excel = CreateObject("Excel.Application")
Set Book = Excel.Workbooks.Add
Set Sheet = Book.Worksheets(1)

'INSERTA LOS DATOS DE LA GRILLA EN EL EXCEL
With grilla
    For i = 0 To .Rows - 1
        For j = 0 To .Cols - 1
            Excel.Cells(i + 1, j + 1) = .TextMatrix(i, j)
        Next j
    Next i
'PONE EN NEGRITA
Sheet.Range("A1:J1").Font.Bold = True

End With

Excel.Visible = True
Screen.MousePointer = vbDefault
End Sub


Saludos!
#123
Programación Visual Basic / Re: Exportar a EXCEL
18 Septiembre 2009, 00:33 AM
Cita de: Novlucker en 17 Septiembre 2009, 22:25 PM
Sobre esa planilla de excel que tienes, Herramientas > Macros > Grabar nueva macro, y realiza los cambios que quieras, bordes, negrita, colores, etc, y al final termina la grabación.

Luego ve al editor de VBA, Herramientas > Macros > Editor de Visual Basic o ALT+F11, en el explorador de proyectos ve al nuevo MÓDULO que se te ha creado, y ya tendrás código de ejemplo bastante acorde a tu caso  :D

Saludos


Gracias por responder Novlucker.
Pero igualmente mucho no me sirvió, hice lo que me dijiste pero había cosas que no encontré. Deben tener otro nombre las propiedades o no sé.

El VBA lo que me formó a mi fue:

Range("A1:J1").Select
    Range("J1").Activate
    Selection.Font.Bold = True
    With Selection
        .HorizontalAlignment = xlLeft
        .VerticalAlignment = xlBottom
        .WrapText = False
        .Orientation = 0
        .AddIndent = False
        .IndentLevel = 0
        .ShrinkToFit = False
        .ReadingOrder = xlContext
        .MergeCells = False
    End With
    With Selection
        .HorizontalAlignment = xlCenter
        .VerticalAlignment = xlBottom
        .WrapText = False
        .Orientation = 0
        .AddIndent = False
        .IndentLevel = 0
        .ShrinkToFit = False
        .ReadingOrder = xlContext
        .MergeCells = False
    End With
    Range("A2:J3").Select
    Range("J3").Activate
    With Selection
        .HorizontalAlignment = xlCenter
        .VerticalAlignment = xlBottom
        .WrapText = False
        .Orientation = 0
        .AddIndent = False
        .IndentLevel = 0
        .ShrinkToFit = False
        .ReadingOrder = xlContext
        .MergeCells = False
    End With
    Range("A1:J1").Select
    Range("J1").Activate
    With Selection.Interior
        .ColorIndex = 33
        .Pattern = xlSolid
    End With
    Columns("A:A").ColumnWidth = 4.57
    Columns("B:B").ColumnWidth = 15.71
    Columns("B:B").ColumnWidth = 18
    Columns("C:C").ColumnWidth = 18
    Columns("D:D").ColumnWidth = 4.71
    Columns("E:E").ColumnWidth = 16.14
    Columns("F:F").ColumnWidth = 12.29
    Columns("F:F").ColumnWidth = 13
    Columns("F:F").ColumnWidth = 13.14
    Columns("F:F").ColumnWidth = 13.29
    Columns("I:I").ColumnWidth = 12.71
    Columns("J:J").ColumnWidth = 23.71
End Sub


y cuando quise hacerlo no encontré en el VB HorizontalAlignment, Font bold, entre otras. Así que no sé como puedo hacerlo.

Por ahi algo entendi mal, pero no creo.

Desde ya muchas gracias!
#124
Programación Visual Basic / Exportar a EXCEL
17 Septiembre 2009, 22:16 PM
Hola gente, encontré un código para poder exportar un Flexgrid a Excel y me funciona perfectamente.
El problema es que me gustaría que quede un poco más atractivo con respecto al nombre de las columnas.

Busqué propiedades para cambiar el formato y esas cosas pero la verdad no encontré nada.

Código (vb) [Seleccionar]
Private Sub GridAExcel()
Dim oExcel As Excel.Application
Dim i As Integer, j As Integer
Screen.MousePointer = vbHourglass

Set oExcel = CreateObject("Excel.Application")
oExcel.Workbooks.Add
With grilla
    For i = 0 To .Rows - 1
        For j = 0 To .Cols - 1
            oExcel.Cells(i + 1, j + 1) = .TextMatrix(i, j)
        Next j
    Next i
End With
oExcel.Visible = True
Screen.MousePointer = vbDefault
End Sub

Private Sub Command1_Click()
Call GridAExcel
End Sub


Ese es el código que uso y así es como me lo exporta a EXCEL y queda horrible.



Lo que me gustaría hacer es centrar todo y ponerle negrita y otro fondo a las columnas.

Espero que me puedan dar una mano.

Muchas gracias!!!
#125
lol.
#126
Programación Visual Basic / Re: Problema con LOGIN
14 Septiembre 2009, 20:00 PM
Cita de: seba123neo en 14 Septiembre 2009, 06:42 AM
Hola, lo que pasa es que no deberias hacerlo asi como lo haces, lo ideal no seria crear un recordset, abrirlo haciendo "select * from usuarios" y recorrerlo con find y si no lo encuentra...etc. aca te paso un ejemplo de login que es re-facil, consulta la base de datos con un recodset que se usa solo para eso...por ejemplo te creas un recordset en ese form local llamado rsLogin total lo usas en ese form y despues no lo usas mas. aca te paso un ejemplo de login de esa forma:

Código (vb) [Seleccionar]
Option Explicit

Private rsLogin As ADODB.Rcordset

Private Sub Form_Load()
   Set rsLogin = New ADODB.Recordset
End Sub

Private Sub cmdlogin_Click()
   Call Login
End Sub

Private Sub Login()
    If txtusuario.Text = "" Then
        MsgBox "Debe Ingresar un Usuario", 16
        txtusuario.SetFocus
        Exit Sub
    End If
    If txtpassword.Text = "" Then
        MsgBox "Debe Ingresar un Password", 16
        txtpassword.SetFocus
        Exit Sub
    End If
    rsLogin.Open "SELECT login,password FROM usuarios WHERE login='" & txtusuario & "'", cn, adOpenKeyset, adLockOptimistic
    If rsLogin.EOF Then
        MsgBox "No Existe el Usuario Indicado", vbCritical
        rsLogin.Close
        Exit Sub
    Else
        If LCase(rsLogin("login")) = LCase(txtusuario) And LCase(rsLogin("password")) = LCase(txtpassword) Then
            ' si entra aca es porque accedio correctamente
        Else
            MsgBox "La Password es incorrecta", vbCritical
            rsLogin.Close
            Exit Sub
        End If
    End If
    rsLogin.Close
    Unload Me
    frmgym.Show
End Sub


obviamente adapta los nombres de los campos a los que tengas en tu base de datos, pero eso debe funcionar bien...si queres despues ponele esos detalles de que si no escribio un usuario o password que ponga el color de los textbox en rojo como lo estas haciendo.

saludos.


de 10 como siempre.

Muchas gracias Seba!!!
#127
Programación Visual Basic / Problema con LOGIN
14 Septiembre 2009, 05:44 AM
Gente, acá molestando again :P.
Descubrí que tengo un ERROR con el login.
Lo que sucede es lo siguiente:
Si yo ingreso de usuario: ADMIN y password ADMIN apenas inicio el programa, loguea perfectamente. Si me equivoco y escribo por ejemplo ADMIN2 que no existe me colorea el textbox a ROJO avisando que nos equivocamos.

Pero que pasa, cuando ingresás nuevamente USUARIO: ADMIN, CONTRASEÑA: ADMIN ahí YA NO LO TOMA MÁS. Siempre indica que el usuario no existe...

Esto lo había arreglado usando RST.MOVEFIRST, pero me di cuenta que si la grilla (MSFlexGrid) que está en el siguiente formulario está vacía, GENERA ERROR.

"El valor de BOF O EOF ES TRUE, O EL ACTUAL REGISTRO SE ELIMINÓ, LA OPERACION SOLICITADA REQUIERE UN REGISTRO ACTUAL."

Les dejo el código del LOGIN.

CitarPrivate Sub cmdlogin_Click()
'-------------LOGIN DE USUARIO-------------
'Busca en la tabla si existe el usuario.
RST.Find "Id ='" & Trim(txtusuario.Text) & "'"
'Si no existe
If RST.EOF Then
    txtusuario.BackColorSelect = &H8080FF
    txtusuario.SetFocus
Else
'Si existe, verifica los passwords y si es correcto nos lleva al formulario Principal
    If RST!Password = txtpassword.Text Then
        Unload frmlogin
        Load frmgym
        frmgym.Show
    Else
        'Sino, muestra mensaje de error
        txtpassword.BackColorSelect = &H8080FF
        txtpassword.SetFocus
    End If
End If
'Vuelve al principio, sino siempre sigue en EOF y nunca vuelve
'a la primera opcion y no loguea más...
RST.MoveFirst
End Sub

Desde ya muchas gracias!
#128
Programación Visual Basic / Re: Trabajar con FECHAS
12 Septiembre 2009, 04:41 AM
Cita de: seba123neo en 12 Septiembre 2009, 04:17 AM
claro, lo que tenes que evaluar en el IF es si la fecha de hoy (Date) es mayor o igual a la fecha del pago del cliente, si es mayor o igual es porque le toca pagar y sino es porque todavia no llego a la fecha de pago.la fecha de inscripcion practicamente no importa es un dato mas solamente.ahora lo que tenes que hacer (no se si lo hiciste) es hacer una pantallita mas, donde puedas hacerle pagar al cliente (solo a los clientes que tienen que pagar) y asi aumentarle + 1 mes la fecha de pago, en algun lado tambien seria bueno que registres los pagos...en una tabla aparte podes hacerlo y registrar el id cliente, la fecha de pago, y demas datos que quieras, asi te queda un historial de pagos y hasta podes hacerte una pantalla para consultar los pagos de cada cliente.

saludos.

Algo que no comprendo es porque dicen que HAY QUE EVALUARLO CON LA FECHA DE HOY si la fecha de hoy no la requiero :S

Como puse en el codigo de arriba, yo lo que hago es:
        INSCRIPCION               PROXIMOPAGO
  If grilla.TextMatrix(i, 7) >= grilla.TextMatrix(i, 8) Then
               grilla.CellBackColor = vbRed

nunca uso la fecha de hoy como ustedes dicen :S
#129
Programación Visual Basic / Re: Trabajar con FECHAS
11 Septiembre 2009, 19:41 PM
Gente, finalmente un amigo me pudo solucionar el problema que tenía con el codigo de seba :)

Acá se los dejo como me quedó y funciono perfectamente.

CitarDim vFechaPago As String
    Dim i As Integer
    Dim vColumna As Integer
    grilla.Redraw = False
    For i = 1 To grilla.Rows - 1
        For vColumna = 0 To grilla.Cols - 1
            grilla.Row = i
            grilla.Col = vColumna
           
            If grilla.TextMatrix(i, 7) >= grilla.TextMatrix(i, 8) Then
               grilla.CellBackColor = vbRed
            Else
                grilla.CellBackColor = vbGreen
            End If
        Next vColumna
    Next i
    grilla.Redraw = True

Les dejo la imágen:



MUCHAS GRACIAS SEBA POR TODO!!
#130
Programación Visual Basic / Re: Trabajar con FECHAS
11 Septiembre 2009, 06:06 AM
Cita de: seba123neo en 11 Septiembre 2009, 01:46 AM
tenes que poner el numero de la columna donde esta la fecha de pago..quedaria algo asi en tu caso es la columna 7.

Código (vb) [Seleccionar]
Private Sub ColorearFecha()
   Dim vFechaPago As String
   Dim i As Integer
   Dim vColumna As Integer

   MSHFlexGrid1.Redraw = False
   For i = 2 To MSHFlexGrid1.Rows - 1
       For vColumna = 0 To MSHFlexGrid1.Cols - 1
           MSHFlexGrid1.Row = i
           MSHFlexGrid1.Col = vColumna
           vFechaPago = CDate(Format(MSHFlexGrid1.TextMatrix(i, 7), "dd/MM/yyyy"))
           If Date > CDate(vFechaPago) Then
              MSHFlexGrid1.CellBackColor = vbRed
           Else
               MSHFlexGrid1.CellBackColor = vbGreen
           End If
       Next vColumna
   Next i
   MSHFlexGrid1.Redraw = True
End Sub


proba eso, y fijate que hay algo mal ahi, porque el primer registro tiene la misma fecha de pago que la fecha de inscripcion, y deberia tener 1 mes mas o sea 09/11/2009, cuando das de alta debes guardar en ese campo 1 mes mas.en realidad te tendrian que salir todas en verde porque la fecha de hoy no es mayor a la fecha de 09/10/2009

saludos.

Me sigue sin funcionar Seba.
O sea lo que vos me dijiste arriba de que algo esta mal por lo del MES yo lo hice así A PROPÓSITO. Modifiqué LA BASE DE DATOS MANUALMENTE para que me muestre uno en ROJO y el resto en VERDE para corroborar el código.

Por otro lado probé lo que me dijiste pero no me funcionó. Me ponía todos en VERDE y como dije antes UNO LO MODIFIQUE A PROPÓSITO PARA VERLO EN ROJO pero lo sigue mostrando VERDE.

Y una cosa más, de tu código no se para que usas la variable FechadePago y tratás de obtenerla con TextMatrix si yo ya la tengo haciendo RST!ProximoPago.

Te dejo el código tuyo, modificado de nuevo:

CitarPrivate Sub ColorearFecha()
   Dim i As Integer
   Dim vColumna As Integer

   grilla.Redraw = False
   For i = 1 To grilla.Rows - 1
       For vColumna = 1 To grilla.Cols - 1
           grilla.Row = i
           grilla.Col = vColumna
           If RST!inscripcion >= CDate(RST!proximopago) Then
              grilla.CellBackColor = vbRed
           Else
               grilla.CellBackColor = vbGreen
           End If
       Next vColumna
   Next i
   grilla.Redraw = True
End Sub

O sea si mirás bien, esta todo tal cual lo pusiste vos, SALVO QUE EN VEZ DE USAR LAS VARIABLES FECHAALTA Y FECHADEPAGO LO SACO DIRECTAMENTE CON RST!INSCRIPCION Y RST!PROXIMOPAGO

Espero que haya quedado claro, y desde ya muchas gracias por prestarle atención a esto