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

Recuperar archivos adjuntos de email desde OutLook

Visual Fox Pro, Trucos Comentarios ( 0 ) »
Puedes obtener desde VFP los archivos adjuntos de un email a través de automatización con OutLook.

oOutLook = Createobject("Outlook.Application")
oNMapi = oOutLook.GetNamespace(
"MAPI")
oInbox = oNMapi.GetDefaultFolder(6)

oEmail = oInbox.Items(3) && Email Nro 3

If oEmail.Attachments.Count> 0 Then
    oEmail.Attachments(1).SaveAsFile("c:miarchivo.ext")
EndIf


Por: David Amador T

Ruta y nombre del EXE desde donde inicio la aplicación

Visual Fox Pro, Trucos Comentarios ( 0 ) »
Una de las formas de obtener la ruta desde donde se inicio la aplicación, muy útil para cuando deseas establecer la ruta de búsquedas de tus archivos.

Declare Integer GetModuleFileNameIn WIN32API ;
    integer hinst, String @lpszFilename,;
   
integer
@cbFileName

cRuta = Space(256)
nBytes = 255

=GetModuleFileName(0, @cRuta, @nBytes)

nBytes = At(Chr(0),cRuta)

cRuta = Iif(nBytes>1,Substr(cRuta,1,nBytes-1),"")
? cRuta
 


Por: David Amador T

Lista y número de semanas entre 2 fechas

Visual Fox Pro, Trucos Comentarios ( 0 ) »
Si deseas obtener cuales y cuantas son las semanas entre 2 fechas, este ese el truco.

Local Array arrFridays[1]
lnFridays = Days2Array(Date(),Date()+60,6,@arrFridays)
? lnFridays
Display Memory Like arrFridays

Function Days2Array
    Lparameters tdStart, tdStop, tnDow, taArray

   
Local lnWeeks,ix, lnBase

   lnWeeks =
Int((tdStop-(tdStart-Dow(tdStart,tnDow) + 1))/7)

   
If tdStart = (tdStart-Dow(tdStart,tnDow) + 1)
       lnWeeks =lnWeeks + 1
       lnBase = -1
   
Else
       
lnBase = 0
   
EndIf

   
If
lnWeeks > 0
       
Dimension taArray[lnWeeks]

       
For ix = 1 To lnWeeks
           taArray
[ix]=tdStart-Dow(tdStart,tnDow)+1+7*(ix+lnBase)
       
Endfor
   Endif


   Return lnWeeks

Por: David Amador T

Comprimir con WinZIP

Visual Fox Pro, Ejemplos - Código fuente Comentarios ( 0 ) »
Puedes utilizar WinZIP para comprimir archivos desde VFP.

oZip = CreateObject("WScript.Shell")
oZip.
Run("Winzip -a -r -p -ex c:\archivo.zip c:\Dir_a_Comprimir\*.*", 0,.T.)

Release oZip
oZip =
Null

Por: David Amador T

Configurar impresora como predeterminada

Visual Fox Pro, Trucos Comentarios ( 0 ) »
Una pregunta muy frecuente ..... aquí esta una de las formas de hacerlo.

En este caso utilizas WSH para configurar como predeterminada una impresora.

cPrint = GETPRINTER()

If !Empty(cPrint)
   oWSH =
CREATEOBJECT("WScript.Network")

   oWSH.SetDefaultPrinter(cPrint)

   
Release oWSH
   oWSH =
Null
EndIf
 


Por: David Amador T

Leer archivo INI

Visual Fox Pro, Trucos Comentarios ( 0 ) »
Una alternativa muy frecuente para almacenar algunos datos de tu aplicación son los archivo INIs ... aquí tienes la forma de leer las entradas de estos archivos.

Para el ejemplo crea un archivo INI llamado "archivo.ini" en c: y agrégale los siguientes datos:

[RUTADB]
Directorio =C:MiProgramaDB

Ahora si desde VFP quisiéramos conocer el valor almacenado en la entrada Directorio deberíamos hacerlo así:

? LeerIni("RutaDB","Directorio","c:archivo.ini")

Function LeerIni(cSection, cEntry, cINIFile)

LOCAL cDefault, cRetVal, nRetLen
cDefault =
""
cRetVal = Space(255)
nRetLen =
LEN(cRetVal)

DECLARE integer GetPrivateProfileString IN WIN32API ;
STRING cSection, String
cEntry, ;
STRING cDefault, STRING @cRetVal, ;
INTEGER nRetLen, STRING cINIFile

nRet = GetPrivateProfileString(cSection, cEntry, cDefault, ;
@cRetVal, nRetLen, cINIFile)
Return Left(cRetVal, nRetLen)
EndFunc




Por: David Amador T

Eliminar columna de Excel a través de Automatización

Visual Fox Pro, Trucos Comentarios ( 0 ) »
En este truco eliminaremos una columna de un documento de Excel a través de Automatización.

#Define xlShiftDown -4121
#
Define xlShiftToLeft -4159
#
Define xlShiftToRight -4161
#
Define xlShiftUp -4162
 
oExcel =
Createobject("Excel.Application")
oExcel.
Visible= .T.
oBook = oExcel.WorkBooks.
Add

oExcel.Cells(1,1).Value= "A"
oExcel.Cells(1,2).Value=
"B"
oExcel.Cells(1,3).Value= "C"
oExcel.Cells(1,4).Value= "D"
oExcel.Cells(1,5).Value= "E"

oBook.ActiveSheet.Columns("C:C").Select
* oBook.ActiveSheet.Columns("C:AB").Select

