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

Calcular el número del día en el año

Visual Fox Pro, Trucos Comentarios ( 0 ) »
Función que te devuelve cuantos días han pasando en el año hasta una fecha determinada.

?DiaDelAño(Date())
?DiaDelAño(
Date()-10)
?DiaDelAño(
Date()-60)


Function DiaDelAño(dDate)
    nDia = dDate -
Date(Year(Date()), 1, 1) + 1
   
Return(nDia)

Endfunc
 


Por: David Amador T

Conocer el número de decimales de un número

Visual Fox Pro, Trucos Comentarios ( 0 ) »
Te recomiendo este truco; en algunas ocasiones queremos determinar cuantos decimales tiene un número para realizar un determinado redondeo.

nValor = 12345.1234
nPos =
At(".",
Transform(nValor))
?
Iif(nPos>0,Len(Substr(Transf(nValor), nPos+1)),0)
 


Por: David Amador T

Buscar registros duplicados en una tabla

Visual Fox Pro, Trucos Comentarios ( 0 ) »
Truco básico pero bastante útil.


En este caso determinados los registros duplicados por un campo especifico



Select Campo
From
Tabla
Group By
Campo
Having Count(Campo)>
1


 



En este caso determinados los registros duplicados por todo el registro



Select Campo1 + Campo2 + Campo3 +
Campo4
As
X
From
Tabla;

   
Group By
X;

   
Having Count(Campo1+Campo2+Campo3+Campo4)
> 1



 


Por: David Amador T

Generar grafica en Excel a través de automatización

Visual Fox Pro, Trucos Comentarios ( 0 ) »
Muy bueno y sencillo ejemplo de como generar gráficos de áreas en Excel a través de automatización.

oExcel = Createobject("Excel.Application")
oExcel.Workbooks.
Add
For
i=1 To 3

    For
x=1
To
13

       
oExcel.Cells(i,x).
Value
=
Ceil(Rand()*1000)

   
Next

Next



oExcel.
Range("A1:M1;A2:M2;A3:M3").Select


oGraph = oExcel.Charts.
Add()



With
oGraph

   
.
Type
= -4101

   
.Legend.
Clear

   
.Perspective=100

   
.Elevation=0


EndWith



oExcel.
Visible
= .T.


 


Por: David Amador T

Obtener el símbolo de la moneda del País

Visual Fox Pro, Trucos Comentarios ( 0 ) »
Podemos formatear un número y agregarle el símbolo de la moneda del país que este establecido en la configuración regional de Windows.

En el ejemplo estamos utilizando el API de Windows.En este caso el País es Colombia (nLocal = 1033)

Declare Integer GetCurrencyFormat In "kernel32" ;
   
INTEGER
Locale, Integer dwFlags,;
   
STRING lpValue, Integer lpFormat,;
   
STRING lpCurrencyStr,
Integer cchCurrency

cBuf = Space(255)
cValue =
"12345.6"
nLocal = 1033 && Este identifica el pais Colombia

GetCurrencyFormat(nLocal, 0, cValue, 0, @cBuf,
Len(cBuf))
cBuf =
Left(cBuf,At(Chr(0),cBuf)-1)

? cBuf
 


Por: David Amador T

Generando fechas aleatorias

Visual Fox Pro, Trucos Comentarios ( 0 ) »
Esta es una forma de poder generar fechas al azar ...


?Int(Rand() * 365) + Date()

 


Por: David Amador T

Impedir que un formulario sea cerrado

Visual Fox Pro, Trucos Comentarios ( 0 ) »
En ocasiones no queremos que el usuario cierre un formulario ... esta es una forma de hacerlo.

En el Evento QueryUnload del Formulario

NODEFAULT

 



Por: David Amador T

Mostrar imágenes en ListBox

Visual Fox Pro, Trucos Comentarios ( 0 ) »
Un buen truco de como puedes mostrar imágenes variadas en un ListBox.

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

Define Class form1 As Form
   Top
= 65
   
Left = 192

   
DoCreate = .T.
   
Caption = "Imagenes en ListBox"
   
Name = "Form1"
   
Add Object list1 As ListBox With
;
   
Height = 181, ;
   
Left = 36, ;
   
Top = 24, ;
   
Width = 300, ;

   
Name = "List1"
 
   
Procedure list1.Init
       Set Path To Home
(4) + "ICONSMISC"
       
With This
           
.AddItem("Usuario 1",1,1)
           .
Picture(1) = "FACE01.ICO"

           .AddItem("Usuario 2",2,1)
           .
Picture(2) = "FACE02.ICO"


           .AddItem("Usuario 3",3,1)
           .
Picture(3) = "FACE02.ICO"


           .AddItem("Usuario 2",4,1)
           .
Picture(4) = "FACE03.ICO"
        EndWith
   
EndProc
EndDefine
 

 


Por: David Amador T

Grid multiselección

Visual Fox Pro, Trucos Comentarios ( 0 ) »
Una de las preguntas habilítales es como podemos hacer para poder seleccionar múltiples registros en un grid.

