Bienvenido y disfruta el nuevo diseño del sitio web.... agradecería me envíes tus comentarios acerca de los cambios realizados

Para descargar cualquier archivo es necesario estar registrado y hacer click en el titulo del archivo a descargar

Agregar una DSN por código

Visual Fox Pro, Trucos Comentarios ( 0 ) »

Esta es una forma de agregar una DSN por código
utilizando API. Este ejemplo te agrega una conexión llamada MiDSN



LOCAL
lcDriver,lc_dsn,fResult

# Define ODBC_ADD_DSN 1



Declare INTEGER SQLConfigDataSource IN odbccp32.dll;

INTEGER ,;

SHORT ,;

STRING @,;

STRING @

Lc_Driver = "NombreDriver" +CHR(0)



lc_dsn = "dsn=MiDSN"+CHR(0)+;

"Server=server name"+CHR(0)+;

"database=Database name"+CHR(0)+;

"Network=DBMSSOCN"+CHR(0)



fResult = SQLConfigDataSource( 0,ODBC_ADD_DSN,@lc_driver,@lc_dsn)


 

Por: David Amador T

Asociar un programa a una extensión especifica

Visual Fox Pro, Trucos Comentarios ( 0 ) »

Si deseas asociar un programa a una extensión
especifica debes escribir en el registro del sistema y guardar las entradas
respectivas....para eso vamos a utiliza WSH (Windows Script Hos)



DO AsociarArchivo WITH
".aaa", "MiPrograma", "C:RutaMiExecutable.exe"



PROCEDURE AsociarArchivo (sExtension, sFileDescription, sExecutable)

    LOCAL sErrorHandler

   sErrorHandler = ON("error")

   ON ERROR




   oShell = CreateObject("wscript.shell")

   oShell.Regwrite ("HKCR" + sExtension + "", sFileDescription)

   oShell.Regwrite ("HKCR" + sFileDescription + "", "MY PROJECT")

   oShell.Regwrite ("HKCR" + sFileDescription + "DefaultIcon",
sExecutable)

   oShell.Regwrite ("HKCR" + sFileDescription + "shellopencommand",
sExecutable + " %1")

   oShell.Regdelete ("HKCUSoftwareMicrosoftWindowsCurrentVersionExplorerFileExts"
+ sExtension + "Application")

  oShell.Regwrite ("HKCUSoftwareMicrosoftWindowsCurrentVersionExplorerFileExts"+sExtension
+ "Application", sExecutable)

  oShell.Regdelete ("HKCUSoftwareMicrosoftWindowsCurrentVersionExplorerFileExts"
+ sExtension + "OpenWithList")

  oShell.Regwrite("HKCUSoftwareMicrosoftWindowsCurrentVersionExplorerFileExts"+sExtension+"OpenWithLista",
sExecutable)

  ON ERROR &sErrorHandler

ENDPROC

 

Por: David Amador T

Buscar archivos con Filer.dll y almacenarlo en cursor

Visual Fox Pro, Trucos Comentarios ( 0 ) »
Filer.DLL, es una DLL que es utilizada para buscar archivos, es bastante bueno y posee muchas características. Este ejemplo almacena en un cursor los archivos encontrados en un directorio determinado


Create Cursor filename (cfilename c(128))



omyfiler = Createobject("Filer.FileUtil")



omyfiler.searchpath = "C:" && Ruta de Busqueda

omyfiler.subfolder = 1 && 1 = para incluir subdirectorios. 0 para no

omyfiler.SortBy = 0

omyfiler.Find(0)

Local ncount

ncount = 1



For nfilecount = 1 To omyfiler.Files.Count

If omyfiler.Files.Item(nfilecount).Name =
"." Or ;


omyfiler.Files.Item(nfilecount).Name = ".."

Loop

Endif




Append Blank

Replace cfilename WITH
Upper(omyfiler.Files.Item(nfilecount).Path)+ ;


UPPER(omyfiler.Files.Item(nfilecount).Name)

