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

Vincular una tabla DBF a una base de datos de Access

Visual Fox Pro, Trucos Comentarios ( 0 ) »
Aquí tienes la forma de vincular una tabla DBF a
una base de datos de Access a través de código; para eso utilizaremos ADOX.
 


oCat =
CreateObject("ADOX.Catalog")

oTab =
CreateObject("ADOX.Table")


cRutaDB = "Provider=Microsoft.Jet.OLEDB.4.0;"
+ ;

            "Data Source=C:\BaseDatos.mdb;"



* Abro el catálogo


oCat.ActiveConnection = cRuta



* Creo la nueva tabla


With
oTab

   
.
Name
=
"Tabla Vinculada de dBASE"

   
.ParentCatalog = oCat


EndWith



* Establezco las propiedades para crear el vínculo con el archivo de dBASE


With
oTab

    * Indicamos
solamente la carpeta donde se encuentra la tabla

   
.Properties("Jet
OLEDB:Link Datasource"
) =
"C:\"

   
.Properties("Jet
OLEDB:Remote Table Name"
) =
"vacunas#dbf"

   
.Properties("Jet
OLEDB:Create Link"
) = .T.

   
.Properties(
"Jet
OLEDB:Link Provider String"
) =
"dBASE 5.0;"


EndWith



* Añado la tabla a la colección Tables


oCat.
Tables.Append(oTbl)


oCat = Null



=
MessageBox("Se
ha vinculado correctamente el archivo."
)


 


Por: David Amador T

Cambiar el comportamiento de algunas funciones de VFP

Visual Fox Pro, Trucos Comentarios ( 0 ) »
¿Quisieras evitar que se ejecuten algunas
funciones propias de VFP o darles un comportamiento diferente?; Por ejemplo que
cuando invoques un MessageBox te muestre un Wait Window o una formulario tuyo
con características similares o simplemente que no se muestre.


En el siguiente ejemplo el MessageBox se
reemplazará por el Wait Window



#
Define Messagebox
NoMsg


=Messagebox("Esto
es un mensaje"
)



Procedure NoMsg(x,y,z)

    Wait Window
x


EndProc






Y si deseas que no muestre nada sólo quita el Wait Window y listo.



Otro ejemplo; en este vamos hacer que la función
ALLTRIM convierta enseguida a mayúsculas



#Define Alltrim
MiAlltrim


?Alltrim("
Esto es un mensaje "
)



Procedure MiAlltrim(cTxt)

   
Return Rtrim(ltrim(Upper(cTxt)))


EndProc




Tengamos en cuenta que dentro del procedimiento no
podemos volver a llamar a la función ALLTRIM puesto que se presentaría un
llamado recursivo a la misma función (MiAlltrim) a menos que utilice

#Undefine
Alltrim

antes del RETURN.



Otro ejemplo básico, vamos a evitar que se utilice
la función VAL



#Define Val
NoxVal


? Val("10")



Procedure NoxVal(cTxt)

    Return
"Función no permitida"


EndProc




Bueno, puede hacer muchas cosas, sólo es cuestión
de imaginación y necesidades


Por: David Amador T

Copiar a CD con Windows XP desde VFP

Visual Fox Pro, Trucos Comentarios ( 0 ) »
Puedes utilizar un poco la característica de
Windows XP que le permite grabar a CD, para eso lo que debes hacer es copiar en
un directorio especial que tiene Windows para ello y luego indicarle al XP que
copie los archivos.

cDir =
GETENV("userprofile")+"\Configuración
local\Application Data\Microsoft\CD Burning\"



cFile = "c:\DatosXP.txt"



Copy File (cFile)
to
(cDir+JustFname(cFile))



Por: David Amador T

Mostrar 2 reportes al mismo tiempo

Visual Fox Pro, Trucos Comentarios ( 0 ) »
Me imagino que siempre has querido poder mostrar
más de un reporte al mismo tiempo, a continuación tienes un ejemplo de como
hacerlo.



Set Safety Off




