Visual Basic - Ayuda con un programa

Life is soft - evento anual de software empresarial
 
Vista:
sin imagen de perfil

Ayuda con un programa

Publicado por Alexandra (2 intervenciones) el 23/07/2014 00:21:54
Hola a tod@s, estoy haciendo un programa y ando algo atorada, primero explico como es su funcionamiento y luego les cuento los problemas que estoy teniendo:

(Voy a ejemplificar los usos tomando como ejemplo una escuela).

1 .- El programa se abre y aparece una ventana que pide contraseña para ingresar al sistema.

2 .- Si la contraseña es ingresada de manera correcta, se cierra ese frame y abre otro que da a elegir que es lo que se quiere hacer, si revisar el registro o añadir uno nuevo, en este caso:

a) Añadir un registro añade un nuevo grupo, maestro, etc (ver numero 3).
b) La opcion de ver registro la hace mediante un ListBox, el cual se despliega y muestra los grupos registrados, al seleccionar uno abre ese grupo (apartado siguiente o 3).

3 .- Aqui se podria decir que es la ventana principal del programa, muestra un Label con nombre del profesor, otro con el nombre del grupo, otro con el de la seccion (kinder, primaria, secundaria, prepa), abajo de la descripcion, hay un TextBox con barras de desplazamiento, en el se muestran eventos, por ejemplo seria algo asi:

Nombre Alumno Fecha Costo desperfecto Observaciones

Lo que hace esta ventana, es permitir ver reportes relacionados con el grupo, y permitir añadir nuevos reportes, es toda su funcion, asi quedaria por ejemplo:

Nombre Alumno Fecha Costo desperfecto Observaciones
Juan P 25/06/13 200 El alumno se comporto....
Laura R 21/12/13 500 El alumno falto 5 dias y dijo que....

Obviamente cada cosa es una variable diferente (Nombre alumno, fecha, Costo desperfecto, observaciones), pero en
el TextBox hay que hacer que salga todo ordenado (como tratandose de una tabla respetando las tabulaciones) y que lleve su secuencia (que corresponda toda la fila al mismo reporte).

4 .- Dentro de la pestaña menu del programa (donde dice Archivo, Edicion, etc), hay una llamada "Estadisticas", cuando se selecciona esta abre un Frame con opciones:

a) Ver alumnos por numero de reportes (no hace distincion de grados ni grupos), aqui muestra en un TextBox la misma informacion que la que se muestra en el TextBox del apartado 3, excepto que lo hace mostrando todos los reportes sin importar grado ni grupo, y yendo del alumno con mas reportes al que tiene menos reportes, agrupando de esta forma los eventos de cada alumno (repito, sin importar grado y grupo).

b) Ver al igual que en a, pero mostrando la informacion de mayor a menor segun el costo del desperfecto.


Ese seria el programa, las partes donde me he atorado son:

A mi forma de ver, tendria que hacer una tabla que almacenara los Niveles escolares (primaria, secundaria), para poder agregar en ella alguno mas adelante (si se utilizase), vamos bien, pero al elegir uno en especifico, creo que deberia tener su propia tabla para almacenar informacion (una tabla dentro de otra tabla???), esto no lo se trabajar en absoluto, asi que empiezan los problemas.

De alli el lograr que el textbox del apartado 3 (y 4), hay que hacer que salga todo ordenado (como tratandose de una tabla respetando las tabulaciones) y que lleve su secuencia (que corresponda toda la fila al mismo reporte), la parte preocupante es que aparezca todo de corrido y que salga ordenado.

Por ultimo el poder obtener informacion de todas las tablas disponisbles para el apartado 4 y el ordenar los valores segun el numero de repeticiones.

Lo demas ya lo tengo hecho, solo estoy atorada con eso (casi nada :( ).

Si alguien me pudiese ayudar agradeceria mucho.

No quisiera ver ejemplos de bases de datos de otros ni alguna base plantilla para armar mi programa, ya que la parte mas interesante de esto que estoy haciendo es el aprender haciendolo (valga la redundancia).

Por ello mismo me gustaria saber de que forma hacerlo yo, para irlo poniendo a la practica.

Cabe aclarar tambien que mi base de datos esta hecha en Acces (con un control correspondiente en mi programa).

Agradezco mucho su atencion, y de antemano gracias por sus aportes.

Besos.


PD: Alguien que me pueda explicar algo: hice un programa algo parecido a este, todo salio bien, a la hora de compilarlo y ejecutarlo, igual todo bien, excepto que me lleve el programa a otra PC y al querer abrirlo no se puede por la base de datos, cosa que se soluciona poniendo la base en la misma ruta donde estaba cuando arme el programa, como puedo dar la orden para que busque la base de datos en el mismo directorio donde este el programa, sin importar si lo tengo en la unidad C, D o en el directorio que sea?

PD 2: Una enorme duda, si hago mi programa con una base de datos Acces y lo quiero ejecutar en una PC que no tenga instalado Acces, funciona?

Saludos y muchas gracias =)
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
sin imagen de perfil

