PDA

Ver la versión completa : ayuda para un programa en vb6



acker040
06-03-2009, 03:26
Hola!

Bueno mi cuestion es la siguiente.

Estoy elaborando un programa en vb6 cuyo fin es administrar datos, nombres y eso.

Lo tengo desarrolado completamente en cuanto a diseño y las acctividades que realizara el mismo, en realidad es solo un contador y unos botones para hacer visibles e invisibles ciertos datos.

Mi problema radika en lo siguiente:

Es para mi novia es doctora y ella necesita administrar consulta diariamente y a fin de mes administrar todo en unas listas tediosas, asi que le mencione que talvez podria ayudarle.

Lo que necesito es un ejemplo simple, una caja de texto una imagen y un boton de estos de seleccion (no recuerdo el nombre perdon). Quiero saber como guardar los cambios en cada uno de estos objetos, teniendo asi una copia del programa para cada dia y poder acceder a el con los cambias realizados.

De antemano muchisisimas gracias

hystd
06-03-2009, 15:48
A ver si lo he entendido... :)

¿Quieres guardar el estado de cada componente del Form (o ventana) o de la propia Form, de forma que al volver a abrir esa ventana esos componentes vuelvan a tener ese estado? es decir, si un botón de selección (supongo que te refieres a una casilla de verificación o checkbox), está marcado, cuando se ejecute de nuevo la aplicación o se abra la ventana, el checkbox esté marcado y viceversa?

Si es así, necesitas guardar esa información en algún sitio, para posteriormente volverla a recuperar. Puedes usar desde claves de registro hasta un fichero en disco.

Si son muchos datos, optaría por un fichero en disco. Normalmente este fichero suele ser un archivo de configuración (.INI), ya que al ser un fichero formateado y estructurado, y además existen funciones para su manejo, es más fácil que intentar hacer un parser propio en un fichero de texto estandar (.TXT) desde cero.


Así el procedimiento es que cuando cierre la aplicación, debes testear el estado de cada uno de los componentes, algo así como: "si el checkbox1 está marcado, graba un 1 en el .INI". "Si el checkbox2 está desmarcado graba un 0 en el .INI", "Si la imagen tiene una foto, graba ruta de la foto en el .INI", etc...

No he puesto código fuente porque es amplio el tema de trabajar con ficheros .ini, pero esa sería la solución. Busca cómo trabajar con estos ficheros.

Un saludo.

acker040
07-03-2009, 04:22
Hola Graciaspor tus consejos

La vdd no se manejar la cosa del .ini.

Me gustaria que de dieras un ejemplo simple en cuanto a combo box,command, imagen, textbox. un ejemplo sencillo que abarque esos controles.

Otra cosa la idea es que al guardar se aga una copia del programa para tener una copia de cada dia y despues acceder a ellos. o sea una copia cada dia para tener como registros del las consultas de cada dia.

Gracias y un saludo

hystd
09-03-2009, 01:40
Aquí tienes un ejemplo para manejar ficheros .INI usando la API WIN32:

http://www.recursosvisualbasic.com.ar/htm/listado-api/159-leer-grabar-archivo-ini.htm

En ese ejemplo se muestra cómo guardar las dimensiones de la ventana principal, de forma que al volver a ejecutar la aplicación, ésta posea su ventana principal con dichas dimensiones.

Un fichero .ini contiene la siguiente estructura:

[SECCION1]
Key1=valor1
Key2=valor2
Key3=valor3
...

[SECCION2]
Key1=valor1
Key2=valor2
...


A modo de ejemplo, tu fichero .INI, tras grabar toda la información que deseas, debería quedar algo así (es sólo un ejemplo):

[CONTROLES]
check1=0 //significa que el checkbox1 estaba desmarcado cuando la aplicación se cerró
check2=1 //lo mismo, pero el chekbox2 estaba marcado
imagen="c:\mifoto.jpg" //guardamos la ruta de la imagen que contenia...
textbox="el texto del TextBox"...
etc...

De forma que cuando la aplicación se ejecute, debe leer cada una de las entradas de ese fichero y asignar ese valor a la propiedad del objeto correspondiente.

Recuerda que en un fichero .ini puedes almacenar información de tipo númerico, texto (caracter o string). Por tanto, puedes guardar un atributo de cualquier objeto de tu aplicación que sea de éste tipo. Si es de otro distinto, por ejemplo de tipo boolean, debes "inventarte" su correspondiente codificación (por ejemplo grabar un 0 o un 1 como tipo de datos "entero").

Todo depende de qué propiedad o atributo es el que quieres guardar... echa por lo menos un vistazo a la documentación que hay en la red para el manejo de estos ficheros, verás que no es nada del otro mundo.