oExcel.Selection.Delete(xlShiftToLeft)

oExcel.Quit()
oExcel =
Null
 

Por: David Amador T

Quitar espacio adicionales a una cadena

Visual Fox Pro, Trucos Comentarios ( 0 ) »
Este truco permitirá que sólo exista un espacio entre palabras.

? QuitaEspacio("Esta   es una  prueba")

Function QuitaEspacio(cCadena)
    nCountR=
Ceiling(Sqrt(Occurs(Space(1),cCadena)))

   
Return Evaluate(Replicate([STRTRAN(],;
        nCountR)+
[cCadena]+;
       
Replicate([,SPACE(2),SPACE(1))],nCountR))
EndFunc
 

Por: David Amador T

Determinar a que base de datos pertenece una tabla

Visual Fox Pro, Trucos Comentarios ( 0 ) »
La forma más sencilla de conocer a base de datos está vinculada una tabla abierta.

? CursorGetProp("DATABASE","MiTabla")

Devolverá la ruta de la base de datos; si es una tabla libre devolverá una cadena vacía.

Por: David Amador T

Convertir recordset de ADO a cursor utilizando CursorAdapter

Visual Fox Pro, Trucos Comentarios ( 0 ) »
Esta es otra forma de convertir un recordset a cursor; en este caso utilizamos la clase CursorAdapter.

oCon=CreateObject("ADODB.Connection")
oCon.
Open("Provider=SQLOLEDB.1;"+;
           "Integrated Security=SSPI;"+;
           
"Persist Security Info=False;" +;
           
"Initial Catalog=Northwind;"+;

           
"Data Source=(local)")

oRst = oCon.Execute("Select * From Customers")

Local oCA As CursorAdapter
oCA=CreateObject("CursorAdapter")
oCA.
DataSourceType="ADO"
oCA.CursorFill(,,,oRst)
 

Por: David Amador T

Determinar si la estructura de dos tablas son iguales

Visual Fox Pro, Trucos Comentarios ( 0 ) »
Este es un truco que parece que fuera complicado, pero con pocas líneas puedes saber si la estructura de dos tablas son iguales.

Vamos a aplicar un truco visto anteriormente:

Use MiTabla1
Copy Structure Exten To c:Tabla1
Use MiTabla2

Copy Structure Exten To
c:Tabla2

lOK=FileToStr("c:Tabla1.dbf")==FileToStr("c:Tabla2.dbf")

?Iif(lOK,"Iguales","Diferentes")
 
 
 
 


Por: David Amador T

Determinar si dos archivos son iguales

Visual Fox Pro, Trucos Comentarios ( 0 ) »
Esta es una forma muy sencilla para determinar si 2 archivos son iguales.

lIgual=(FileToStr("FileA.zip")==FileToStr("FileB.zip"))

?Iif(lIgual,"Iguales","Diferentes")

Por: David Amador T

Determinar los archivos abiertos en Red

Visual Fox Pro, Trucos Comentarios ( 0 ) »
Este truquito es de Windows XP pero podrías aplicarlo de VFP... Existe un programita que trae WinXP que te muestra la información sobre los archivos que se encuentran abiertos en nuestro PC o en carpetas compartidas.

Lo único que debes hacer es entrar al MS-DOS y digitar OPENFILES.EXE

Te sugiero que digites OPENFILES ? para conocer las diferentes opciones que tiene este programita.

Por: David Amador T

Zoom en control Image

Visual Fox Pro, Trucos Comentarios ( 0 ) »
Este es un excelente truco si deseas hacer una especie de ZOOM a un gráfico . En este caso utilizamos la rueda (Scroll) del mouse para alejar o acercar. No recuerdo quien fue el que escribió este código.

Public oform1
oform1=
Newobject("form1")
oform1.
Show
Return

Define Class form1 As Form
   Top
= 12
   
Left = 77
   
DoCreate = .T.
   
Caption = "Form1"
   
Name
= "Form1"

   Add Object image1 As Image With ;
       
Picture = Home(4)+"BitmapsGaugeDOME.BMP", ;
   
    Stretch = 2, ;
       
Height = 48, ;
       
Left
= 54, ;
       
Top = 47, ;
       
Width = 64, ;
       
Name = "Image1"

   Procedure image1.Init
       This
.Left=(This.Parent.Width-This.Width)/2
       
This.Top =(This.Parent.Height-This.Height)/2
   
Endproc

   Procedure image1.MouseWheel
       Lparameters
nDirection, nShift, nXCoord, nYCoord

        With This
           
If Sign
(nDirection) = 1
               .
Width = .Width* 1.1
               .
Height = .Height* 1.1
           
Else
               
.Width= .Width/ 1.1
               .
Height = .Height/ 1.1
           
Endif
           
.Left=(.Parent.Width-.Width)/2

           .
Top  =(.Parent.Height-.Height)/2
       
Endwith
   EndProc
Enddefine


 

Por: David Amador T

Registrar ActiveX por código

Visual Fox Pro, Trucos Comentarios ( 0 ) »
Este es una forma muy sencilla de registrar un activex desde VFP, para eso utilizamos la función ShellExecute del API de Windows.

Declare Integer ShellExecute In shell32.Dll;
    INTEGER hndWin, String cAction, String cFileName,;

   
STRING cParams, String cDir, Integer nShowWin

cFileOCX = "c:TextBox.OCX"


=ShellExecute(0,
"open","REGSVR32",cFileOCX,"",1)
 


Por: David Amador T