Endfor

Browse


Por: David Amador T

Devolver nombre del primer archivo que coincida con una cadena especifica

Visual Fox Pro, Trucos Comentarios ( 0 ) »

En ocasiones necesitas conocer cual es el
primer archivo que coincide específicamente con una cadena de caracteres, para
eso podemos utilizar la función SYS(2000) .... a esta le pasamos cual es el
archivo tipo o archivo que deseamos obtener.


Por ejemplo:


? Sys(2000,"F*.prg")
** Devuelve el primer archivo que empiece por F y con extensión PRG


? Sys(2000,"*.*")
** Devuelve el primer archivo del directorio actual




Por: David Amador T

Exportar a HTML de forma sencilla

Visual Fox Pro, Trucos Comentarios ( 0 ) »

Esta es una de las formas más sencillas de
exportar una tabla a HTML ... En este ejemplo se recorre numero de campos que tenga la tabla y luego el total de registros...


Scan

      <tr>

          For lnField = 1 To
Afields(laFields)

             
\<td><<EVALUATE(FIELD(m.lnField))>><td>

         Endfor

      </tr>

Endscan

 


</table></body></html>

 



Set Textmerge Off

Set Textmerge To

Strtofile(lcHTML,"c:TablaExportada.htm")
Por: David Amador T

Eliminar Directorio

Visual Fox Pro, Trucos Comentarios ( 0 ) »

Existen diferentes forma de eliminar
directorios ... con WSH, API, pero puedes utilizar también algunas funciones de
VFP, este es un ejemplo





cDirectorio = "c:CarpetaaBorrar"

nTotArchivos = Adir(aArchivos, cDirectorio+"*.*")



For i = 1 To nTotArchivos

cNomArchivo = cDirectorio +
aArchivos[I,1]

Wait Window "Borrando el archivo: " +
cNomArchivo Nowait Noclear

Delete File (cNomArchivo) recycle

Next



Rmdir (cDirectorio)



=Messagebox(_Borrado el directorio
_ + cDirectorio)


Por: David Amador T

Obtener Host - IP

Visual Fox Pro, Funciones API Comentarios ( 0 ) »

 

Obtiene el Host y la IP de un equipo a través del API



#
Define
WSADATA_SIZE 398

#
Define
WS_VERSION 514

#
Define
HOSTBUFFER_SIZE 256

#
Define
HOSTENT_STRUCT_SIZE 16



Do
DeclareAPIs



Local
lcBuffer, lnResult, lcHostname,
lcMessage, lcHostentStruct

lcBuffer  =
SPACE(WSADATA_SIZE)

lnResult  = WSAStartup(WS_VERSION, @lcBuffer)

lcMessage =
""




If
lnResult = 0

   
lcBuffer =
Replicate(CHR(0),HOSTBUFFER_SIZE)

   
lnResult = gethostname(@lcBuffer,HOSTBUFFER_SIZE)



   
If
lnResult = 0

       
lcHostname =
STRTRAN(lcBuffer,CHR(0),"")

       
lcMessage =
"HOST: "
+ lcHostname +
Chr(13)

       
lnResult = gethostbyname(lcHostname)



       
If
lnResult != 0

           
lcHostentStruct = MemoryBuffer(lnResult, HOSTENT_STRUCT_SIZE)

           
lnResult = buf2dword(
Substr(lcHostentStruct,
13,4))



           
If
lnResult != 0

               
lcMessage = lcMessage +

"LOCAL IP ADDRESS: "
+ IPPortion(lnResult)

       
    Endif

       
Endif

   
Endif



   
If Empty
(lcMessage)

       
lcMessage =
"Lo se
pudo obtener Host - IP"

   
EndIf


   
Messagebox
(lcMessage,64,"Local
Host & IP"
)

   
=WSACleanup()


Else

   
Messagebox
("Error
: "
+
Transform(lnResult))


ENDIF






**************************


PROCEDURE
DeclareAPIs