Ayuda con un programa

Publicado por Pico (114 intervenciones) el 23/07/2014 10:37:00
Una tabla dentro de otra tabla no, una tabla en la que hay algo que define la entrada en otra tabla. Una tabla con un campo X que se corresponde un id de la entrada en otra tabla. Organizar cómo deben ser las tablas no suele ser fácil, pero hay que hacerlo bien antes de empezar. Si no....

No uses TextBox, usa un gid, como DataGrid o DataGridView.

Leer información de una tabla son consultas, y ordenar se ordena con orderby de la consulta o sort de la columna de un grid.

Se puede leer una base de datos access sin tener el access instalado. Eso que llamas access es un cliente, y un programa tuyo que lea de una base de datos access es otro cliente. Para hacer un cliente de algo no hace falta otro cliente, hace falta un servidor, en este caso servidor de bases de datos access, y eso lo incluye microsoft por todas partes.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil

Ayuda con un programa

Publicado por Alexandra (2 intervenciones) el 25/07/2014 21:42:01
Antes que nada gracias por la respuesta.

Varias cosas me han quedado claras, excepto la primera "Una tabla dentro de otra tabla no, una tabla en la que hay algo que define la entrada en otra tabla. Una tabla con un campo X que se corresponde un id de la entrada en otra tabla", la verdad es que soy nueva con las bases de datos (o lo unico que aprendi fue a hacer bases sencillas), por lo que no entiendo nada de como deberia de ser, si me lo pudiese explicar un poco mejor se lo agradeceria muchisimo.

Besos y gracias.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Wilfredo Patricio Castillo
Val: 8
Ha aumentado su posición en 9 puestos en Visual Basic (en relación al último mes)
Gráfica de Visual Basic

Ayuda con un programa

Publicado por Wilfredo Patricio Castillo (260 intervenciones) el 27/07/2014 18:46:58
Bueno, todo un testamento, jejejejee, pero bueno, es preferible abundar que falte.

La cosa es muy simple, no se si has estudiado o solo aprendiste mirando.
Si estudiaste pues solo recuerda la teoría relacional y ya.

Ya te dijeron que debes tener 2 tabla o una tabla para cada cosa y lo que dices que no has entendido es simple te lo daré un ejemplo mas o menos aproximado a lo que necesitas:

Tabla Alumnos:
Idalumno
NombreAlumno
...mas atributos que puedan ir..


Tabla Desperfectos:
IdDesperfecto
NombreDesperfecto
....mas atributos que puedan ir....

Entonces, por decir, si tienes una tabla con los desperfectos que existen, no se se me ocurre:
1 Rotura de ventana de vidrio
2 Rotura de carpets
3 Malograr mesa

Entonces debes tener una tabla de transacciones para esos casos que sería mas o menos así:

Tabla Alumno_Desperfectos:
IdAlumno
IdDesperpecto
...mas atributos que sean necesarios...

Entonces con eso ya se solucionó tu problema, ya que en esa tabla habrá algo así:
Idalumno,IdDesperfecto, Costo,Etc
1, 3,50

Todo ello estamos hablando de una base de datos relacional, y si es access, pues es relacional debidamente normalizada y relacionada.

Solo te quedaría hacer una consulta mas o menos así:

Select t.IdAlumno,A.NombreAlumno,t.IdDesperfecto,D.NombreDesperfecto,D.Costo From Alumno_Desperfectos As t Inner Join Alumnos as A on t.Idalumno=A.IdAlumno Inner join Desperfectos As D on t.IdDesperfecto=D.IdDesperfecto

El resultado de ejecutar esa consulta lo puedes mostrar en un datagrid, ya que me parece que estás todavía usando vb6.

Para ejecutar la consulta tendrías que usar un recordset y como datasource del datagrid iría el recordset.

Asunto arreglado el primer punto.

Respecto a que si se puede ejecutar tu programa en otra pc donde no tenga acces, pues claro que si es posible, lo que tienes que hacer luego de tener listo tu programa, es generar un instalador, el cual empaqueta todo lo necesario para que pueda trabajar con una base de datos access y también puedes agregarle la base de datos a ese instalador.

Ahora el tema para que ubique la base de datos en un determinado lugar sin que quede fijo de como lo hiciste inicialmente, pues es simple:

Debes tener una opcion de configuración en tu programa, para que lea desde algún lado la configuración, podría ser un archivo de texto por ejemplo. Inicialmente va a leer el archivo, sino existe o está vacío, que te muestre la opción de configuración, sino, lo lee la ubicación y ya va a funcionar.

Para que puedas hacer esa funcionalidad y ubique la base en VB6.0 se hace con App.Path & La ruta donde vas a poner tu base de datos & "\Tubase.mdb"

Listo, asunto solucionado.

Espero haberte aclarado tus dudas y no haberte confundido mas.

Saludos cordiales
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar