elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Estamos en la red social de Mastodon


  Mostrar Mensajes
Páginas: 1 2 3 4 5 6 7 8 9 10 11 12 13 [14] 15 16 17 18 19 20 21
131  Programación / Programación Visual Basic / Re: Trabajar con FECHAS en: 10 Septiembre 2009, 05:06 am
Bueno vuelvo de nuevo acá.
Usé tu código Seba adaptandolo a la base de datos que estoy usando yo, pero no me funcionó como esperaba.

Agregué un campo nuevo como dijiste vos que se llame PROXIMO PAGO y como DateAdd le di el valor de un mes.

Pero cuando puse el código tuyo, modificandolo, me pinto todas de ROJO.
Y tendría que haberme pintado LA 1ERA SOLAMENTE mientras que la 2da y la 3era FILA tendrían que estar en VERDE.

Les dejo el código modificado:

Código
  1. Private Sub ColorearFecha()
  2.    Dim vFechaAlta As String, vFechaPago As String
  3.    Dim i As Integer
  4.    Dim vColumna As Integer
  5.  
  6.    grilla.Redraw = False
  7.    For i = 1 To grilla.Rows - 1
  8.        For vColumna = 1 To grilla.Cols - 1
  9.            grilla.Row = i
  10.            grilla.Col = vColumna
  11.            If RST!inscripcion >= CDate(RST!proximopago) Then
  12.               grilla.CellBackColor = vbRed
  13.            Else
  14.                grilla.CellBackColor = vbGreen
  15.            End If
  16.        Next vColumna
  17.    Next i
  18.    grilla.Redraw = True
  19. End Sub

Y una imágen para que vean lo que les digo:



Están marcadas en verde las dos filas que tendrian que figurar como PAGO y en rojo los que tienen que pagar nuevamente.

Saludos y gracias!
132  Programación / Programación Visual Basic / Re: Trabajar con FECHAS en: 9 Septiembre 2009, 07:06 am
es lo mismo simplemente yo lo hice asi nomas para que tengas una idea, pero bueno te explico:

Código
  1. Private Sub ColorearFecha()
  2.    Dim vFechaAlta As String, vFechaPago As String
  3.    Dim i As Integer
  4.    Dim vColumna As Integer
  5.  
  6.    MSHFlexGrid1.Redraw = False 'deshabilita el repintado para que no parpadee cuando se pintan las celdas
  7.    For i = 2 To MSHFlexGrid1.Rows - 1 ' recorre las filas de la grilla
  8.      For vColumna = 0 To MSHFlexGrid1.Cols - 1 'recorre las columnas de la fila actual
  9.            MSHFlexGrid1.Row = i 'posiciona la fila actual
  10.            MSHFlexGrid1.Col = vColumna 'posiciona la columna actual
  11.            vFechaAlta = CDate(Format(MSHFlexGrid1.TextMatrix(i, 0), "dd/MM/yyyy")) ' saca la fecha de alta de la columna 0
  12.            vFechaPago = DateAdd("d", 30, vFechaAlta) 'calcula la fecha de pago sumandole 30 dias a la fecha de alta
  13.            If Date > CDate(vFechaPago) Then 'si la fecha actual es mayor a la fecha de pago es porque el tipo no pago
  14.               MSHFlexGrid1.CellBackColor = vbRed 'marca en rojo
  15.            Else
  16.               MSHFlexGrid1.CellBackColor = vbGreen ' marca en verde
  17.            End If
  18.      Next vColumna 'siguiente columna
  19.    Next i 'siguiente fila
  20.    MSHFlexGrid1.Redraw = True ' habilita el repintado
  21. End Sub

en la grilla debe haber otra columna( que seria otro campo en la base de datos) que guarde la proxima fecha de pago, la calculas directamente cuando das de alta el cliente, por ejemplo ahi vos diste de alta 2 clientes cuya fecha de alta es la misma, bueno cuando das de alta el cliente debes guardar tambien la fecha de proximo pago (que seria la fecha de alta + 30 dias). y en la grilla para estos 2 te quedaria que la fecha de proximo pago seria el 08/10/2009.eso es para cuando das de alta, ahora debes hacer una pantalla que sea para hacer pagar el cliente o desde un boton ahi nomas , ni idea como tenes pensado hacerlo, pero la idea seria que si paga por segunda vez otra vez le sumes a la fecha de pago otros 30 dias y asi sucesivamente cada vez que el cliente paga.la funcion esta la llamas despues de que cargas la grilla siempre.

saludos.


Muchas gracias campeón, no solo me ayudaste sino que me diste una idea más para mi programa.
Cualquier duda aparezco por acá.

Gracias Seba!! :)
133  Programación / Programación Visual Basic / Re: Trabajar con FECHAS en: 9 Septiembre 2009, 05:51 am
Te agradezco Seba siempre por ayudarme.
Pero la verdad se me complica entender el código. Y también traté de aplicarlo a mi proyecto que es con BASE DE DATOS pero tampoco pude hacerlo andar.