Un saludo.

acker040
11-03-2009, 02:17
Agradesco mucho tu atencion hystd, y aprovechandome un poco de tu amabilidad, podrias echarle un vistaso a mi programa
http://www.mediafire.com/?ghkmgkijozv
asi nos entenderemos un poco mejor, por cierto los botones de edad y de numero de asistencias aun no esta en funcionamiento lo que pasa es que mi novia no me a dicho los parametros que debere de tomar.
Soy demasiado novato asi que espero una critica constructiva jeje

Muchisimas gracias de antemano

hystd
11-03-2009, 15:06
Bien, según veo lo que pretendes no es guardar información referida a atributos de objetos, sino información sobre todos los datos que sean introducidos de los pacientes, ¿cierto?

Ok! Bueno, si es así, te voy a dar varias recomendaciones.

Primero, Si la cantidad de datos es muy grande (pongamos más de 100) y fuera necesario realizar operaciones de búsqueda, ordenación, etc... lo recomendable es utilizar una base de datos, ya que éstas organizan la información con estructuras de árbol y además poseen las instrucciones pertinentes dentro de ellas, con lo cual se optimiza bastante el rendimiento.

Si no es el caso, (son unos pocos de datos, pongamos menos de 100), y no es necesario realizar ninguna operación sobre estos datos, simplemente visualizar, (aunque hasta cierta cantidad podríamos prescindir del uso de base de datos para realizar operaciones sobre ellos y utilizar algoritmos de búsqueda, ordenación etc... directos, ya que son pocos datos), entonces podrías seguir con la dinámica de guardar la información de los pacientes en un fichero de texto plano.

Ahora bien, tal y como lo tienes ahí, y suponiendo que optamos por usar un fichero de texto plano, la forma más correcta de tratar los datos referidos a un paciente es crearte un registro "paciente" con los campos "nombre", "sexo", "edad", "PVez", etc...

Así mismo, no es nada correcto, ni por supuesto elegante el poner un número fijo de objetos (41 en tu caso), ocultos, y según se añadan ponerlos visibles... y posteriormente usar un contador auxiliar para ir contando los pacientes añadidos... La forma de realizar ésto es usar una lista auxiliar e ir introduciendo en ella cada registro "paciente".

Pero bueno, limitándonos a lo que tienes hecho, la forma de guardar los datos de los pacientes en un fichero de texto plano, sería algo asi como:


Private Sub Command1_Click()
Open "Pacientes.dat" For Output As #1
Print #1, Nuevo
For i = 0 To Nuevo
Print #1, Nombre(i).Text
Print #1, Sexo(i).Text
Print #1, Edad(i).Text
If PVez(i).Visible Then
Print #1, "1"
ElseIf Not PVez(i).Visible Then
Print #1, "0"
End If
//Hacemos lo mismo para el resto de los campos que quedan
Next i
Close #1
End Sub


Del mismo modo, para cargar los datos en la próxima ejecución (puedes ponerlo en el evento Form_Load()), debes abrir el fichero para lectura (usando Open "Pacientes.dat" For Append As #1), y usando Line Input para ir leyendo cada una de las líneas del fichero.

Puedes ver el contenido de cómo se almacena renombrando "Pacientes.dat" por "Pacientes.txt".

Por lo demás el programa tiene una interfaz bonita. ;) Seguro que a tu novia le gustará mucho.

Un saludo.

acker040
11-03-2009, 22:35
Gracias de nuevo.

Unas cuantas cuestiones:

Mi idea es tener guardados datos por dia(por eso la idea de soloo 41 personas ya que el numero maximo de pacietes que a atendido es de 32), creo que entonces debo de crear una lista auxiliar para cada dia, y no me queda claro como utilizar line input para leer los datos.

Como lo pudiste constatar es muy basico el conocimiento que tengoo en cuanto a la programacion, creeme que entiendo lo que me explicas pero llevarlo a la practica se me dificulta.

Tengo la idea de tener casillas de texto, una para ingresar el nombre con el que se desea guardar la lista auxiliar(la cual seria la fecha del dia en que se elaboro la llista), y otra para al momento de abrir el programa, seleccionar la lista deseada(esta casilla se utilizaria al momento de llenar los regristos que le piden a ella a fin de mes y son divididos dia por dia, con esto ella accederia a la lista de cualquier dia y completar sus hojas de regristo mas facilmente mediante los botones). Se puede hacer eso?

Por ultimo y creo que aprovechandome un poco demas, podrias iniciar en mi programa lo que necesito hacer(ya con la idea de guardar datos dia por dia) y enviarmelo de la misma manera que lo hice.