Create Cursor
Tabla1 (Txt C(10))


Insert Into
Tabla1
Values
("XXXXXXXXXX")


Insert Into
Tabla1
Values
("YYYYYYYYYY")


Insert Into
Tabla1
Values
("WWWWWWWWWW")



Create Report
Reporte1
From
Tabla1


Report Form
Reporte1
Preview Nowait



Create Cursor Tabla2 (Txt C(10))


Insert Into
Tabla2
Values
("AAAAAAAA")


Insert Into
Tabla2
Values
("BBBBBBBB")


Insert Into
Tabla2
Values
("CCCCCCCC")



Create Report
Reporte2
From
Tabla2


Report Form
Reporte2
Preview Nowait




Por: David Amador T

Determinar si una tabla esta abierta en forma exclusiva o compartida

Visual Fox Pro, Trucos Comentarios ( 0 ) »
Es muy importante determinar como esta abierta una
tabla, de esa forma podremos provenir errores en nuestro código; en este caso
conoceremos si la tabla esta abierta de forma exclusiva o compartida.


lEx =
IsExclusive("Tabla")


? Iif(lEx,
"Exclusiva",
"Compartida")




 


Por: David Amador T

Imprimir un rango de paginas de un documento de Word a través de Automatización

Visual Fox Pro, Trucos Comentarios ( 0 ) »
Con este ejemplo podrás indicarle a Word que
paginas deseas imprimir de un documento desde VFP. Asegúrese de seleccionar un
archivo e impresora en este ejemplo, puesto no lleva ninguna validación
respectiva.


#
DEFINE
ImpRangoPag 4



cPaginas =
"1,3,6-12"



oWord =
CreateObject("Word.Application")

oWord.Documents.
Open(GetFile("DOC"))

oWord.ActivePrinter =

GetPrinter()


oWord.ActiveDocument.Printout(.T.,,ImpRangoPag,,,,,1,cPaginas)

 

 


Por: David Amador T

Descargar archivo desde Internet

Visual Fox Pro, Trucos Comentarios ( 0 ) »
En este ejemplo utilizando el control InetCtls
para descargar un archivo de internet; podemos hasta crear una barra de progreso
a medida que se descarga el archivo.


oInet =
Create("InetCtls.Inet")

oInet.RemotePort =

"8080"


oInet.RequestTimeOut = 1000



* En caso de necesitar Proxy

* oInet.proxy = "192.168.6.3"



cUrl =
"http://www.davphantom.net/img/log2.png"



oDatos = oInet.OpenURL(cUrl, 1)



nHF =
Fcreate("log2.png")



For
i = 1
To Alen(oDatos)

    Fwrite(nHF,
Chr(oDatos[i]))


EndFor



FClose
(nHF)


 


Por: David Amador T

Obtener el texto de la ventana del MessageBox

Visual Fox Pro, Trucos Comentarios ( 0 ) »
Un truquito bueno; ¿Deseas poder obtener el texto
completo que se muestra en un MessageBox?.


Lo único que debes hacer presionar las teclas:
Ctrl + C cuando te muestre el MessageBox y ya tendrás en el portapapeles el
mensaje que se mostraba.


Por: David Amador T

Obtener el código HTML de una pagina web

Visual Fox Pro, Trucos Comentarios ( 0 ) »
En este ejemplo utilizaremos automatización para
obtener el código de una pagina web.


oIE =
CreateObject("InternetExplorer.Application")

oIE.Navigate(
"http://yahoo.com")



DO WHILE
oIe.ReadyState = 1

    WAIT WINDOW
"Procesando...."
Nowait

ENDDO



oIEdocument = oIE.Document

?oIEdocument.body.innerhtml


Por: David Amador T

Copiar archivos cuando la ruta de estos contiene espacios

Visual Fox Pro, Trucos Comentarios ( 0 ) »
Este es un problema bastante común; aquí tienes la
forma de evitarte problemas con las rutas que contienen espacios.


cDirDest =
"c:\Mis
Documentos\"


