miércoles, 31 de diciembre de 2008

Mi propuesta de hoy para mi hijo en España

Oscar dice:
Hola hijo, feliz dia.
Oscar dice:
Dios te bendiga
Oscar (España) dice:
igualmente
Oscar dice:
Este tiene un significado.
Oscar dice:
En esencia es el corte de un tiempo, el corte de un año
Oscar dice:
Muchas personas lo viven sin razon alguna, creyendo que es sòlo tiempo de parranda, tomadera y desborde
Oscar dice:
realmente es un tiempo de evaluaciòn.
Oscar dice:
Hoy debemos estar haceindo, desde muy temprano, una evaluaciòn, una observaciòn rigurosa de todo los que vivimos.
Oscar dice:
Los logros obtenidos, los acierto, los desaciertos, las cosas obtenidas y cuànto hemos aprendido
Oscar dice:
Este dìa es un momento de reflexiòn con el propio yo
Oscar dice:
Es una mirada a la mirada de los demas
Oscar dice:
Hijo, te invito para que hoy te pongas en conversacion cotigo mismo y evalues tu desempeño personal, con los demàs y con tu espiritualidad.
Oscar dice:
Evalùate mes a mes
Oscar dice:
haz un balance de lo conseguido
Oscar dice:
y finaliza ubicando un nivel en el que te encuentras
Oscar dice:
que dices?

viernes, 19 de diciembre de 2008

Bases de datos en Excel Parte II. Botón Eliminar.

Private Sub BotonEliminarRegistro_Click()
If CanRegistros = 0 Then Exit Sub
EliminarRegistroEstudiante (Registro + 1)
CanRegistros = CanRegistros - 1
Me.BotonAtras.Value = True
If CanRegistros = 0 Then
Me.BotonModificar.Enabled = False
Me.BotonEliminarRegistro.Enabled = False
Me.BotonBuscar.Enabled = False
End If

End Sub

EliminarRegistroEstudiante es una subrutina o subprogama que debe aparecer en Módulos, ModulosEstudiante, que se menciono anteriormente.

Bases de datos en Excel Parte II. Botón Modificar.

Dim Codigo As String, PosExiste As Long
If Me.BotonModificar.Caption = "Modificar" Then
Me.BotonModificar.Caption = "Guardar Modificación"
Me.Frame1.Enabled = True Me.BotonNuevo.Enabled = False
Me.BotonEliminarRegistro.Enabled = False
Me.BotonSalir.Enabled = False
Me.BotonBuscar.Enabled = FalseElse
Codigo = Me.TextBox1.Text
PosExiste = ExisteCodigo(CanRegistros, Codigo)
If (PosExiste >= 1 Or Codigo = "") And (Registro <> PosExiste) Then
'condicional para el texto adecuado en caso de error
If Codigo = "" Then
MsgBox "Imposible Modificar el nuevo registro, el valor para el campo Código no
puede ser vacio.", vbCritical
Else
MsgBox "Imposible Modificar el nuevo registro, el valor para el campo Código ya
existe.", vbCritical
End If
Me.BotonInicio.Value = True
Else
'creando el registro ya que no existe
FilaEst = Registro + 1
For i = 1 To TotalCampos
Hoja2.Cells(FilaEst, i) = "'" & Me.Controls("TextBox" & i).Text
Next i
End If 'fin del existe codigo

'Activando botones
Me.BotonModificar.Caption = "Modificar"
Me.BotonNuevo.Enabled = True
Me.BotonEliminarRegistro.Enabled = True
Me.BotonSalir.Enabled = True
Me.Frame1.Enabled = False
Me.BotonBuscar.Enabled = True
End If

miércoles, 17 de diciembre de 2008

martes, 16 de diciembre de 2008

Un gesto de carisma para los niños del Centro Educativo Marie Poussepin