En este caso utilizamos un checkbox para hacer la selección de los registros....

Public oForm
oForm =
Createobject("FrmGrid")

oForm.
AddObject("Grid1","Grid")

With oForm.Grid1
   .
ColumnCount = 3
   
.
Height = 288
   .
Width = 320
   .
Left = 24
   .
Top = 24
   .Column1.
Width= 17

   .Column1.Header1.
Caption= ""
   
.Column1.AddObject("Check1","CheckBox")
   .Column1.Check1.
Visible
= .T.
   .Column1.
CurrentControl= "Check1"
   
.Column1.Sparse= .F.
   .Column2.
Width= 50
   
.Column2.Header1.
Caption= "Código"
   
.Column3.Width= 194
   
.Column3.Header1.
Caption= "Nombre"
   
.SetAll("DynamicBackColor","IIF(Ok, RGB(0,220,210), RGB(255,255,255))", "COLUMN")

   .
Visible = .T.

Endwith

oForm.Visible = .T.

Define Class FrmGrid As Form
   Top
= 0
   
Left = 0
   
Height = 334

   
Width = 376
   
DoCreate = .T.
   
Caption = "Grid multiselección"
   
WindowType = 1
   
WindowState
= 0
   
Name = "FrmGrid"

    Procedure Load
       Use Home
() + "SamplesDataemployee.dbf"
       
Select .F. As OK, Emp_ID, Trim(Last_Name)+" " + Trim(First_Name) ;
           
From
Employee Into Cursor Empleados Readwrite
   EndProc

   Procedure Unload
       Use In
Employee
   
EndProc

EndDefine

 


Por: David Amador T

Abrir un documento de Word e impedir que lo editen

Visual Fox Pro, Trucos Comentarios ( 0 ) »
En este ejemplo se abre un documento de Word a través de automatización y se impide que el usuario pueda realizar cambios sobre él. Gracias a Gorka.


Local
loWord As Object
loWord = Createobject("word.application")
loWord.Documents.
Open(Getfile(),,1)

loWord.ActiveDocument.
Protect(1)
loWord.ActiveDocument.PrintPreview
loWord.
Visible= .T.
loWord.ActiveDocument.
Close(.F.)
loWord.Quit
Release loWord


Por: David Amador T

Ejecutar sentencias SQL dinámicamente en SQL Server

Visual Fox Pro, Trucos Comentarios ( 0 ) »
Podemos utilizar el procedimiento almacenado sp_executesql de SQL Server para ejecutar sentencias SQL dinámicamente.

DECLARE @cSQLSyntax nvarchar(2000)
DECLARE @cTableName varchar(20)

SET @cTableName = 'EMPLOYEE'
SET @cSQLSyntax = N'SELECT * FROM ' + @cTableName + ' WHERE EmployeeID = 1'
EXEC sp_executesql @cSQLSyntax


Por: David Amador T

Acelerar la impresión de Reportes

Visual Fox Pro, Trucos Comentarios ( 0 ) »
Este es un pequeño truco que hará que tus reportes impriman más rápido.

Debemos ir a la configuración de las impresoras (Inicio - Configuración - Impresoras), seleccionamos la impresiona y hacemos click con el botón derecho del mouse y escogemos "Propiedades"; allí seleccionamos la pagina "Opciones avanzadas" o "Avanzadas"; luego marcamos la opción "Imprimir directamente en la impresora"

Ten en cuenta que también el tipo de letra mejora la velocidad de impresión, trata de utilizar fuentes como la Draft o la Courier.

 


Por: David Amador T

Cerrar el Botón inicio de Windows

Visual Fox Pro, Trucos Comentarios ( 0 ) »
En ocasiones no queremos que el usuario tenga acceso al botón inicio de Windows; lo que hacemos entonces es cerrarlo.

Declare Long FindWindow In "user32" ;
    String lpClassName,
String lpWindowName

Declare Long SendMessage In "user32" ;
   
Long HWnd,Long wMsg, Long
wParam, Long Lparam

Declare Long FindWindowEx In "user32" ;
   
Long hWnd1, Long hWnd2,
String lpsz1, String lpsz2
 


#Define WM_CLOSE 0x10
SendMessage(FindWindowEx(FindWindow(
"Shell_TrayWnd",""), 0x0, "Button", .Null.), WM_CLOSE, 0, 0)

 


Por: David Amador T

Insertar fecha NULL en SQL Server

Visual Fox Pro, Trucos Comentarios ( 0 ) »
Esta es una de las formas de insertar una fecha NULL en una base de datos de SQL Server.

En el ejemplo se asume que ya se esta conectado a SQL Server.

dDate = {}
SQLExec(nH, "INSERT INTO Tabla (CmpFecha) VALUES (?dDate)")

 


Por: David Amador T

Quitar el menú de VFP

Visual Fox Pro, Trucos Comentarios ( 0 ) »
Si quieres quitar el menú de VFP puedes hacerlo de la siguiente forma ...

SET SYSMENU TO

 


Por: David Amador T