cFileACopiar =
"Mi
Archivo de Ayer.txt"


Copy File
(cFileACopiar)
To
(cDirDest+cFileACopia)






 



Por: David Amador T

Mostrar el menú Inicio de Windows

Visual Fox Pro, Trucos Comentarios ( 0 ) »
En este pequeño truco miraremos como podemos
mostrar el Menu Inicio de Windows como si hubiéramos hecho click en el botón
inicio; lo haremos con API.

#Define
VK_LWIN 0x5B

#
Define
VK_RWIN 0x5C

#
Define
KEYEVENTF_KEYUP 0x2



Declare
keybd_event
In
Win32API ;

    SHORT
bVk,
SHORT
bScan, ;

    Integer
dwFlags, Integer
deExtraInfo



keybd_event(VK_LWIN,0x5B,0,0)

keybd_event(VK_LWIN,0x5B,KEYEVENTF_KEYUP,0)



 


* Ahora veremos como mostrarlo esperar

* unos segundos y luego ocultarlo




#
Define
VK_LWIN 0x5B

#
Define
VK_RWIN 0x5C

#
Define
KEYEVENTF_KEYUP 0x2




Declare
keybd_event
In
Win32API ;

    SHORT
bVk,
SHORT
bScan, ;

    Integer
dwFlags, Integer
deExtraInfo



keybd_event(VK_LWIN,0x5B,0,0)

keybd_event(VK_LWIN,0x5B,KEYEVENTF_KEYUP,0)



=Inkey(.3)
* Espera 3 segundos



keybd_event(VK_LWIN,0x5B,0,0)

keybd_event(VK_LWIN,0x5B,KEYEVENTF_KEYUP,0)




Por: David Amador T

Comprobar si Excel está ejecutado

Visual Fox Pro, Trucos Comentarios ( 0 ) »
Verificaremos a través del API de Windows si Excel
se encuentra abierto, para eso utilizaremos la función FindWindow.


Declare Integer
FindWindow
In
WIN32API;


String
cNull,
String
cWinName


nOk = FindWindow("XLMAIN",
0)



? "Excel"+Iif(nOk
> 0,
"","
no está"
)+"
ejecutándose"



Por: David Amador T

Habilitar los eventos en la base de datos a través de código

Visual Fox Pro, Trucos Comentarios ( 0 ) »
Los eventos en la base de datos de VFP aparecieron
en la versión 7 y la verdad tienen sus ventajas; en algunas ocasiones
necesitamos desactivar estos eventos desde nuestra aplicación a través de
código; Aquí está la forma de hacerlo



Reemplace "MiBaseDatos" por el nombre de la base de datos a la que desee
desactivar los eventos


DBSetProp
("MiBaseDatos","Database","DBCEvents",.F.)




Para volver a activarlos:



DBSetProp("MiBaseDatos","Database","DBCEvents",.T.)










 


Por: David Amador T

Mostrar un valor DateTime sin segundos en formato de 12 horas

Visual Fox Pro, Trucos Comentarios ( 0 ) »
Un truco sencillo pero bueno.


?(
Left(Ttoc(Datetime()),14)
+
Right(Ttoc(Datetime()),2))







Por: David Amador T

Determinar si un indice existe en un tabla sin abrir la tabla

Visual Fox Pro, Trucos Comentarios ( 0 ) »
Este ejemplo tiene una consideración: La tabla
debe estar contenida en una base de datos.



Lo que vamos hacer es acceder al diccionario de datos de la base de datos, para
eso abriremos la BD como tabla y buscaremos el índice allí, de esta forma no es
abrir la tabla

Close
Databases All

Use Home
(2)+"Northwind\northwind.dbc"
In
0
Alias Dbc Noupdate



Select T.ObjectName
Table,I.ObjectName
Tag From Dbc
T ;

   
Join Dbc
I
On
T.ObjectId = I.ParentId ;

   
WHERE
T.objecttype ==
"Table"
;

   
And I.objecttype ==

"Index"





 


Por: David Amador T