El Colegio de La Presentación Aguacatal ofrece a la comunidad circundante a sus instalaciones una alternativa educativa, el Centro Marie Poussepin, que beneficia a niños del barrio Aguacatal, de escasos recursos económicos pero de una invaluable bondad y disposición humana para compartir. En esta época de Navidad, las estudiantes de nuestro colegio reciben de su parte una novena de Navidad maravillosa, hermosa, de alto potencial humano, que deja perplejo a cualquiera que tenga fibra sensible.



Además, las niñas de la jornada de la mañana les ofrecen, al terminar su novena, un plato navideño y regalos que son almacenados con varios días de anticipación. Es agradable ver la abundancia de comida en esos puestos, esa alegria desbordante en sus salones. La niñas los ponen a bailar, a jugar y a reir. Es inmensa la algarabía por el momento de recibir los regalos: niñas de cada grado van pasando para obsequiarles su regalo de manera personal. Nadie se queda sin ofrenda. Por esto y por su calidad educativa, el colegio de La Presentación Aguacatal se lleva mil y mil aplausos de mi parte y una bendición enorme de parte del creador. Invaluable labor educativa.




















viernes, 12 de diciembre de 2008

Bases de datos en Excel Parte II. Botón Nuevo.

Hasta el momento hemos creado el formulario Estudiantes, con sus cuadros de texto y botones de mover registro. Este debe tener ahora los objetos de operaciónes con registros, de tal manera que se deben crear los botones Nuevo, Insertar, Modificar, Borrar, entre otros.

Boton Nuevo

Para prepara los cuadros de texto para un nuevo registro, es necesario limpiar la informaciòn que existe en los cuadros de texto, es decir que las casillas deben quedar en blanco y activarse el frame1 (Recuadro Datos). Normalmente cuando nos movemos por los registros, no se pueden modificar, a no ser que el programador lo decida, como se hacía antes en Dbase. Para esto, cree un boton cuyo Name sea BotonNuevo y el caption sea Nuevo en el frame3 de acciones u operaciones y copie el siguiente código:

Dim Codigo As String, Existe As Boolean
If Me.BotonNuevo.Caption = "Nuevo" Then
'limpia textos
Me.TextBox1.Text = ""
Me.TextBox2.Text = ""
Me.TextBox3.Text = ""
Me.TextBox4.Text = ""
Me.TextBox5.Text = ""
Me.TextBox6.Text = ""
Me.TextBox7.Text = ""
Me.TextBox8.Text = ""
Me.Frame1.Enabled = True
Me.Frame2.Enabled = FALSE
CanRegistros = CanRegistros + 1
Registro = CanRegistros
Me.BotonFinal.Value = True
Me.BotonNuevo.Caption = "Insertar"
me.textbox1.setfocus
Else
'insertando el nuevo código
Codigo = Me.TextBox1.Text
Existe = ExisteCodigo(CanRegistros, Codigo) 'Insertar el código que se menciona abajo
If Existe Or Codigo = "" Then 'condicional para el texto adecuado en caso de error
If Codigo = "" Then
MsgBox "Imposible crear el nuevo registro, el valor para el campo Código no
puede ser vacio.", vbCritical
Else
MsgBox "Imposible crear el nuevo registro, el valor para el campo Código ya
existe.", vbCritical
End If
CanRegistros = CanRegistros - 1
Registro = CanRegistros
Me.BotonFinal.Value = True
Else
'creando el registro ya que no existe
FilaEst = CanRegistros + 1
Hoja2.Cells(FilaEst, 1) = Me.TextBox1.Text
Hoja2.Cells(FilaEst, 2) = Me.TextBox2.Text
Hoja2.Cells(FilaEst, 3) = Me.TextBox3.Text
Hoja2.Cells(FilaEst, 4) = Me.TextBox4.Text
Hoja2.Cells(FilaEst, 5) = Me.TextBox5.Text
Hoja2.Cells(FilaEst, 6) = Me.TextBox6.Text
Hoja2.Cells(FilaEst, 7) = Me.TextBox7.Text
Hoja2.Cells(FilaEst, 8) = Me.TextBox8.Text
End If 'fin del existe codigo
Me.BotonNuevo.Caption = "Nuevo"
Me.Frame1.Enabled = False
Me.Frame2.Enabled = True
End If 'fin del caption del boton


Cabe resaltar que cuando se presiona el boton, cambia por la Opción Insertar y que cuando ya inserta, cambia la opción por Nuevo. Es un boton alternante entre Nuevo e Insertar. La palabra en rojo es una función, a ella se le pasa el número de registros que hay y el código a buscar para que regrese un valor de falso (False) o verdadero (true). Para crearla, haga click dereccho en la ventana de Proyecto e inserte un módulo cuyo nombre sea ModuloEstudiantes. Alli copie el siguiente código:

Function ExisteCodigo(UltimaFila As Long, Codigo As String) As Boolean

On Error Resume Next
Hoja2.ActivateHoja2.Range("A2:A" & UltimaFila).Select
Selection.Find(What:=Codigo, After:=ActiveCell, LookIn:=xlFormulas, _
LookAt:=xlWhole, SearchOrder:=xlByRows, SearchDirection:=xlNext, _
MatchCase:=False, SearchFormat:=False).Activate
If Err.Number <> 0 Then
ExisteCodigo = False
Else
ExisteCodigo = True
End If

End Function

Administrando bases de datos en Excel Parte I. Cargando la información y moviéndose en el registro.

Muchos son los que usan Excel para registrar información en forma de Base de Datos (B. D.), siendo en potencia una hoja de cálculo. Cuando se crea un archivo en Excel, por defecto se almacena como un libro el cual tiene hojas que a su vez contiene filas y columnas. Podemos usar el libro como una B. D. asumiendo cada hoja como una tabla(informaci{on de una BD que posee características en común). Por ejemplo, si se quiere administrar una B. D. de un colegio, la información general del estudiante se puede almacenar en la Hoja2 (se puede cambiar su nombre por Estudiantes, pero a la hora de programar seguira siendo Hoja2 como objeto), bajo los nombres de columna: Codigo, Grado, PrimerApellido, SegundoApellido, PrimerNombre, SegundoNombre,FechaNacimiento, Genero... (Se acostumbra a escribir los nombres de estos campos sin espacios y sin caracteres especiales para evitar conflictos en sentencias de consulta Sql). La Hoja1 se deja para incrustar botones que se muestran en las herramientas de VisualBasic (VB), recomiendo que se cambie su nombre por Principal. Grabar el archivo con el nombre ColegioPrueba.xls. Esta inducción esta bajo Office 2003.

Ingresar la información resulta fácil cuando se trata de una sola tabla, en este caso Estudiantes, pero las herramientas de programación de VB como macros resultan poderosas a la hora de establecer relaciones con otras tablas como Notas del estudiante y Logros del estudiante, entre otras.

Creando el formulario.

Una manera agradable de almacenar registros en la tabla estudiantes es creando un formulario. Para esto, en la hoja1 se debe incrustar un boton que aparece en las herramientas de VB (Ver-Barra de Herramientas-VisualBasic y seleccionar Cuadro de Controles y luego Boton de Comando) Aparecera el objeto CommandButton1. Este objeto tiene unas propiedades, entre ellas se deben cambiar Name (Nombre) y Caption (Titulo). En el cuadro de controles seleccionar Propiedades (icono en forma de reglita), aparecera una ventana con las propiedades del objeto. Cambie el Name CommandButton1 por BotonEstudiantes (sin espacios) y el Caption por Estudiantes. Seguidamente dar doble click al boton para que aparezca el código en VB.

Private Sub CommandButton1_Click()

End Sub

Estando allí se puede observar, en la izquierda, la ventana de Proyecto (VBProject) y Propiedades del proyecto. En la barra superior de Herramientas aparece el icono de Crear formulario (Insertar UserForm1) Dar click.
Aparecera el formulario, la ventana de Proyecto con los objetos Hoja1,Hoja2,Hoja3 y This WorkBook y la ventana de propiedades (de no estar, hacer click en el icono de propiedades "la manito") En la ventana de propiedades del formulario (UserForm1) cambiar el nombre (name) por FormEstudiantes (Acostumbre a unir las palabras Form y Estudiantes, en este caso, y usar sus iniciales en mayúscula, pues así lo hace el código de VB) y cambie Caption por Datos del estudiante. El formulario es una interfaz que permitira cargar los datos de la hoja Estudiantes de manera organizada con el propósito de facilitar su manipulación (Consultar, borrar, modificar, entre otros).

Cuando se entra a Diseñar un formulario se debe tener clara su estructura: los campos, la barra de mover registros y los botones de operacion con registros. Estos grupos de objetos se pueden encerrar en Frames (recuadros)

Para visualizar los campos, se crean Labels (etiquetas) y TextBox (Cuadros de texto). El label tiene el nombre del campo y en el cuadro de texto se visualiza la el contenido del campo y en tal caso se ingresa su contenido.

Para los campos: Codigo, Grado, PrimerApellido,... se debe crear el Frame1. Cambiar su Caption por Datos. Dentro de este dframe se deben incrustar los label de los campos de la tabla Estudiantes con sus respectivos textbox. Al label1 cambiar su caption por Codigo (Esta es la clave principal, pues el código es un dato que no se repite, que no permite duplicados, es lo que hace un registro diferente de otro), al label2 por Grado y así con el resto. Cerciórese de que los textbox queden ordenados del 1 al 8. Cabe aclarar que el textbox de fecha se pude cambiar por un DtPicker (herramienta de fecha) el textbox de genero se pueden cambiar por un ComboBox o listBox (Cuadro combinado o Cuadro de lista, pues se debe escoger entre M para masculino y F para femenino ) Por ahora todos serán TextBox.





Diseñando la barra de Mover Registro.

Ahora se deben crear cuatro botones en el frame2 (Mover Registro) y un textBox (que será el 9) y organizarlos como se muestra.










Al CommandButton1 cambiar su name por BotonInicio y su caption por < ; al 2 cambiar su name por BotonAtras y su caption por < ; al 3 cambiar su name por BotonAdelante y su caption por >;
al 4 cambiar su name por BotonFinal y su caption por > y al combobox10 cambiar su name por TextBoxBarraRegistro.

Ingresando el código de VB para el boton Inicio.
Haga doble click en el boton inicio, apareceran la líneas

Private Sub BotonInicio_Click()

End Sub

En medio de ellas copie y pegue el siguiente código:
Nota: para evitar ver todos los procedimientos, active el boton Ver Procedimiento que está en la parte izquiera de la barra horizontal de la ventana de código.


Registro = 1
'carga el codigo en el cuadro de texto 1 que está en la hoja2 (Estudiantes)
Me.TextBox1.Text = Hoja2.Cells(Registro + 1, 1)
'carga el grado
Me.TextBox2.Text = Hoja2.Cells(Registro + 1, 2)
'carga los apellidos
Me.TextBox3.Text = Hoja2.Cells(Registro + 1, 3)
Me.TextBox4.Text = Hoja2.Cells(Registro + 1, 4)
'carga los nombres
Me.TextBox5.Text = Hoja2.Cells(Registro + 1, 5)
Me.TextBox6.Text = Hoja2.Cells(Registro + 1, 6)
'carga fecha nacimientoMe.TextBox7.Text = Hoja2.Cells(Registro + 1, 7)
'carga género
Me.TextBox8.Text = Hoja2.Cells(Registro + 1, 8)
'Pone el registro actual sobre el total de registros si está en el primero
'y hay 4 muestra 1/4 Cambielo a su antojo
Me.TextBoxBarraRegistro.Text = Registro & "/" & CanRegistros


La variable Registro y CanRegistros son de tipo global, quiere decir que sus valores se mantienen mientras el formulario está cargado, a diferencia de las locales declaradas con Dim que su valor se pierde cuando el objeto donde fueron declaradas pierde el enfoque, es decir cuando se pasa a otro objeto dentro del formulario. Para declararlas haga doble click en el objeto FormEstudiantes y luego doble click en el fondo del formulario o en cualquier objeto dentro de el, seleccione ahora en el cuadro de lista de la ventana del código la opción General y alli pegue el siguiente código


Public Registro, CanRegistros As Long


Debemos recordar que al cargarse el formulario (evento Activate) se debe mostrar el contenido del primer registro, para esto, pegue el siguiente código en el evento Activate del formulario:


Dim FilaEst As Long 'Creando la variable que contara los registros como entero largo
'Bucle para contar la cantidad de registros que hay en la hoja2 Estudiantes
FilaEst = 2 'Inicia en la fila 2 ya que la 1 tiene los nombres de campos
Do While Hoja2.Cells(FilaEst, 1) <> "" 'Hace mientras la fila sea diferente de vacio
FilaEst = FilaEst + 1 'aumenta la fila de uno en uno para pasar a la siguiente
Loop 'fin del do salto
CanRegistros = FilaEst - 2 'asigna el valor de filaest a canregistros
Registro = 1 'pone el registro en el primero cuando se carga el formulario
Me.Frame1.Enabled = False 'desactiva el recuadro de datos


'carga el codigo en el cuadro de texto 1 que está en la hoja2 (Estudiantes)
Me.TextBox1.Text = Hoja2.Cells(Registro + 1, 1) 'carga el grado
Me.TextBox2.Text = Hoja2.Cells(Registro + 1, 2) 'carga los apellidos
Me.TextBox3.Text = Hoja2.Cells(Registro + 1, 3)
Me.TextBox4.Text = Hoja2.Cells(Registro + 1, 4) 'carga los nombres
Me.TextBox5.Text = Hoja2.Cells(Registro + 1, 5)
Me.TextBox6.Text = Hoja2.Cells(Registro + 1, 6) 'carga fecha nacimiento
Me.TextBox7.Text = Hoja2.Cells(Registro + 1, 7) 'carga género
Me.TextBox8.Text = Hoja2.Cells(Registro + 1, 8)
If CanRegistros = 1 Then ' si no hay registro muestra 0/0 en barraregistro
Registro = 0
CanRegistros = 0
Me.Frame2.Enabled = False 'desactiva el recuadro de mover registro
'cuando no hay registros
Else
Me.Frame2.Enabled = True 'activa el recuadro de mover registros
'cuando hay uno o mas registros.
End If
' pone el registro actual sobre la cantidad de registros
Me.TextBoxBarraRegistro.Text = Registro & "/" & CanRegistros



Nota: Cabe notar que la carga de los registros en los textbox se hace mediante un código que se repite en los cuatro botones (texto en rojo), este código se puede poner en un sólo proceso e invocarlo. Para esto se escribe la sentencia sub CargaDatos al final del codigo del formulario, y se ingresa alli el texto necesario para que se ejecute. Por ahora no se hara, para que sea mas claro.

Código para BotonAtras (recuerde que no lleva tilde)

Registro = Registro - 1
If Registro <= 0 Then Registro = 1 'carga el codigo en el cuadro de texto 1 que está en la hoja2 (Estudiantes)
Me.TextBox1.Text = Hoja2.Cells(Registro + 1, 1)
'carga el grado
Me.TextBox2.Text = Hoja2.Cells(Registro + 1, 2) 'carga los apellidos
Me.TextBox3.Text = Hoja2.Cells(Registro + 1, 3)
Me.TextBox4.Text = Hoja2.Cells(Registro + 1, 4)
'carga los nombres
Me.TextBox5.Text = Hoja2.Cells(Registro + 1, 5)
Me.TextBox6.Text = Hoja2.Cells(Registro + 1, 6)
'carga fecha nacimiento
Me.TextBox7.Text = Hoja2.Cells(Registro + 1, 7)
'carga género
Me.TextBox8.Text = Hoja2.Cells(Registro + 1, 8)
Me.TextBoxBarraRegistro.Text = Registro & "/" & CanRegistros


Código para BotonAdelante

Registro = Registro + 1
If Registro > CanRegistros Then Registro = CanRegistros
'carga el codigo en el cuadro de texto 1 que está en la hoja2 (Estudiantes)
Me.TextBox1.Text = Hoja2.Cells(Registro + 1, 1)
'carga el grado
Me.TextBox2.Text = Hoja2.Cells(Registro + 1, 2) 'carga los apellidos
Me.TextBox3.Text = Hoja2.Cells(Registro + 1, 3)
Me.TextBox4.Text = Hoja2.Cells(Registro + 1, 4)
'carga los nombres
Me.TextBox5.Text = Hoja2.Cells(Registro + 1, 5)
Me.TextBox6.Text = Hoja2.Cells(Registro + 1, 6)
'carga fecha nacimiento
Me.TextBox7.Text = Hoja2.Cells(Registro + 1, 7)
'carga género
Me.TextBox8.Text = Hoja2.Cells(Registro + 1, 8)
Me.TextBoxBarraRegistro.Text = Registro & "/" & CanRegistros

Código para BotonFinal

Registro = CanRegistros
'carga el codigo en el cuadro de texto 1 que está en la hoja2 (Estudiantes)
Me.TextBox1.Text = Hoja2.Cells(Registro + 1, 1)
'carga el grado
Me.TextBox2.Text = Hoja2.Cells(Registro + 1, 2) 'carga los apellidos
Me.TextBox3.Text = Hoja2.Cells(Registro + 1, 3)
Me.TextBox4.Text = Hoja2.Cells(Registro + 1, 4)
'carga los nombres
Me.TextBox5.Text = Hoja2.Cells(Registro + 1, 5)
Me.TextBox6.Text = Hoja2.Cells(Registro + 1, 6)
'carga fecha nacimiento
Me.TextBox7.Text = Hoja2.Cells(Registro + 1, 7)
'carga género
Me.TextBox8.Text = Hoja2.Cells(Registro + 1, 8)
Me.TextBoxBarraRegistro.Text = Registro & "/" & CanRegistros

Para ejecutar el formulario es necesario ir a la hoja principal y en modo diseño dar dobleclick al boton estudiantes, ali en el BotonEstudiantes ingresar el siguiente código

me.FormEstudiantes.show

luego ir al frame de acciones (Frame 3), alli incrustar un boton de Name BotonSalir y caption Salir, en su interior digitar

Unload me

Luego vaya otra vez a la hojo1 o Principal, salga de modo de diseño (reglita) y presione el boton estudiantes. Pruebe todos los botones. en caso de error, por cuestionde copie y pegue, revise bien el texto pegado, pues ha sido del original del programa macro que tengo. De no correr el formulario escribame a camaos2004@hotmail.com Algunos comentarios se hacen con comilla símple y no hacen parte del código (A esto se le denomina documentación) RECUERDE INGRESAR POR LO MENOS CINCO REGISTROS DE MANERA MANUAL (directamente en excel) PARA QUE EXPERIMENTE EL MOVIMIENTO DEL REGISTRO.

sábado, 6 de diciembre de 2008

El aula de clase.

El aula de clase lo concibo como un micromundo de vida donde convergen los intereses múltiples de los estudiantes y maestros. Un espacio como escenario de conocimiento donde los actores son todos aquellos que tienen como intención aprender. Es un momento de encuentro, una puesta en común, un espacio de socialización.

Significa entonces que el aula de clase deja de ser el recinto físico para convertirse en cualquier espacio conveniente para generar momentos de conocimiento y apendizaje significativo. Un parque, una zona verde, el patio, el kiosco, la cancha, el salón de actos, la cafetería, el supermercado, la huerta todos y cada uno de los lugares que se privilegian para la formación del estudiante. El aula de clase como un espacio dinámico e integrador de conocimientos.

Datos personales