**************************

   
Declare Integer
WSAStartup
In
wsock32;

    
Integer
wVerRq,
String
@lpWSAData



   
Declare Integer
WSACleanup
In
wsock32



   
Declare Integer
gethostname
In
wsock32;

    
String
@Name,
Integer
namelen



   
Declare Integer
gethostbyname
In
wsock32;

    
String HostName



   
Declare
RtlMoveMemory
In
kernel32
As
Heap2Str;

    
String
@,
Integer,
Integer

Endproc





**************************


Function
IPPortion(nPointer)


**************************

   
Local
lnAddress, lcResult

   
lnAddress = buf2dword(MemoryBuffer(nPointer, 4))

   
Return Iif(lnAddress
<> 0, JustIP(MemoryBuffer(lnAddress, 4)),

"")


Endfunc






**************************


Function
JustIP(cBuffer)


**************************

   
Local
lcResult, lnCounter

   
lcResult =
""

   
For
lnCounter=1
To
4

       
lcResult = lcResult +

Ltrim(Str(Asc(Substr(cBuffer,
lnCounter)))) +
Iif(lnCounter=4,    
"",".")

    Endfor

   
Return
lcResult


Endfunc






**************************


Function
buf2word (cBuffer)


**************************

    Return Asc(Substr(cBuffer,
1,1)) +
Asc(Substr(cBuffer,
2,1)) * 256


Endfunc






**************************


Function
buf2dword(cBuffer)


**************************

    Return Asc(Substr(cBuffer,
1,1)) + ;

       
BitLShift(Asc(Substr(cBuffer,
2,1)), 8) +;

       
BitLShift(Asc(Substr(cBuffer,
3,1)), 16) +;

       
BitLShift(Asc(Substr(cBuffer,
4,1)), 24)


Endfunc






**************************


Function
MemoryBuffer(nAddress,
nBuffersize)


**************************

    Local
lcBuffer

   
lcBuffer =
SPACE(nBuffersize)

   
= Heap2Str (@lcBuffer, nAddress, nBuffersize)

   
Return
lcBuffer


Endfunc

Por: David Amador T

Enviar email con el programa de correo predeterminado

Visual Fox Pro, Trucos, Funciones API Comentarios ( 0 ) »
Este es un ejemplo de como utilizar
la función MAPISendDocuments para enviar emails.


 


Do
FindWindow


Local
lcPath, hWindow, lcDelimiter,
lcFiles, lcMsgSubj


lcPath = Sys(5)
+
Sys(2003)

cDelimi =
";"


lcFiles =

"C:\Archivo1.exe"
+
cDelimi +
"C:\tabla.dbf"


lcMsgSubj =

"Archivos adjuntos: Archivo1.exe, tabla.dbf"

nHwd = GetActiveWindow()



=MAPISendDocuments(nHwd, cDelimi, lcFiles, lcMsgSubj,0)



Set Default To
(lcPath)



Procedure
FindWindow

    Declare Integer
GetActiveWindow
In
user32

   
Declare Integer
MAPISendDocuments
In
mapi32;

       
INTEGER
ulUIParam,
String
lpszDelimChar,;

       
STRING
lpszFullPaths,
String
lpszFileNames,;

       
INTEGER
ulReserved


EndProc

Por: David Amador T

Abrir archivo de Word como solo lectura

Visual Fox Pro, Ejemplos - Código fuente Comentarios ( 1 ) »

Utilizando Automatización podemos abrir un
determinado archivo... en esta caso se abrirá con archivo de Word pero como solo
lectura. El tercer parámetro indica como se abre ... .F. Lecto-escritura, .T.
solo lectura



 

oWord = CREATEOBJECT("Word.Application")

oWord.documents.open("c:miarchivo.doc", .f., .T.)

Por: David Amador T

Abrir archivo de Excel con Password

Visual Fox Pro, Ejemplos - Código fuente Comentarios ( 0 ) »