Cuando creo un nuevo socio le puse un campo que diga "Fecha Que Paga", como me indicaste vos.

Más que nada de el codigo que pusiste no entiendo el if.
Si no es mucho pedir, podrías comentarlo a ver si lo entiendo de esa manera?

Desde ya muchas gracias Seba!

Saludos!

PD: Dejo una imágen del proyecto así ven como es.

Form Principal


Form Nuevo


Saludos!!
134  Programación / Programación Visual Basic / Trabajar con FECHAS en: 9 Septiembre 2009, 00:55 am
Bueno hace rato ya no tenía ninguna duda, así que vine a molestar de nuevo.
Espero que me puedan dar una mano.
Lo que estoy haciendo es una aplicación para un gimnasio.
Lo que intento hacer es que en una Grilla (MSHFLEXGRID) me figure si pagó o no pagó el socio ingresado.

O sea, yo cuando ingreso un socio nuevo, en un textbox figura la fecha que se inscribe (día que se crea el nuevo socio) y quiero que al MES siguiente, en la grilla me figure en ROJO si tiene que pagar NUEVAMENTE el mes o si ya pagó que figure en VERDE.

La verdad, no tengo idea como hacerlo.
Yo pensaba hacer:

Si fechainscripcion > fechaactual entonces
        GRILLA en color ROJO.
Sino
        GRILLA en color VERDE.

Obviamente TOMANDO con Mid o Left solamente los dos primeros valores de la fecha, pero no me salió.

Espero que me puedan dar una mano.
Desde ya muchas gracias!
135  Programación / Programación Visual Basic / Re: Duda Visual Basic + Access en: 27 Agosto 2009, 05:33 am
ovbio, pues tenes que tomar el ID de la columna seleccionada, pero en la columna donde esta el ID del registro...eso de hacer Call Form_Load no es nada bueno, mejor create una funcion que te carge todos los datos en el listview y llamas siempre que quieras actualizar a esa funcion. tambein al listview ponele la propiedad FullRowSelect = True asi te selecciona toda la fila y no el primer item.

saludos.

seba123neo, yo estoy usando MSFLEXGRID.
Igualmente busqué alguna propiedad parecida a lo que vos comentabas y encontré
SelectionMode = FlexSelectionByRow, entonces al poner eso me marca toda la fila
y ahora SI FUNCIONA EL PRIMER CODIGO DE TODO QUE HABÍA PUESTO.

Ya que al marcar toda la fila lo que me toma es el ID. Y quedó solucionado!! :D

Muchas gracias seba, comentando otra cosa, me ayudaste a solucionar esto.
Gracias a los demás igualmente.

Saludos!

PD: Seguiré poniendo las dudas que me sigan surgiendo por acá. Está bien? O empiezo a crear nuevos?
136  Programación / Programación Visual Basic / Re: Duda Visual Basic + Access en: 27 Agosto 2009, 04:59 am
Pues debes ubicar el ID de lo que seleccionas. y luego de ubicarlo ejecutar la consulta.

Creo que no me comprendiste. Voy a tratar de ser más claro:

En la grilla, seleccione el CAMPO que seleccione quiero que al darle BORRAR, se borre.

Pero que pasa? Al hacer lo que hice antes RST.OBJECT solamente funciona el codigo del DELETE cuando clickeo en ID.

Pero si clickeo en Nombre, edad, etc... TOMA EL NOMBRE, pero el DELETE no funciona y tira error ya que este funciona solo con ID.

Tendría que haber otra forma.
Yo tenía entendido que creando una variable y poniendo en el evento click de la grilla:

variable = RST!ID

