Autor Tema: ¿Cómo guardo las preferencias de un programa en Visual Fox?  (Leído 6513 veces)

0 Usuarios y 5 Visitantes están viendo este tema.

Desconectado gilanrodas

  • Sv Full Member
  • *
  • Mensajes: 527
  • What Would Jesus Do?
En un programa que estoy diseñando quiero agregar un ítem "Opciones", "Configuración" o "Preferencias" en un menú "Herramientas". Considero que los datos o parámetros que ahí se escojan no deben guardarse en una base de datos, pero no sé qué me recomiendan. He estado leyendo un poco sobre el 'StrToFile' pero no sé si todas las preferencias, todos los parámetros de distintos controles, pueden quedar almacenados en un sólo archivo y cómo acceder nuevamente a ellos.

Espero haberme dado a entender. Agradeceré su ayuda.

Desconectado ruiz

  • Sv Full Member
  • *
  • Mensajes: 729
Re: ¿Cómo guardo las preferencias de un programa en Visual Fox?
« Respuesta #1 : enero 16, 2009, 02:47:00 pm »
mira mi hermano por ahi me encontre este ejemplito que te prodria servir claro hay mas de una manera de matar un gato esta es una de ellas...


Enviado por pedrohdz en Viernes, 22 Octubre, 2004     
Bases de Datos También se puede utilizar el driver ODBC para importar archivos de texto TXT y CSV.
Su utilización sería algo así como: 1 - Para este ejemplo se utilizó la tabla Categories de la base de datos Northwind, creando un archivo de texto delimitado por tabuladores mediante:

COPY TO categories.txt DELIMITED WITH tab

2 - Crea un archivo SCHEMA.INI en la carpeta que especifique la estructura del archivo TXT que vas a importar. Se puede hacer desde el Administrador de orígenes de datos ODBC, que puedes ejecutar desde VFP con:

RUN /N "C:WINDOWSsystem32odbcad32.exe"

El archivo SCHEMA.INI almacena las propiedades de conexión y estructura de los archivos de texto que se vayan a abrir mediante el driver ODBC de archivos de texto. Su funcionamiento es análogo a los archivos .INI , con lo que se puede utilizar el API ( funciones WritePrivateProfileString y GetPrivateProfileString ) para escribir en el archivo y recuperar sus valores. El contenido final para el archivo categories.txt sería algo asi como:

[categories.txt]
ColNameHeader=False
Format=TabDelimited
MaxScanRows=10
CharacterSet=OEM
Col1=F1 Integer
Col2=F2 Char Width 255
Col3=F3 Char Width 255

3 - Puedes utilizar la siguiente cadena de conexión para abrir el archivo de texto mediante el driver ODBC:

cconexion = "DefaultDir="+JUSTPATH(cArchivo)+";Driver={Microsoft Text Driver (*.txt; *.csv)}" + ;
   ";DriverId=27;FIL=text;MaxBufferSize=2048;MaxScanRows=8;PageTimeout=5;" + ;
   "SafeTransactions=0;Threads=3;UID=admin;UserCommitSync=Yes;"

Es muy importante que en DefaultDir se especifique la carpeta donde esta el archivo TXT actualmente. 4 - Abrir una conexión utilizando esta cadena de conexion:

nHandle = SQLSTRINGCONNECT(cConexion)

5 - Por último generar un cursor local que recupera el contenido del archivo de texto:

nFilas = SQLEXEC(nHandle,cSelect,"Cursor_Texto")

El código completo del programa de ejemplo es el siguiente:

*----------------------------------------------
*--- Abre la tabla y genera el archivo de texto
*----------------------------------------------
USE HOME()+"samplesnorthwindcategories"
COPY TO d:borramecategories.txt DELIMITED WITH TAB
*--------------------
*--- Archivo de texto
*--------------------
cArchivo = "D:BORRAMECATEGORIES.TXT"
*----------------------
*--- Cadena de conexión
*----------------------
cconexion = "DefaultDir="+JUSTPATH(cArchivo)+";Driver={Microsoft Text Driver (*.txt; *.csv)}" + ;
  ";DriverId=27;FIL=text;MaxBufferSize=2048;MaxScanRows=8;PageTimeout=5;" + ;
  "SafeTransactions=0;Threads=3;UID=admin;UserCommitSync=Yes;"
*----------------------
*--- Handle de conexión
*----------------------
nHandle = SQLSTRINGCONNECT(cConexion)
*------------
*--- Consulta
*------------
cSelect = "SELECT * FROM "+cArchivo
*-----------------------
*--- Ejecuta la consulta
*-----------------------
nFilas = SQLEXEC(nHandle,cSelect,"Cursor_Texto")
*-------------------------------------
*--- Contenido del archivo SCHEMA.INI:
*-------------------------------------
*--- [categories.txt]
*--- ColNameHeader=False
*--- Format=TabDelimited
*--- MaxScanRows=10
*--- CharacterSet=OEM
*--- Col1=F1 Integer
*--- Col2=F2 Char Width 255
*--- Col3=F3 Char Width 255