Este ejemplo demuestra como podemos abrir un documento de Excel con clave de
lectura Y de lecto-escritura



oExcel =

CreateObject
("Excel.Application")

cArchivo =
GetFile("XLS")


cPassLectura = "miclave"


cPassLecturaEscri =

"miclave2"



oExcel.Workbooks.
Open(cArchivo,,,,cPassLectura,
cPassLecturaEscri)

oExcel.
Visible
= .T.

Por: David Amador T

Acceso directo con WSH

Visual Fox Pro, Ejemplos - Código fuente Comentarios ( 0 ) »

Con WSH puedes realizar muchas acciones...
entre ellas crear accesos directos, este es un ejemplo de como puedes hacerlo


CreateObject("WScript.Shell")

strDesktop = WshShell.SpecialFolders("Desktop")

oShellLink = WshShell.CreateShortcut(strDesktop + "Notepad Editor.lnk")

oShellLink.TargetPath = "C:WINNTNOTEPAD.EXE"

oShellLink.WindowStyle = 1

oShellLink.Hotkey = "CTRL+SHIFT+F"

oShellLink.IconLocation = "notepad.exe, 0"

oShellLink.Description = "NotePad"

oShellLink.WorkingDirectory = strDesktop

oShellLink.Save

Por: David Amador T

Activar ventana con WSH

Visual Fox Pro, Ejemplos - Código fuente Comentarios ( 0 ) »

Este es un ejemplo de como activar una ventana
utilizando WSH, para esto debes pasarle el caption de la ventana a activar ..
otra forma de hacerlo es con el API de Windows


WshShell = CreateObject("WScript.Shell")

WshShell.AppActivate("MI PC")


 

Por: David Amador T

Manipular propiedades y métodos de otro formulario

Visual Fox Pro, Trucos Comentarios ( 0 ) »

Este es uno de los temas más consultados
diariamente,,, es decir como podemos hacer referencia a un formulario desde otro
formulario...

 


Lo que debes hacer es asignarle al formulario una variable pública o una
propiedad del screen .. por ejemplo ...


PUBLIC miForm



DO FORM "NombreForm" NAME miForm Linked




Y desde otro formulario ya podrás acceder a las propiedades, métodos y
eventos del anterior formulario ejecutado... de la siguiente forma



MiForm.Refresh()   ** Lo actualiza


MiForm.Caption = _Mi
súper titulo_   ** Le coloca otro titulo

Por: David Amador T

Actualizar todos los formulario abiertos

Visual Fox Pro, Ejemplos - Código fuente Comentarios ( 0 ) »

Este código recorre los formularios abiertos y
los actualiza, pero puedes modificar este código y adaptarlo para realizar
muchas acciones sobre todos los formulario u objetos de este

 


Lo que debes hacer es asignarle al formulario una variable pública o una
propiedad del screen .. por ejemplo ...


PUBLIC miForm



DO FORM "NombreForm" NAME miForm Linked




Y desde otro formulario ya podrás acceder a las propiedades, métodos y
eventos del anterior formulario ejecutado... de la siguiente forma



MiForm.Refresh()   ** Lo actualiza


MiForm.Caption = _Mi
súper titulo_   ** Le coloca otro titulo

Por: David Amador T

Agregando relaciones al entorno de datos por código

Visual Fox Pro, Trucos Comentarios ( 0 ) »

En muchas ocasiones requerimos agregar
manualmente (por código) las relaciones al entorno de datos ... este es el
código que en ocasiones uso ....

Este código va en el Load del formulario ... tenga presente la propiedad
AutoOpenTable y el método OpenTables(), ya que el código siguiente puede verse
afectado por ellos..





With Thisform.DataEnvironment

.AddObject("MiRelacion","Relation")

.MiRelacion.ChildOrder="Client_Code"

.MiRelacion.RelationalExpr="Client_Code"

.MiRelacion.ChildAlias="Invoice"

.MiRelacion.ParentAlias="Client"

EndWith

Por: David Amador T