y después en el DELETE usar esa VARIABLE, pero no funcionó como explique más atrás. :(

Espero que haya quedado más claro.
Gracias igualmente ssccaann43
137  Programación / Programación Visual Basic / Re: Duda Visual Basic + Access en: 27 Agosto 2009, 00:22 am
Código
  1. Private Sub cmdborrar_Click()'Borra el registro seleccionado
  2. <->cn.Execute ("DELETE FROM socios where id= ") & borrarregistro, cn
  3. 'Llama a la funcion LOAD para que cargue la grilla nuevamente.
  4. 'Por lo tanto SE ACTUALIZA.
  5. Call Form_Load
  6. End Sub
  7.  

Coloca un punto de Interrupción allí <-> y verifica que valor tiene borrarregistro.

Por otro lado, te recomiendo que en vez de borrarregistro, indiques el index donde te encuentras posicionado en la grilla.

Por ejemplo usando un listview sería. ListView1.SelectedItem.Text

Traté de hacer esto haciendo GRILLA.OBJECT que es lo que seleccionaría lo que marcás, pero me di cuenta que si selecciono un nombre, o una edad tiraba error. Ya que no pertenece al ID.

O sea cuando marcaba de la tabla un ID, funcionaba perfectamente, pero yo quiero que de la grilla, cuando marques cualquier campo y le des a BORRAR, te borre todo.

Por eso lo estaba haciendo con ID.

:S

Alguna otra opción? Igualmente muchas gracias!
138  Programación / Programación Visual Basic / Re: Duda Visual Basic + Access en: 26 Agosto 2009, 20:42 pm
Gente sigo escribiendo en este post para no abrir otros al pedo.
Mi duda es la siguiente:
Tengo en la grilla ya cargada varios datos, y cuando marco un campo de la grilla o sea seleccionarlo y después ir al BOTON BORRAR, lo que se me borra a mi es el REGISTRO QUE ESTA ARRIBA DE TODO y no el que seleccione.

¿Porque puede ser esto?

Les muestro el source:

Código
  1. Private Sub grilla_Click()
  2. 'Si la grilla esta vacia
  3. If RST.EOF = True Then
  4. 'Muestra mensaje
  5.    MsgBox "La grilla está vacia", vbInformation, "Información"
  6. Else
  7. 'Sino, Almacena el valor del registro
  8. borrarregistro = RST!Id
  9. End If
  10. End Sub

Y acá pongo el BOTON BORRAR:

Código
  1. Private Sub cmdborrar_Click()
  2. 'Borra el registro seleccionado
  3. cn.Execute ("DELETE FROM socios where id= ") & borrarregistro, cn
  4. 'Llama a la función LOAD para que cargue la grilla nuevamente.
  5. 'Por lo tanto SE ACTUALIZA.
  6. Call Form_Load
  7. End Sub

O sea supuestamente el código está bien, pero PROBÉ PONIENDO
msgbox rst!id cuando clickeaba y lo que me figuraba siempre era el VALOR DE ID DEL PRIMERO DE TODOS de la grilla Y NO EL QUE MARCABA  :-\

Espero que me hayan entendido, sino trato de ser más claro.

Muchas gracias!
139  Programación / Programación Visual Basic / Re: Duda Visual Basic + Access en: 24 Agosto 2009, 23:23 pm
Ahora sí, no molesto más por ahora.
Muchas gracias cΔssiΔnі !!
140  Programación / Programación Visual Basic / Re: Duda Visual Basic + Access en: 24 Agosto 2009, 21:39 pm
a uhmm por lo visto creo k estas cometiendo dos posibles problemas

1.- Si te fijas que en el modulo estas poniendo la conexion a la BDD, eh en el form1 no lo estas llamando, entonces el el form load ponle Call Conectar.

2.- Y si te fijas en ese Sub Reload estas declarando una nueva conexion y fijate k stas poniendo RST y fijate que tu estas poniendo asi Set grilla.Recordset = rs, te comistes la t  :xD

FORM1
Código
  1. Private Sub reload()
  2. Set rst = New ADODB.Recordset
  3. rst.Open sql, CN
  4. Set grilla.Recordset = rst '<----------Te falto la T
  5. grilla.Refresh
  6. End Sub
  7.  
  8. Private Sub Form_Load()
  9. Call Conectar '<--------- Te Falto esa
  10. sql = "select * from socios order by id"
  11. Call reload
  12. End Sub

weno creo que esos dos era el problema cualkier cosa avisa Salu2  :¬¬


Es verdad, no me di cuenta de eso.
Arreglé como me dijiste pero seguía teniendo problemas.
El error que arrojaba ahora es:

"Runtime error '3001': Argumentos incorrectos, fuera del intervalo permitido o en conflicto con otros"

Le dí depurar y la línea que marcaba con error es la siguiente:

Código
  1. Private Sub reload()
  2. Set RST = New ADODB.Recordset
  3. RST.Open sql, CN 'ESTA LINEA ARROJABA EL ERROR!!
  4. Set grilla.Recordset = RST
  5. grilla.Refresh
  6. End Sub
  7.  
  8. Private Sub Form_Load()
  9. Call Conectar
  10. sql = "Select * from socios order by id"
  11. Call reload
  12. End Sub
  13.  
y lo que hice fue borrar la variable SQL del form_load y poner el comando directamente, y ahí si funciono y cargó la grilla completamente, así:

Código
  1. Private Sub reload()
  2. Set RST = New ADODB.Recordset
  3. RST.Open "select * from socios order by id", CN '-->LO MODIFIQUE DIRECTAMENTE
  4. Set grilla.Recordset = RST '
  5. grilla.Refresh
  6. End Sub
  7.  
  8. Private Sub Form_Load()
  9. Call Conectar
  10. 'ACA ESTABA LA VARIABLE Y LA QUITÉ!
  11. Call reload
  12. End Sub
  13.  
  14.  


Alguien sabe porque era ese error ya que estamos?

Desde ya muchas gracias a todos por la ayuda, me lo solucionaron perfectamente!

Saludos!
Páginas: 1 2 3 4 5 6 7 8 9 10 11 12 13 [14] 15 16 17 18 19 20 21
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines