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

Pasar tabla a Word

Visual Fox Pro, Trucos Comentarios ( 0 ) »
Ejemplo de como puedes pasar algunos datos de tus DBFs a Word a través de automatización.

En este ejemplo se crea un tabla en un documento de Word y se van agregando los datos de la DBF a Word y luego se guarda el documento.
 

Use Home(2)+ "dataemployee" Alias
Emp Shared
nNumCeldas = Reccount("Emp")

oWord =
CreateObject("Word.Application")
oDoc = oWord.Documents.
Add()
oRange = oDoc.
Range()

oDoc.
Tables.Add(oRange, nNumCeldas, 3)
oTable = oDoc.
Tables(1)

Scan
 With
oTable
   .Cell(
Recno("Emp"), 1).Range.Text
= Trim(Last_Name) + " " + Trim(First_Name)
   .Cell(
Recno("Emp"), 2).Range.text= Trim(Country)
   .Cell(
Recno("Emp"), 3).Range.text= Trim(City)
 
EndWith
EndScan

Use in
Emp
oWord.ActiveDocument.
SaveAs("C:MiDoc.Doc")
oDoc.
Close

oWord.Quit
 


Por: David Amador T

Automatización con PowerPoint III

Visual Fox Pro, Trucos Comentarios ( 0 ) »
Ejemplo muy completo de como crear una presentación en PowerPoint con datos de una tabla y aplicarle un diseño. Luego de ejecutar el código tendrás creada la presentación con el nombre MiPresentacion.Ppt y se encontrará en C:

Use Home(2)+ "dataemployee" Alias Emp
Shared
cCrLf = Chr(13) + Chr(10)&& Salto de línea

oPPT = CreateObject("PowerPoint.Application")
oPPT.
Visible
= .T.

cTmpl=
"c:Archivos de programaMicrosoft Office"+;
     
"TemplatesPresentation DesignsGlobe.pot"

oPres = oPPT.Presentations.Add
oPres.ApplyTemplate(cTmpl)

Select Emp
Scan
   
oSlide = oPres.Slides.Add(1,2)

   oShapes = oSlide.Shapes

   oTitulo = oShapes.
Item("Rectangle 2")
   oTitulo.TextFrame.TextRange.
Text= Trim(Last_Name) + " " + Trim(First_Name)

   cStr =
"Cargo: "+
Trim(Title) + cCrLf
   cStr = cStr +
"País: " + Trim(Country) + cCrLf
   cStr = cStr +
"Ciudad: " + Trim(City) + cCrLf

   oTitulo = oShapes.
Item("Rectangle
3"
)
   oTitulo.TextFrame.TextRange.
Text= cStr
EndScan

Use in
Emp

oPres.
SaveAs("C:MiPresentacion.ppt")
oPres.
Close
oPPT.Quit



Por: David Amador T

Automatización con PowerPoint II

Visual Fox Pro, Trucos Comentarios ( 0 ) »
Ejemplo de como puede mostrar y controlar una diapositiva en PowerPoint.

oPPT =CreateObject("PowerPoint.Application")
oPPT.
Visible = .T.
oPres = oPPT.Presentations.
Open("C:Prueba.PPT")

* Inicia la presentación

oSlideShow = oPres.SlideShowSettings.
Run.View

With
oPres.Slides.Range
   
* Segundos que se muestra cada diapositiva
   
.SlideShowTransition.AdvanceTime = 2

   
* Las diapositivas serán controladas por los
      segundos establecidos anteriormente.
   
.SlideShowTransition.AdvanceOnTime = .T.

EndWith
 


Por: David Amador T

Automatización con PowerPoint I

Visual Fox Pro, Trucos Comentarios ( 0 ) »
Ejemplo de como podemos realizar automatizaciones con PowerPoint; en ese caso se aplica un diseño y se agregan algunos objetos a una presentación.

oPPT = CreateObject("PowerPoint.Application")
oPPT.
Visible = .T.


cRutaTmpl=
"c:Archivos de programaMicrosoft Office"+;
           
"TemplatesPresentation DesignsGlobe.pot"

oPres = oPPT.Presentations.Add
oPres.ApplyTemplate(cRutaTmpl)
oSlide = oPres.Slides.
Add(1,
2)

oShapes = oSlide.Shapes
oTitulo = oShapes.
Item("Rectangle 2")
oTitulo.TextFrame.TextRange.
Text= "Prueba de Titulo"
 


Por: David Amador T

Intellisense no funciona con Thisform

Visual Fox Pro, Trucos Comentarios ( 0 ) »
Al parecer Intellisense tiene un pequeño BUG, y es que no funciona con Thisform... Lo que se debe hacer es evitar usar y en su aso usar This.

Por ejemplo: Cuando estamos en el Init de un formulario y digito:

With Thisform

  
.

En ese momento deben salirme la lista de objetos y propiedades presentes en el formulario pero no funciona.

Para que funcione debemos reemplaza a Thisform por This.... ejemplo


With This
  
.

En este caso si de muestran los objetos y propiedades del Formulario.

Espero que para futuras versiones o para el service pack 1 de VFP 9 se corrija el "pequeño detalle".


Por: David Amador T

Recorrer todos los objetos de un contenedor

Visual Fox Pro, Trucos Comentarios ( 0 ) »
Importante truco... En muchas ocasiones necesitaremos recorrer un contenedor y todos sus objetos... por ejemplo recorrer cada objeto de un formulario o de una PageFrame. Este procedimiento se llama recursivamente hasta recorrer todo los objetos del contenedor que se le pase como parámetro.

Lo que debes hacer es crear un método llamado Recorrer y colocar el siguiente código:


Lparameters
oObj

Local oControl
For Each oControl In oObj.Objects
   Wait window
oControl.Name

   If Pemstatus
(oControl, 'Objects', 5)
       
This.Recorrer(oControl)
   
EndIf
EndFor

Cuando quieras conocer los objetos de un contenedor solo le debes pasar el contenedor al método. Por ejemplo: Los objetos
de un formulario:

Thisform.Recorrer(Thisform)

En caso que quieras conocer los objetos de un pageframe entonces le pasas como parámetro el Pageframe

Thisform.Recorrer(Thisform.PageFrameMio)

 


Por: David Amador T

Buscar registro dentro de un RecordSet

Visual Fox Pro, Trucos Comentarios ( 0 ) »
En este ejemplo veras como conectarte a una base de datos de SQL Server y obtener un conjunto de registros y luego buscar un registro especifico dentro del recordset.

oConn = NewObject("ADODB.Connection")
oRst =
NewObject("ADODB.Recordset")

stroConn =
"Provider=sqloledb;"

           "Data Source=SERVIDOR;"+ ;
           "Initial Catalog=BASEDATOS;"
           "User Id=USUARIO;"+ ;
          
"Password=CLAVE; "
oConn.Open(stroConn)

cSQL =
"SELECT * FROM Tabla"
oRst.Open(cSQL, oConn, 3, 1, 1)

oRst.Find(
"Campo = '0001'")

?oRst.
Fields("Campo").Value


Por: David Amador T

Trabajando con fechas

Visual Fox Pro, Trucos Comentarios ( 0 ) »
A diario recibo algunas preguntas de como trabajar con fechas y realizar operaciones de suma y resta de días y meses... Aquí están algunos ejemplos básicos.

* Restar 2 meses
? Gomonth(Date(), -2)


* Sumar 7 días
? Date() + 7

* Sumar 7 meses
? Gomonth(Date(), 7)


* Restar 100 días
? Date() - 100

* Sumar 1 año
? Gomonth(Date(), 12)
 


Por: David Amador T

Ejecutar comandos de MS-DOS sin que se muestre la ventana

Visual Fox Pro, Trucos Comentarios ( 0 ) »
Excelente ... Podrás ejecutar tus comando de MS-DOS sin que se muestre la ventana negra del DOS.

En la variable cComando puedes colocar cualquier instrucción válida de MS-DOS que luego será ejecutada; Si deseas que la ventana sea visible solo cambia el último parámetro de a función ShellExecute y colócalo en 1

Declare Integer ShellExecute In shell32.Dll;

    Integer hndWin, String cAction, String cFile,;
   
String cParams, String cDir, Integer nShow

cComando =
"Dir
c:*.*"
cArchivo = GetEnv("TEMP") + "" + Sys(2015) + ".bat"

=StrToFile(cComando, cArchivo)
=ShellExecute(0,
"Open",cArchivo,"","",0)

 


Por: David Amador T

Generar gráficos en Excel

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

oExcel = CreateObject("Excel.Application")
oExcel.Workbooks.
Add()

oSheet = oExcel.ActiveSheet

oSheet.
Range("A1").Formula="Oscar"
oSheet.Range("A2").Formula="Maria"
oSheet.Range("A3").Formula="Juan"

oSheet.Range("A4").Formula="Pedro"
oSheet.Range("A5").Formula="Ana"
oSheet.Range("B1").Formula="435"

oSheet.Range("B2").Formula="213"
oSheet.Range("B3").Formula="592"
oSheet.Range("B4").Formula="150"

oSheet.Range("B5").Formula="97"

oChart = oSheet.ChartObjects.Add(150, 10, 200, 200)
oSheet.ChartObjects(1).Chart.ChartWizard(;
oSheet.
range(oSheet.cells(1,1),oSheet.cells(5,2)),;
-4100,4,1,0,1,1,
"","","","")


oExcel.
Visible= .T.



Por: David Amador T

Número de celdas visibles en el Grid

Visual Fox Pro, Trucos Comentarios ( 0 ) »
Este truco te será útil cuando quieras determinar cuantas celdas del grid son visibles para el usuario.

With This.Grid1
   nCeldas =
Int(.Height
- .HeaderHeight)/.RowHeight
   Wait Windows Transform
(nCeldas)
EndWith
 


Por: David Amador T

Access y VFP a través de ADO

Visual Fox Pro, Trucos Comentarios ( 0 ) »
Excelente ejemplo que demuestra como puedes conectarte a una base de datos de Access a través de ADO y como trabajan con comandos SQL. En el ejemplo se utiliza la base de datos NWIND.MDB que viene con Visual Studio.

oRst = CreateObject("ADODB.Recordset")
oConn =
CreateObject("ADODB.Connection")


cStrConn =
"PROVIDER=Microsoft.Jet.OLEDB.4.0;"+ ;
           "DATA SOURCE=C:NWIND.MDB;"

With oConn
   .ConnectionString = cStrConn
   .CursorLocation = 3
&& adUseClient
   
.Mode = 3 && adModeReadWrite

   
.Open(cStrConn)
EndWith

cSQL = "Select * from Clientes"

With oRst
   .ActiveConnection = oConn
   .CursorType = 3
&& adOpenStatic
   
.CursorLocation = 3
&& adUseClient
   
.LockType = 3 && adLockOptimistic
   
.Open(cSQL)
EndWith

Do While
!oRst.Eof
    ? oRst.Fields("IdCliente").Value

   
oRst.MoveNext
EndDo

 


Por: David Amador T

Ventana de dialogo "Guardar Como"

Visual Fox Pro, Trucos Comentarios ( 0 ) »
Ya conocemos la función PUTFILE() de VFP, pero podemos invocar este cuadro de dialogo de otra forma.

oDlg = CreateObject("safrcFileDlg.fileSave")
oDlg.fileName =

"C:*.*"
oDlg.fileType = "Cualquier archivo"
oDlg.OpenFileSaveDlg()
? oDlg.fileName
 



Por: David Amador T

Grid y DynamicBackColor

Visual Fox Pro, Trucos Comentarios ( 0 ) »
Un excelente ejemplo de como podemos utilizar DynamicBackColor para establecer un color a la celda dependiendo de una condición.

Localo
o =
Createobject("myform")
o.
Show(1)

Define Class myform
As Form
   DoCreate
= .T.
   
DataSession = 2
   
AutoCenter = .T.
   
Caption = "Trabajando con DyamicBackGround"
   
Width = 600

   
Height = 400
   
MinHeight = 300
   
MinWidth = 300
   
Add Object grid1 As Grid With ;
       
HEIGHT =
This.Height, ;
       
WIDTH = This.Width, ;
       
DELETEMARK = .F.

   
Procedure Load

        Select
* From (_samples+"datacustomer") ;
       
    Order By MaxOrdAmt Desc;
                     Into Cursor TmpCust
      
Use In
"customer"
   
EndProc

   Procedure Init
        This
.grid1.SetAll("dynamicbackcolor",;
                            "Thisform.GetBackColor(allt(country))")
    EndProc


   Procedure Resize
        This
.grid1.Width= This.Width
      This
.grid1.Height= This.Height
   EndProc

   Function
GetBackColor(cCountry)

        Local nColor
       
Do Case
           Case
cCountry == "Germany"
               
nColor = Rgb(255,255,255)
           
Case cCountry ==
"UK"
               
nColor = Rgb(224,224,0)
       
    Case cCountry == "Sweden"
               
nColor = Rgb(224,224,160)
           
Case
cCountry == "France"
               
nColor = Rgb(100,224,160)
           
Case cCountry == "Spain"
               
nColor = Rgb(100,224,160)
       
    Otherwise
               
nColor = Rgb(224,100,224)
   
    EndCase
       Return
nColor
   
EndFunc
EndDefine
 


Por: David Amador T

Deshabilitar algunas combinaciones de teclas

Visual Fox Pro, Trucos Comentarios ( 0 ) »
Interesante truco con el cual podrás deshabilitar algunas combinaciones de teclas y hasta funciones de VFP.

El asterisco ( * ) permite inhabilitar algunas cositas de VFP.... en este caso, no funcionaran las combinaciones de teclas para copiar (CTRL+C), Pegar (CTRL+V).


ON KEY LABEL CTRL+V *

ON KEY LABEL CTRL+C *

Cuando el usuario presione dichas combinaciones de teclas no harán nada. y de igual forma puedes hacer con todas las teclas.


Quieres que tu programa nunca mande un error... mejor dicho ¿quieres esconder tus errores? ... Interesante no?

On Error *

Y si deseas evitar que el usuario salga del programa ..

On Shutdown *

Prueba con otras opciones y comprobaras lo útil que es el asterisco ( * )


Por: David Amador T