RE:Cómo actualizar automáticamente campo ?
Estimado Colega Pilastron,
Sobre tu consulta, el colega David Amador te ha dado excelentes tips para resolver el requerimiento, yo solo para complementar tu investigacion, te comento que para actualizar en linea y al momento tus datos en base a los datos que vas capturando puedes usar la propiedad object.interactivechange() del TextBox y aplicar los datos conforme los vas validando o eliminando al momento.
Sobre el sonido, Set Bell To (File) está bien, esa uso yo tambien y por ultimo te mando el codigo fuente de dos funciones para escribir datos y obtener datos en files INI utilizando API, estas funciones las desarrollé y probé en Visual Foxpro 7, espero que te sirvan si tienes VFP6, si no, pues no habrá problema.
Aqui te van:
(1) EscribirIniFiles
(2) TraerDatosIniFiles
*/ Manipulación de archivos INI ---- Escritura y Lectura */
Function EscribirIniFiles
Lparameters cSection,ckey,cValorPara,cPathNombreINI
*!* ------------- API Function -------------------------------------------------------------------------------------------
*!* Parameters:
*!* -lpAppName
*!* [in] Nombre de la Seccion de Archivo INI que se va a procesar.
*!* -lpKeyName
*!* [in] Nombre de la Llave que va a ser actualizada (Se encuentra debajo de SECCION
*!* -lpString
*!* [in] Definicion del texto con que sera actualizada la Llave (key) de la seccion del INI indicado.
*!* -lpFileName
*!* [in] Nombre del archivo INI que sera actualizado por la funcion.
*!*
*!* La funcion retorna:
*!* Si todo va correctamente la funcion copia el texto en el archivo y el valor de retorno es 1 si regresa ZERO algo anduvo mal.
Local nVal
Declare WritePrivateProfileString In kernel32;
STRING lpAppName,;
STRING lpKeyName,;
STRING lpString,;
STRING lpFileName
nVal = WritePrivateProfileString (cSection,ckey,cValorPara,cPathNombreINI)
If Type("nVal") = 'L' then
Else
If nVal = 1 then
Else
=Messagebox("PRECAUCION: ocurrió algún percance en la escritura del archivo, verificar.",16,"API Ini Files")
Endif
Endif
Return (Null)
Endfunc
Function TraerDatosIniFiles
Lparameters cSection,ckey,cDefaultReturn,cBufferName,nLongBuffer,cPathNombreINI
*!* ------------- API Function -------------------------------------------------------------------------------------------
*!* Parameters:
*!* - lpAppName
*!* [in] Nombre de la seccion que se va a afectar en el Ini indicado.
*!* - lpKeyName
*!* [in] Nombre de la Llave perteneciente a la seccion del Ini indicado, la cual se va a afectar.
*!* - lpDefault
*!* [in] Valor de retorno por default
*!* - lpReturnedString
*!* [out] Nombre del Buffer que va a recibir el valor solicitado.
*!* - nSize
*!* [in] Especifica el tamaño del Buffer, normalmente no regresa una cadena con muchos caracteres invalido, esto es importante.
* lo devuelve de forma interna la funcion API.
*!* - lpFileName
*!* [in] Nombre del archivo Ini que va a ser procesado.
*!* La funcion retorna:
*!* Si todo va correctamente la funcion copia el texto del archivo y el valor de retorno es 1 si regresa ZERO algo anduvo mal.
Local lcBuffer, cretval,cCurrDir
cCurrDir= Addbs(Fullpath(Curdir()))+'Auditoria.ini'
cPathNombreINI = cCurrDir
cretval = ''
lcBuffer = Space (255) && Maxima capacidad de una cadena en VFP
*/ Declaracion de API */
Declare Integer GetPrivateProfileString In kernel32;
STRING lpAppName,;
STRING lpKeyName,;
STRING lpDefault,;
STRING @ lpReturnedString,;
INTEGER nSize,;
STRING lpFileName
oAPIObject = GetPrivateProfileString(cSection,ckey,cDefaultReturn,@lcBuffer,Len(lcBuffer),cPathNombreINI)
If oAPIObject = 0 then
=Messagebox("PRECAUCION: sucedió algun percance en la escritura del archivo, verificar.",16,"API Ini Files")
lcBuffer = 'Checar'
Return (lcBuffer)
Else
lcBuffer = Strtran(lcBuffer,Chr(0),'')
lcBuffer = Alltrim(lcBuffer)
Return (lcBuffer)
Endif
Endfunc
Sin mas, me despido y te deseo exito en tus proyectos.
Quedamos en contacto.
Alberto Sanchez
Mexico, D.F.
):-))