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

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

Generar y exportar gráfico con el MSGraph

Visual Fox Pro, Trucos Comentarios ( 0 ) »
En este truco veremos como crear un gráfico con el MsGraph y luego exportarlo a un archivo JPG.

oGraf = Createobject("MSGraph.Chart.8")
ds = oGraf.
Application.DataSheet
ds.Cells.
Clear
oGraf.Width = 500
oGraf.
Height = 500

ds.Cells(1,2).Value=
"Maria"
ds.Cells(2,2).Value= "11,20"
ds.Cells(1,3).Value= "José"
ds.Cells(2,3).Value= "15"
ds.Cells(1,4).Value= "Ana"
ds.Cells(2,4).Value
= "17"
ds.Cells(1,5).Value= "Patricia"
ds.Cells(2,5).Value= "19"
ds.Cells(1,6).Value= "Carlos"
ds.Cells(2,6).Value= "20"
ds.Cells(1,7).Value
= "Sofia"
ds.Cells(2,7).Value= "22"

With oGraf
 .ChartType = -4102
 .HasLegend = .T.
 .HasTitle = .F.
 .Legend.
Font.Size
= 8
 .Legend.AutoScaleFont = .T.
 .ApplyDataLabels
 .SeriesCollection(1).DataLabels.AutoScaleFont = .T.
 .SeriesCollection(1).DataLabels.
Font.Size= 8
 .SeriesCollection(1).Interior.ColorIndex = 36
 .ChartArea.Interior.ColorIndex = 2
 .PlotArea.
Width= 200

 .PlotArea.
Height= 200
EndWith

cFile = "c:Graf.jpg"
oGraf.Export(cFile,"JPEG")
=Messagebox("El archivo fue exportado a " + cFile)


Por: David Amador T

Determinar si una aplicación se esta ejecutando

Visual Fox Pro, Trucos Comentarios ( 0 ) »
Este es una forma de saber si una aplicación se esta ejecutando; para eso utilizamos el API de Windows.

Se busca la aplicación a través del titulo de la ventana.

Declare Integer GetActiveWindowIn Win32API

Declare Integer GetWindow In Win32API;
INTEGER HWnd,Integer nType


Declare Integer GetWindowText In Win32API ;
INTEGER HWnd,String @cText, Integer nType

Declare Integer BringWindowToTopIn Win32API ;

INTEGER HWnd


cCaption = "Calculadora" &&
nHand = IsRunning(cCaption)

If nHand = 0
* Aplicación no ejecutada
Else

* Activa la aplicación
BringWindowToTop(lnHand)
EndIf

Function IsRunning (cTitulo)
hNext = GetActiveWindow()
Do While hNext<>0
cText =
Replicate(Chr(0),80)
GetWindowText(hNext,@cText,80)
If Upper(Trim(cTitulo)) $ Upper(cText)
Return hNext
EndIf
hNext = GetWindow(hNext,2)
EndDo
Return
0
EndFunc



Por: David Amador T

Mostrar imagenes animadas en VFP 7 o inferior

Visual Fox Pro, Trucos Comentarios ( 0 ) »
Este truco te permitirá conocer cual es el tamaño de la tabla que tengas activa en VFP

cGif = "c:RutaImagenAnimada.gif"

Public oForm

oForm = Createobject("MiForm")
oForm.
Show

Define Class MiForm As Form
   Add Object
myBrowser As OleControl ;
       
with OleClass="Shell.Explorer",;
       
Height=120,Width=120

    Procedure myBrowser.Refresh
       Nodefault
   EndProc


   Procedure Init
       With This
.myBrowser
           .Navigate2(
"file://" + cGif)
           Do While .ReadyState # 4
           
EndDo
           
.Document.body.Scroll
= "no"
       
EndWith
   EndProc
EndDefine
 



Por: David Amador T

Conocer el tamaño de una tabla abierta

Visual Fox Pro, Trucos Comentarios ( 0 ) »
Este truco te permitirá conocer cual es el tamaño de la tabla que tengas activa en VFP

? Header() + Recsize() * Reccount() + 1

 



Por: David Amador T

Obtener los registros con fecha más recientes de nuestro empleados

Visual Fox Pro, Trucos Comentarios ( 0 ) »
Un ejemplo de consultas SQL ... Queremos obtener por ejemplo cual fue la última venta de cada empleado

Create Cursor Datos (Nombre C(20), Fecha D)
Insert Into Datos Values("Pedro",Date())
Insert Into Datos Values("Juan",Date(2003,
05,24))
Insert Into Datos Values("Juan",Date(2005, 11,12))
Insert Into Datos Values("Milena",Date(2002, 03,18))
Insert Into Datos
Values("Pedro",Date(2005, 09,03))
Insert Into Datos Values("Pedro",Date(2005, 01,14))
Insert Into Datos
Values("Milena",Date(2004, 06,13))
Insert Into Datos Values("Milena",Date(2005, 07,05))
Insert Into Datos Values("Juan",
Date(2001, 12,26))

 
* Aquí tienes 2 formas de hacerlo

Select * From Datos t1
Where Fecha = ;
(
Select Max(Fecha)From Datos t2 Where t1.Nombre == t2.Nombre)
 

Select Nombre,
Max(Fecha)From Datos Group By Nombre
 


Por: David Amador T