Estoo me ayudara mucho a comprender mas.

Gracias de antemano.

hystd
12-03-2009, 01:33
A ver, porque la cosa puede parecer sencilla, pero dependiendo de qué pretendes conseguir se puede complicar mucho más como para tratarlo con simples ficheros de texto...

A mi me parece que lo que pretendes conseguir dista mucho de lo que preguntabas en tu primer post :p, y creo que la solución más rentable es gestionar todo mediante una base de datos...

Según he entendido, quieres que cada día se tenga que cargar la lista del día anterior, y en esta jornada se va a ir actualizando, ya sea añadiendo, borrando o modificando pacientes y el resultado de la jornada actual se guarde en una nueva lista. ¿Así es el procedimiento?

Es decir, no queremos realizar cosas del tipo: "Hoy llega el paciente Alberto García, el cual sabemos que vino el dia 3 de marzo, y quiero ver su historial". Porque si te fijas, he dicho "Alberto García" y "3 de marzo", que quiere decir que sabemos, o mejor dicho, tenemos la información guardada de que vino ese dia... No creo que se sepa de memoria el día que vino cada paciente... Porque podrías pensar: "Cargo la lista del dia 3 de marzo, busco a Albero García y listo!", pero ¿cómo se acuerda que era ese dia?.

Si cosas de este tipo, o de este otro (por poner unos ejemplos): "Mostrar pacientes que vinieron el día x", "Mostrar pacientes que sólo han venido una vez", "Mostrar pacientes que poseen la enfermedad x", "Mostrar pacientes varones mayores de 65 años", etc... es lo que pretendes conseguir, te digo desde ya que debes cambiar completamente el planteamiento del problema y enfocarlo todo desde el punto de vista de una base de datos.

Por tanto, aclara bien que es lo que quieres hacer, y si por el contrario sólo importa lo que se hace en el dia actual sin tener en cuenta los anteriores, entonces sigue con la dinámica de ficheros independientes según la fecha.

Te aclaro ésto, antes de seguir trabajando de forma improvisada...

Un saludo.

acker040
12-03-2009, 02:28
Bueno tratare de ser mas explicito

Quiero tener un programa base, pongamos por ejemplo a Word, abrirlo hacer el trabajo y al termino de el mismo guardarlo con un nombre especifico, que es en el word guardar como, asignar un nombre al archivo, pero tener el programa base para el dia siguiente acceder a el y hacer lo mismo. La finalidad del programa es unicamente los botones, a lo que le llamo coincidencias. La intencion de tener una copia cada dia es por que en las listas que le llegan a ella el fin de mes le piden que adminnistre los datos de cada dia del mes correspondiente, y efectivamente como dices "Mostrar pacientes que sólo han venido una vez", "Mostrar pacientes que poseen la enfermedad x", "Mostrar pacientes varones mayores de 65 años", etc...

Po eso los unicos botones que funcionaran seran sexo,edad,pvez,seguro,oportunidades,subsecuente,as istencias, y diagnostico, por lo tanto el nombre no no interesa en lo mas minimo y la fecha es para llenar lñas llistas del fin de mes. espero ser mas claro.

Oie sii tienes messenger para conectarnos y tener una platica mas extensa el mio es NOMAILS agregame amigo. Gracias!

shilou
12-03-2009, 12:08
muy bien

wayfare
13-06-2009, 23:57
Otra manera mas eficiente seria crearte una base de datos para ahy tener almacenada la informacion que nesecitas. Y repcuperarla o actualizarla desde un formularui en vb 6.0

wayfare
14-06-2009, 00:09
' Para hacer esto recuerda agregar la referencia a DAO 3.5 en Proyecto --> Referencias

' PARA CREARTE LA BAS DE DATOS SIGUE EL SIGUIENTE CODIGO
' Esto codigo lo puedes agrear en formulario en Form_load() o en algun boton para que al precionarlo cree la base de datos

Dim Data_Base as DataBase
Dim Tabla as TableDef
Dim Campo as Field

'Crea la base de datos
set Data_Base = CreateDataBase("ruta de tu base de datos",dbLangGeneral)

'Creamos la tabla
set Tabla = DataBase.CreateTableDef("TuTabla")

'Creamos el primer campo
Set Campo=Tabla.CreateField("Nombre",tipo de dato,Tamaño)

' Lo añadimos a la tabla
Tabla.Fields.Append Campo

...



'Añadimos la tabla a la base de datos

Data_Base.TableDefs.Append Tabla

'Cerramos la base de datos

Data_Base.close


' Y asi creamos la base de datos

hystd
14-06-2009, 03:53
Gracias por el aporte...

Un saludo.