espero te sirva si no me avisas....

Desconectado gilanrodas

  • Sv Full Member
  • *
  • Mensajes: 527
  • What Would Jesus Do?
Re: ¿Cómo guardo las preferencias de un programa en Visual Fox?
« Respuesta #2 : enero 16, 2009, 02:54:47 pm »
Ya lo imprimí. Voy a probarlo y te aviso qué tal me va. ¡Muchas gracias!

Desconectado eduardoantonio10

  • Sv Member
  • ***
  • Mensajes: 108
Re: ¿Cómo guardo las preferencias de un programa en Visual Fox?
« Respuesta #3 : enero 21, 2009, 03:40:45 pm »
En un programa que estoy diseñando quiero agregar un ítem "Opciones", "Configuración" o "Preferencias" en un menú "Herramientas". Considero que los datos o parámetros que ahí se escojan no deben guardarse en una base de datos

No se cuales son tus motivos para no querer guardar los datos en una db pero si es por seguridad los puedes encriptar ya que en un archivo txt tambien pueden los usuarios verlo,abrirlo,modificarlo ten cuiedado q tipo de configuraciones guardas

Desconectado gilanrodas

  • Sv Full Member
  • *
  • Mensajes: 527
  • What Would Jesus Do?
Re: ¿Cómo guardo las preferencias de un programa en Visual Fox?
« Respuesta #4 : enero 22, 2009, 11:17:38 am »
No se cuales son tus motivos para no querer guardar los datos en una db pero si es por seguridad los puedes encriptar ya que en un archivo txt tambien pueden los usuarios verlo,abrirlo,modificarlo ten cuiedado q tipo de configuraciones guardas

No es por seguridad. Lo que pasa es que lo que quiero almacenar son datos, específicamente porcentajes y cantidades numéricas, que van a estar cambiando y que, para el caso, no encuentro conveniente que vaya quedando un "historial" o algo en una tabla para no ocupar más memoria. Por ejemplo, una casilla en donde pueda cambiar el porcentaje de AFP para hacer el descuento respectivo en una planilla. Más tarde puede cambiar ese porcentaje así que emplearía el nuevo y no el anterior. ¿Cómo hago si no quiero que eso no vaya quedando guardado si no sólo halarlo de algún lado y, si se modifica en el cuadro de diálogo, cambie también en el lugar de donde lo estoy halando?

Desconectado MOISES

  • Sv Full Member
  • *
  • Mensajes: 553
Re: ¿Cómo guardo las preferencias de un programa en Visual Fox?
« Respuesta #5 : enero 22, 2009, 11:31:37 am »
Mira lo que yo hago es crear una tabla de parámetros, donde tu los los llevas almacenados o crearte un archivo de memoria (.mem)

+???

Desconectado eduardoantonio10

  • Sv Member
  • ***
  • Mensajes: 108
Re: ¿Cómo guardo las preferencias de un programa en Visual Fox?
« Respuesta #6 : enero 22, 2009, 11:38:09 am »
No es por seguridad. Lo que pasa es que lo que quiero almacenar son datos, específicamente porcentajes y cantidades numéricas, que van a estar cambiando y que, para el caso, no encuentro conveniente que vaya quedando un "historial" o algo en una tabla para no ocupar más memoria. Por ejemplo, una casilla en donde pueda cambiar el porcentaje de AFP para hacer el descuento respectivo en una planilla. Más tarde puede cambiar ese porcentaje así que emplearía el nuevo y no el anterior. ¿Cómo hago si no quiero que eso no vaya quedando guardado si no sólo halarlo de algún lado y, si se modifica en el cuadro de diálogo, cambie también en el lugar de donde lo estoy halando?

mira si esa es tu intencion no veo el problema de hacerlo con una db ya sea con fox o sql, etc. lo que tienes q hacer es actualizar el registro y no insertar uno nuevo, por lo menos yo uso ese metodo y guardo todas esa configuraciones de porcentajes  ya sea afps,iva,renta,etc  en una sola tabla

por ejemplo si tenas la tabla porcentajes en la fila 1 en la columna id=1,nombre=afp,porcenta=1.00 y lo quieras cambiar solo tendrias q actualizar el registro del porcentaje   Update porcentajes set porcenta=2.00 where id=1 y no un insert into porcentajes (id,nombre,porcentaje) values (5,"afp",2.00)

en cuanto dices "algo en una tabla para no ocupar más memoria" creo q eso ya no es problema con la cantida de los discos duros de la actulidad es ya desaparecio a dema si esta en tablas de fox una tabla de ese tipo ni siquiera es de un 1MB

no se si tu usas una tabla para cada tipo de configuracion q ocupas por ejemplo tienes una tabla de afps, isss,iva?
« Última Modificación: enero 22, 2009, 11:39:52 am por eduardoantonio10 »