
RSS © www.atoutfox.org
Gérer les connexions aux données dans StrataFrameLe point essentiel d'une connexion à une source de données, c'est la chaine de connexion.
Cette contribution tente de répondre aux questions suivantes :
Comment stocker de façon permanente les sources de données nécessaires à une application ? Comment mettre à disposition ces sources de données à travers toute l'application ? Comment utiliser plusieurs sources de données dans une même application ?
Plan d'Exécution Graphique pour des Requêtes SQL Simples (traduction)Cet article est paru initialement le 16 décembre 2008 sur le magazine en ligne Simple-Talk http://www.simple-talk.com/sql/performance/graphical-execution-plans-for-simple-sql-queries/
L'auteur de cet article est Grant Fritchey : il est DBA dans une grosse compagnie d'assurance américaine et il travaille sur SQL Server depuis la version 6.0 en 1995. Il a également travaillé sur Sybase, et a développé en VB, VB.Net, C#, et Java.
Son livre « SQL Server Execution Plans » est disponible chez Amazon http://www.amazon.com/Server-Execution-Plans-Grant-Fritchey/dp/1906434026/ref=sr_1_3?ie=UTF8&s=books&qid=1280842445&sr=8-3
Grant Fritchey est MVP SQL Server.
c# - Tableau à dimension multipleQuelque chose qui me manquais sous Vfp et qu'enfin je retrouve sous c#
tableau à 3 dimensions
Un exemple simple d'utilité serait le maintien en mémoire des mémos dans une année pour une période
de 12 mois
String DateMemo[12,5,7][ ] ;
et ou on a 12 mois, 5 semaine, 7 jours
ExempleNum = 1
l'exemple présenté est un tableau à 3 dimensions remplient de Int si
ExempleNum = 2
tableau de caractere String à 3 dimensions
Mettre à jour une vue multi-tables sur le serveur SQL avec le trigger INSTEAD OFMettre à jour une vue multi-tables sur le serveur SQL avec le trigger INSTEAD OF
Très souvent, on envisage la migration des données vers SQL Server comme une solution à des problèmes que les dbf ne peuvent pas gérer nativement (sécurité, fragilité par exemple), ou en réponse à des dysfonctionnements liés à l'évolution des OS et des machines (caches disque entre autres).
Mais on peut aussi choisir de migrer de façon positive, pour accéder à des fonctionnalités nouvelles, pour simplifier l'écriture, pour accélérer les traitements, pour faciliter la maintenance.
L'objectif de cette contribution est de vous donner envie de migrer.
Quelques définitions : Une vue sur le serveur, pourquoi faire ? Nos données sont normalisées, et nous utilisons des vues pour obtenir des jeux d'enregistrements dénormalisés, consommables dans notre code métier ou notre couche visuelle sur le client fox. En tant que développeurs fox, nous avons l'habitude de réaliser cette dénormalisation en créant des vues coté client, ou en requêtant cette jointure par du code SPT ou dans un Cursor Adapter. C'est ce que nous faisons par exemple entre une table « clients » et une table « contacts », ou bien entre une table « en_tete_facture » et une table « lignes_de_factures ».
Créons cette vue sur le serveur SQL lui-même : nous gagnerons en performance, en utilisant toute la puissance de la mise en cache des plans d'exécution et leur adaptation automatique aux données réelles (imaginez cela comme une super-optimisation Rushmore).
Une vue sur le serveur n'est rien d'autre que du code SELECT dont le résultat est « vu » comme une table, elle est mise à jour sans aucune intervention nécessaire .
Un TRIGGER INSTEAD, qu'est-ce que c'est ? En fox, nous ne connaissons que les trigger after , c'est-à-dire du code procédural exécuté automatiquement après un événement INSERT, UPDATE, ou DELETE. J'emploie ici volontairement le terme d'événement, dans le sens utilisé dans le monde SQL : ce ne sont pas des événements au sens de la POO, mais des événements de données.
En SQL, la norme SQL:1999 prévoit 2 types de triggers, les BEFORE et les AFTER. Cette norme est implémentée en Transact-SQL sous la syntaxe de TRIGGER INSTEAD OF et TRIGGER AFTER.
Un trigger AFTER s'exécute après le ou les évènements auxquels il répond, et de ce fait les contraintes de lignes et les règles d'intégrité référentielles structurelles ont déjà été vérifiées quand on arrive au début du trigger.
Un TRIGGER INSTEAD OF « intercepte » le ou les événement(s) de données pour lesquels il est écrit, et c'est le code contenu dans ce trigger qui est exécuté à la place de l'événement initial. Aucune contrainte de ligne ou d'intégrité n'a été vérifiée à l'entrée dans le trigger (uniquement les contraintes de schéma et de type de données).
Mettre à jour une vue multi-table sur le serveur, comment ? Si une vue contient des calculs (et à fortiori des agrégations) ou une clause DISTINCT, ou des sous-requêtes ailleurs que dans sa clause WHERE, elle ne peut être mise à jour directement. Nous allons donc utiliser le TRIGGER INSTEAD pour coder cette mise à jour des tables sous-jacentes.
Les objets de notre exemple :
Parcourons le script « create_tables_parent_enfant », qui définit nos 2 tables. Il crée 2 tables nommées parent et enfant, chacune dotée d'un champ identity (autoinc en fox) sur lequel est basée la clé primaire. Ces 2 tables sont liées dans une contrainte d'intégrité référentielle nommée « FK_enfant_parent ». De plus, les données du champ « enf_ch1 » sur la table « enfant » ne doivent pas prendre la valeur ' z2z2 '. C'est ce qu'en fox on appelle une règle de niveau champ. En SQL, on appelle cet objet une contrainte de validation, ou contrainte check. Comme tout objet, il porte un nom, nous l'avons appelé « CK_enfant_enf_ch1 »
Le script de création de la vue nous permet de voir qu'elle modifie la casse de la colonne « par_ch1 » issue de la table « parent » ; les 2 tables sont liées par une jointure sans surprise, de type FK/PK. Remarquons juste que nous faisons remonter dans cette vue les PK des 2 tables (nous les utiliserons dans le trigger).
Regardons maintenant plus attentivement le script de création du trigger.
Comme nous voulons mettre à jour les 2 tables ou aucune, nous empaquetons ces 2 mises à jours dans une transaction. Le code lui-même est inséré dans une structure d'interception d'erreur par TRY/CATCH, dont le principe est identique à celui que nous connaissons en fox (remarquons seulement la petite différence syntaxique). Une erreur déclenchée dans le TRY entrainera l'exécution du code contenu dans le CATCH, que nous avons ici simplifié à un simple ROLLBACK. Bien entendu, ce code devrait comporter un traitement personnalisé de gestion de l'erreur, afin de remonter ses détails jusqu'à la couche client, mais ce n'est pas l'objet de la présente contribution. Nous aurions pu également utiliser un SET XACT_ABORT ON.
Le code traite donc la mise à jour de chaque table par un UPDATE, en vérifiant d'abord si la mise à jour est requise, et en utilisant les pseudo-tables :
Vérifier si la mise à jour est requise pour cette table La commande UPDATE(nom_de_colonne) renvoie le booléen VRAI si l'évènement déclencheur impacte cette colonne.
L'utilisation de la pseudo-table INSERTED Les pseudo-tables sont des jeux d'enregistrements présentés dans les trigger, et disponibles comme des tables dans le code des trigger. Ces pseudo-tables (que nous appellerions des cursor en fox) sont nommées INSERTED et DELETED, elles ont exactement la même structure que l'objet (table ou vue) sur lequel porte le trigger, elles contiennent les jeux d'enregistrements impactés par l'évènement demandeur. Dans un trigger INSERT, seule la pseudo-table INSERTED est présentée ; dans un trigger DELETE, seule la pseudo-table DELETED est présentée. Et dans un trigger UPDATE, les 2 pseudo-tables sont présentées, DELETED contient les valeurs d'origine (avant l'update) de la table ou de la vue, et INSERTED contient les valeurs de destination.
Dans notre exemple, nous avons uniquement besoin des valeurs contenues dans INSERTED pour les appliquer aux tables sous-jacentes de la vue.
La clause FROM dans la source des données du SET Nous retrouvons les enregistrements dans chacune des tables par une simple jointure entre cette table et INSERTED sur la clé primaire. La clause FROM permet d'utiliser le jeu résultant de cette jointure à la fois pour identifier la ligne à mettre à jour et pour déterminer la valeur de remplacement. Tout simple, non ?
Le dernier script est un simple test, permettant de vérifier le fonctionnement de l'ensemble.
Il ne reste plus qu'à consommer cette vue serveur comme si c'était une table, dans notre client fox (avec une vue distante, du code SPT, ou un Cursor Adapter) ou notre client StrataFrame (avec un BO).
Comment obtenir l'information sur le serveur SMTP Sous Windows 7Comment utiliser un DLL foxpro (ou autre) sans avoir besoin de l'enregistrerCette technique vise Foxpro 9 (SP2) spécifiquement.
Mise-à-jour. Je me suis fait demandé comment obtenir le CLSID d'un DLL pour pouvoir ensuite le mettre dans le manifest. Voici une méthode: (cette methode utilise tlbinf32.dll qui vient avec Visual Studio)
1. Trouver l'information à partir du fichier TBL.
CLEAR
LOCAL otlb
otli=NEWOBJECT('tli.tliapplication')
otlb=otli.TypeLibInfoFromFile("serial.dll")
FOR EACH oCoClass IN otlb.CoClasses
?"Class name : ",oCoClass.NAME
?"CLSID is : ",oCoClass.GUID
ENDFOR
Export XLS (via ODBC)Bonjour,
J'ai réceptionné une demande Khaled en email me demandant comment on peut exporter des données VFP dans une feuille Excel avec des données dans différents onglets.
J'ai répondu qu'il y avait plusieurs solutions (Automation, Odbc, ..) comme toujours en VFP
Je propose une illustration avec ODBC ci-après.
Cet exemple prend des morceaux de 2 tables (Clients et Employés) de la base Northwind pour les mettre dans des onglets. (testé avec excel 2003)
Cordialement
Francis
Outlook : visualiser dans une table les propriétés des dossiers Contacts,Tasks,Calendar.....Salut vous tous
cet exemple permet de visualiser les propriétiées qui composent les différents dossiers d'Outlook. En autant qu'il y est au moins un item d'inscrit dans le dossier
Outbox folder : Pour pouvoir voir ce 4ieme dossier, mettre Outlook en mode offline et faites l'envoit d'un courrier. Après avoir exécuter mon code, détruire l'item que est dans le dossier de sortie pour les email.
Anyways regarder le code pour vous faire une idée
have fun
Obtenir l'adresse IP et l'adresse MAC d'un ordinateurDifferente technique pour obtenir l'adresse IP et adresse MAC d'un ordinateur.
GetSpecialFolder **** toutes la gagne et y'en a un paquet enfin j'en ai ressencé 12287Salut à tous
voici la fonction que vous retrouverez si vous faites une recherche sur Google et j'ai eu de la difficulter à là trouver.
Procedure GetSpecialFolder(tnFolder)
Local lcSpecialFolderPath, ;
lcPath
lcSpecialFolderPath = replicate(chr(0), 260)
Declare SHGetSpecialFolderPath In shell32.Dll ;
long hwndOwner, String @cSpecialFolderPath, Long nWhichFolder , integer fCreate
SHGetSpecialFolderPath(0, @lcSpecialFolderPath, tnFolder, 0)
lcRetVal = Strtran( lcSpecialFolderPath , Chr(0) ,'' )
Return iif( vartype(lcRetVal)="C",lcRetVal,"")
Moi ce que je cherchais c'était le 28ieme item de cette fonction soit :
%userprofile%\AppData\Local
simplement ou sont enregistré les données et préférences de la majorité des logiciels que
nous installons.
je joins une routine qui vous permettras de découvrir une multitude d'autres dossiers spéciaux, qui,
je le crois, vous permetteront de mieux comprendre la structure de Windows en matière de dossiers.
À vous d'adapter ce code pour savoir ceux qui n'existe pas sous Xp, moi je n'ai plus rien qui roule sous Xp.
a+ aller have fun
Le mouton noir d'Atoufox ... moi même le québécois Eddy
Outlook : Recheche avec EntryIDSalut vous tous,
Pour chaque items composant la base de données d'outlook il existe une propriété qui identifie de façon unique un item pour la messagerie, les appointements, les tâches et les contactes, les notes et autres.
le hic c'est qu'il faut spécifier le dossier qui a pour entité unique (propriété) StoreID l. ID spécique d'un dossier sur lequel se portera la recherche. Bref il faut savoir ce qu l'on recherche. On recherche un message, un contacte ou une tâche ?.... c,est à nous de le savoir
Qu'elle est l'importance ? ..... Je dirais que dans une base de données de contactes, il peut y avoir plusieurs Mike Gagnon (notre expert Outlook) qui figure dans notre base de contactes. Et pour chaq'un de ces Mike, on aura un Id différent et ca va de soi, on est habitué à ca avec Fox.
Cette propriété c'est EntryID
Donc on a un StoredID qui identifie un dossier et un EntryID qui idenfie un item de ce dossier.
Là ou j'ai eu beaucoup de difficulté c'est que la fonction de recherche loContactFolder.items.Find() ne fonctionne pas avec l'entryId
on peut écrire loMikeItem = loContactFolder.items.find("[Firstname] = 'Mike'") et ca fonctionnera pour le premier item rencontré dans la liste des contactes pour Firstname = Mike. Bref ca ne veut pas dire que c'est le
bon Mike et s'il y en un on peut toujours exécuter
? loMikeItem.fullname
? loMikeItem.homeadress
Pouquoi je veux travailler avec l'entryID ?.
En Vba j'ai développer 12 fonctions qui me permettent de savoir si j'ai ajouté, modifier ou détruit un item dans les dossiers agenda, contacte, tache ou messagerie. La seul chose que ces fonctions font c'est d'enregistrer l'entryID dans un fichier texte comme suivant :
2010-05-31 85316,36IPM.TaskDelItem .txt
2010-05-31 85380,64IPM.Task AddItem .txt
2010-05-31 85387,2IPM.Task ModifItem .txt
2010-05-31 85389,37IPM.Task DelItem .txt
2010-05-31 85405,13IPM.Task ModifItem .txt
2010-05-31 85407,09IPM.Task DelItem .txt
2010-05-31 85442,98IPM.Appointment AddItem .txt
2010-05-31 85446,24IPM.Appointment ModifItem .txt
......
et ainsi de suite. dans chacun de ces fichiers texte ou je retrouve la donnée suivante
00000000FB9DC40F4AEB6548A4211D0BD77C4D3F84202000
soi un EntryID que je retrouverai aisément dans une table.dbf
Ma surprise c'est que toutes les modifs apportés par la synchro avec mon mobile 6.1 sont aussi répertoriés.
j'ai donc 2 données intéressante :
I PM.Appointment AddItem
qui me dit que j'ai ajouté l'appointement "00000000FB9DC40F4AEB6548A4211D0BD77C4D3F84202000"
qui me dit de quel EntryId il s'agit dans l'agenda
Saurait aussi pu etre
IPM.Task DelItem
00000000FB9DC40F4AEB6548A4211D0BD77C4D3F84202000
Donc vous devinez la suite. Il devient facile de modifier et de répertorier dans des dbfs comme dans sql server une relation unique entre les tables et le fichier Pst d'outlook.
a+ et bonne chance pour la suite
code postaux francaisla liste des codes postaux francais et des communes en dbf
Bonne journée à tous
Cordialement
Eric
Best of INSEEJuste des liens sur le site web de l'INSEE pour éviter de chercher pendant des heures :
Les communes, cantons, arrondissements, départements, régions + l'étranger (avec code INSEE bien sûr) :
Au format DBF & TXT
http://www.insee.fr/fr/methodes/nomenclatures/cog/telechargement.asp
Au format XML
http://xml.insee.fr/schema/
Au format RDF/XML
http://rdf.insee.fr/geo/
un exemple de mouchardun mouchard (fichier de log, ...) est un fichier dans lequel on enregistre, au fil de l'eau, tous les évenements survenants dans une application. Il permet, en cas de problème ou d'erreur de connaître tout ce qu'il s'est passé avant cette erreur et donc d'en trouver l'origine.
Après plusieurs essais, j'utilise un fichier texte comme mouchard. Je vous expose ici comment.
Jean à Grenoble
Resizer et positionner des objets sur un formulaireSimple à faire fonctionner et l'avantage c'est de pouvoir controler chaque objet du formulaire comme on le désire
l'exemple est simple il donne un avant goût de ce que l'on peut faire.
Positionner des formulaires avec _screen.TabFormulaireEn gros il est préférable d'ajouter un tableau à _screen et d'y référencer les formulaires à contrôler. L'emploit d'une table est à proscrire pour une raison simple, si les formulaires sont en sessions privés, ca va être difficile à gérer. Voir presqu'impossible.
Aussi l'emploit du tableau variable rend flexible la possibilité de contrôler la fermeture, le déplacement ou tout autres actions sur les formulaires avec toutes sortes de critères
a+
Test le numero d'un ribFunction qui permet de tester si le relevé d'identité bancaire est correct.
Ken Levy / FoxRockX - Mars 2010 : "Visual FoxPro Stack Overflow"Traduction Française par Francis FAURE 04/2010 de l'éditorial de Ken Levy du magazine « FoxRockX » de mars 2010. Avec l'autorisation de Ken Levy et Rainer Becker http://portal.dfpug.de/dFPUG/Portal/FoxRockX/. Relecture Michel Lévy et François Lepage.
Visual FoxPro Stack Overflow Débordement de la pile des idées dans les composants logiciels de l'écosystème Visual FoxPro Par Ken Levy
En matière de logiciel, un débordement de pile se produit lorsque trop de mémoire est utilisée dans la pile des appels, généralement causée par des erreurs de programmation, ce qui entraîne généralement un plantage du programme. En matière d'idées, un débordement de pile peut se produire lorsque trop d'idées, quelles que soient les bonnes intentions à leur origine, reposent sur un concept qui est irréaliste ou trop ambitieux pour atteindre son objectif.
Petit résumé de VFPS (Visual FoxPro Stack) VFPS signifie Visual FoxPro Stack, un sigle utilisé pour définir les composants logiciels clés qui composent la plate-forme Visual FoxPro et son écosystème.
Cet article est un extrait de la deuxième partie de l'éditorial que j'ai écrit pour l'édition de janvier 2009 du magazine FoxRockX. Cet article peut être consulté en ligne sur http://www.foxrockx.com en cliquant sur « Visual FoxPro Stack » dans le menu de gauche [1] .
VFPS est une idée inspirée par une longue conversation que j'ai eue avec Rainer Becker, un soir lors des conférences VFP DevCon 2008 à Francfort, en Allemagne. L'idée était d'avoir un cadre de référence pour l'évolution des composants de la communauté VFP, pour ajouter une médiatisation et renforcer l'image de marque, tout comme LAMP est populaire pour les outils et les composants de développement open source. Il ne s'agit pas d'un produit, mais simplement d'un état d'esprit et d'une perception, en se référant à VFPS comme le dernier ensemble de composants connexes à VFP, de la même manière que LAMP en 2010 peut être comparée à l'état de LAMP en 2008.
Dans cet éditorial de FoxRockX de janvier 2009, j'ai écrit en point de départ la liste suivante de suggestions des composants qui pourraient composer VFPS :
Visual FoxPro 9.0, Sedna et XSource, VFPX, VFPY. Incluant aussi les produits de tiers pour VFP, y compris les outils DotNet pour Visual FoxPro tels que VFP Studio, Guineu, DotNet Extender for VFP, VFPCompiler for DotNet et VFPConversion.
Au moment où cet article a été publié, j'ai créé une nouvelle page wiki pour VFPS à http://fox.wikis.com/topic/VFPS . Ma première demande s'adressait aux développeurs VFP, pour qu'ils fassent évoluer la page wiki VFPS, en la commentant et en discutant pour la faire évoluer en fournissant des commentaires et en discutant sur l'évolution des composants de VFPS ; et ainsi contribuer à la mise en place de la marque VFPS.
Débordement de Visual FoxPro Stack Comme il ya un peu plus d'un an que mon article au sujet de VFPS a été publié, il est intéressant d'examiner les résultats à ce sujet. À partir d'une définition logique, certaines choses ont bien évolué et d'autres non.
Pour être honnête, quand j'ai écrit cet article, je ne m'attendais pas à beaucoup de retours sur l'idée de VFPS et sur l'article, je sais que c'était une ouvre de longue haleine, mais j'ai pensé que cela valait la peine de lancer l'idée pour découvrir les commentaires et le potentiel de suivi de la communauté. La page VFPS sur le wiki que je mentionne ci-avant a reçu très peu de contributions communautaires. Le premier commentaire est le paragraphe ci-dessous copié à partir de cette page wiki VFPS:
[2009.06.27] J'aime beaucoup l'idée de Ken. Toutefois, on dirait qu'il veut inclure dans ce cadre de référence VFPS tout ce qui est lié à VFP... Idéalement, tous les projets VFP en code open source (ou les plus populaires) serait à inclure, ou, au minimum, ils devraient être gratuit. Cela pour suivre les principes de l'Open Source de LAMP, etc.
Si on commence à y mettre des choses comme VFPConversion, c'est une sorte d'idée autodestructrice et n'est pas du tout une solution. La mise en ouvre d'une solution serait grandement simplifiée si on en supprimait les composants qui n'utilisent même pas de code VFP.
Je vais commencer à répondre à ces retours en indiquant que je suis, pour la plupart, d'accord avec ces commentaires. Il n'y a pas de direction évidente pour tracer une ligne de séparation entre ce qui devrait ou ne devrait pas faire partie de VFPS, car c'est très subjectif. Par exemple, Windows devrait-il faire partie de VFPS ? Probablement pas, mais pourtant il joue un rôle important pour toutes les applications VFP. La raison pour laquelle j'incluais à l'origine des produits, des technologies et du contenu qui n'utilise pas du code VFP est que ces choses contribuent à faire évoluer les applications VFP existantes et d'une certaine façon - comme un ou plusieurs composants de la pile LAMP contribuent à diverses applications basées sur l'open source.
Aucun résultat se référant à l'ensemble de l'écosystème FoxPro décrit dans VFPS (Visual FoxPro Stack) ne verra probablement le jour dans la communauté VFP. Si l'idée est probablement valable à bien des égards, de façon réalise c'est juste un concept que certains développeurs vont examiner, mais ne pas utiliser, ni y contribuer.
Je connais beaucoup de développeurs VFP, dont moi-même, qui sont fans de l'exploration spatiale et suivent @NASA sur Twitter. Je fais référence à cela pour faire une analogie théorique : souvent les grandes idées sont nécessaires pour faire un grand pas en avant, ce qui aboutit parfois à un échec ou à un succès limité, mais toute expérience est un apprentissage et, en général cela vaut la peine.
Je ne pense pas que VFPS ira au-delà d'articles rédactionnels pour FoxRockX, mais il ne me semble pas inutile d'aider à réfléchir sur l'importance de l'écosystème global de VFP et de son évolution dans cette prochaine décennie.
VFPX et @VFPX En termes d'utilité, et dans le sens d'une collection de technologies connexes en évolution, VFPX est la vraie solution. Et s'il y avait un VFPS, c'est probablement VFPX qui serait le composant le plus populaire et l'aspect le plus évoluant de la pile. Les projets continuent de grandir et d'être améliorés dans VFPX (http://codeplex.com/vfpx).
Même si vous ne contribuez pas aux projets VFPX, il est important de télécharger les existants de VFPX et de fournir des retours aux développeurs contribuant sur VFPX, afin de les soutenir dans leurs travaux d'améliorations des outils et des composants de VFPX.
Vous pouvez suivre les annonces de VFPX sur Twitter @VFPX. Si vous n'utilisez pas Twitter, vous pouvez toujours aller à http://twitter.com/vfpx et vous abonner au fil RSS @VFPX comme vous le feriez pour suivre un blog.
Sybase Advantage Database Server avec Visual FoxPro Dans le concept de VFPS il y a un produit important, une technologie qui devrait logiquement être ajoutée à un VFPS 2.0 (ou VFPS 2010) et c'est Sybase iAnywhere avec son Advantage Database Server. Advantage Database Server (ADS) est le seul produit [2] aujourd'hui qui améliore activement la façon dont les développeurs peuvent travailler avec des données Visual FoxPro (Tables DBF et index CDX). Ce qui est unique dans ADS c'est qu'il peut aider à améliorer des applications VFP dans la prochaine décennie en « pontant » les données DBF de VFP avec d'autres technologies et plates-formes. Il y a un nouveau hors série gratuit de FoxRockX de 12 pages au format PDF en téléchargement - Janvier 2010, numéro 4, « ADS Special Issue » disponible sur http://portal.dfpug.de/dFPUG/Dokumente/FoxRockX/FoxRockX201002.pdf dont je suis l'auteur et titré « Sybase Advantage Database Server avec Visual FoxPro ».
Dans cette édition spéciale de FoxRockX je décris en détail, avec des exemples téléchargeables, comment utiliser Advantage Database Server avec VFP permettant avec .NET ou d'autres technologies d'utiliser les données DBF sans exiger de modifications aux applications existantes VFP. Vous pouvez trouver du contenu technique connexe sur ADS avec VFP (articles et screencasts, dont certains que j'ai créé) sur le portail http://sybase.com/foxpro.
Le support de Visual FoxPro 9.0 Il ya quelques mois, le 15 Janvier 2010, le support standard de Microsoft pour Visual FoxPro 9.0 s'est terminé. Le lendemain fut un jour comme les autres, les suivants aussi.. Le support étendu (payant) pour Visual FoxPro 9.0 se terminera en janvier 2015.
Visual FoxPro 9.0 finira par ne plus être disponibles à la vente comme un produit en boîte individuelle sous film plastique, mais restera disponibles via les abonnements MSDN et éventuellement par le biais de licences en volume (Select).
Pendant un certain temps, les mises à jour VFP 9.0 ont été en rupture de stock dans le magasin en ligne de Microsoft ( http://store.microsoft.com ), alors que ce mois ci la version complète reste disponible, probablement jusqu'à épuisement des stocks. Actuellement il n'y a plus que 10 exemplaires de Visual FoxPro 9.0 dans le magasin réservé aux employés de Microsoft et je ne m'attends pas à un ré approvisionnement après que ceux-ci soient vendus.
Visual FoxPro 9.0 fonctionne bien sur Windows 7 et il n'y a probablement pas d'autre service pack planifié par Microsoft. C'est probablement seulement des « hotfixes » que Microsoft pourrait produire dans le cas ou VFP 9.0 rencontrerait un bug critique ou pour la compatibilité d'une future plateforme Windows ou .NET
Il est intéressant de relever que les médias actuels (fichiers) fournis dans Visual FoxPro 9.0 Professional, les mises à niveau et des éditions universitaires sont toutes réellement identiques. La seule chose qui change dans chaque version c'est le prix de la licence.
La marque déposée "Visual FoxPro" Vous pouvez vérifier les marques déposées américaines en cours et celles non renouvelées sur http://www.uspto.gov/trademarks (Cliquez sur rechercher des marques). Là, vous pouvez vérifier que « Visual FoxPro » est une marque déposée par Microsoft Corporation. Ce que j'ai récemment découvert c'est que Microsoft n'a jamais renouvelé sa marque déposée FoxPro et l'a effectivement laissé expirer en 2002.
Quand elle a expiré, je n'ai pas été informé et je ne connais personne de l'équipe de Fox qui en ait été informé, nous avons toujours supposé que la marque était déposée. Il apparait maintenant que la marque «FoxPro» n'était pas déposée durant les 6 années suivantes. Jusqu'à ce que, en 2008, une compagnie appelée « FOXPRO Inc », fondée en 1993, enregistre la marque «FoxPro».
Leur site web est gofoxpro.com et, ironiquement, d'une manière très négative, ils vendent un produit appelé « FOXPRO » qui est utilisé pour chasser et tuer les renards. Voici une description partielle du produit FOXPRO sur leur site web :
Chez FOXPRO Inc, les appeaux et la chasse sont nos passions... Que vous soyez un chasseur de prédateurs pur et dur, amateur de gibiers d'eau ou de fauves, ou un photographe de faune animalière, nos appeaux FOXPRO sont pour vous.
En autre ironie du sort, désormais lorsque vous recherchez « FoxPro » sur google.com ou bing.com, la première réponse est le site gofoxpro.com plutôt que de tout autre site ayant un rapport à Visual FoxPro.
Lorsque vous recherchez le terme FoxPro sur Twitter, vous trouverez souvent des messages sur les appeaux de FOXPRO aussi bien que des messages en relation avec VFP. Vous pouvez facilement rechercher vous-même sur Twitter à l'adresse http://search.twitter.com, en utilisant la fonctionnalité de recherche avancée pour indiquer vos critères de recherche. Vous pouvez également utiliser des outils clients pour Twitter comme TweetDeck pour suivre les résultats automatiquement. J'ai configuré mes critères de recherche sur TweetDeck afin de suivre sur Twitter les textes VFP et FoxPro. En faisant cela, vous constaterez que 'VFP' est maintenant couramment utilisé pour au moins deux autres acronymes que celui de Visual FoxPro : l'un est pour les Volontaires Pour la Paix (vfp.org) et l'autre pour des Vétérans Pour la Paix (veteransforpeace.org).
C'est navrant que nous ayons à trier les termes FoxPro et VFP «surcharge de la pile» en recherchant dans le contenu des médias sociaux. Ce qui est le plus important maintenant c'est de considérer que FoxPro est une marque déposée par la société FOXPRO Inc, qui est sans rapport avec Visual FoxPro et qu'elle pourrait revendiquer sa marque sur des choses comme la prise en charge du compte twitter @FoxPro, empêcher l'utilisation du nom FoxPro quand il n'est pas utilisé sous la forme Visual FoxPro et qui sait quoi d'autre. Tous ces problèmes potentiels, tout simplement parce que Microsoft a décidé de ne pas renouveler ou oublié de renouveler la marque de FoxPro en 2002. Je suis sûr que la communauté FoxPro aurait volontiers agi et aurait été prête à faire un don à Microsoft pour l'équivalent du faible coût de la marque. Je ne comprendrai probablement jamais pourquoi l'enregistrement de la marque FoxPro a pris fin, ni même pourquoi l'équipe de développement Fox n'a jamais été informée à ce sujet.
FoxCentral.net et @FoxCentral À l'automne 2001, juste quelques mois après je sois promu chef de produit VFP chez Microsoft, j'ai eu une réunion avec Rick Strahl à Redmond pour discuter de mon idée de créer un centralisateur de nouvelles qui pouvait être basé sur des pages web avec un flux RSS et que celui-ci puisse permettre aux différents acteurs de la Communauté VFP de publier eux même les informations et de communiquer sur les nouveautés produits. Nous avons discuté des principales caractéristiques, de l'architecture et nous avons défini que le domaine serait FoxCentral.net. Rapidement Rick a mis en ouvre FoxCentral.net et a également créé un outil VFP pour la publication. Près de 9 ans plus tard, FoxCentral.net est toujours actif et reste une base reconnue.
En écrivant cet article, il m'est venu l'idée d'un compte @FoxCentral sur Twitter et j'ai découvert qu'il n'était pas utilisé. Alors j'ai créé @FoxCentral et configuré le compte pour suivre un seul compte à ce jour: @FoxPro (un autre compte Twitter que j'ai créé il y a un certain temps déjà). J'ai alors envoyé un e-mail à Rick Strahl pour lui faire savoir que j'ai créé @FoxCentral sur Twitter en lui demandant s'il serait possible pour lui, d'ajouter une fonction sur le serveur FoxCentral.net qui serait que les nouvelles postées sur FoxCentral.net alimentent automatiquement le fil Twitter. Mon hypothèse sur la meilleure mise en ouvre serait d'avoir le texte du sujet de la nouvelle (tronqué à 125 au besoin), suivi par un lien de type 'bit.ly' créé à la volée retournant sur le message posté.
De cette façon, les gens peuvent suivre @FoxCentral et savoir quand il ya de nouveaux articles publiés sur FoxCentral.net et de permettre @FoxCentral d'être incontournable sur Twitter. Le compte @FoxCentral existe maintenant sur Twitter, il sera intéressant de voir la suite et comment ce compte sera utilisé. Je ne peux pas dire avec certitude comment @FoxCentral va être utilisé au moment d'écrire ces lignes, mais au moins il ne sera pas utilisé pour quelque chose qui ne soit pas lié à FoxPro - à moins qu'une entreprise décide d'enregistrer la marque FoxCentral et souhaite le récupérer, mais c'est peu probable.
La stratégie de Microsoft concernant Visual FoxPro Pour le numéro de novembre 2009 du magazine FoxRockX, j'ai écrit un article pour l'éditorial intitulé « La stratégie de Microsoft concernant VFP ». Vous pouvez lire cet article en ligne à http://www.foxrockx.com en cliquant sur « VFP strategy at MS » dans le menu de gauche. [3]
Cela mérite de mentionner ici quelques détails qui ont suivi cet article et des rectificatifs. Randy Brown a lu mon article et m'a fourni des informations précieuses. Randy est un ami proche et il était le directeur du programme et l'architecte de Visual FoxPro 9.0 chez Microsoft.
D'abord, Randy m'a rappelé que l'ensemble de l'équipe de Visual FoxPro 3.0 chez Microsoft dans le début des années 1990 était plus proche d'un total de 75 personnes, plutôt que de 50. Et que l'équipe de Visual FoxPro 9.0 était plus proche d'une total de 15 membres et non pas de 8 comme je l'ai mentionné, car nous devons aussi inclure ceux qui ont travaillé sur la documentation et l'équipe de test.
Ensuite, sur un autre sujet dans mon article, en quelque sorte un "débordement de pile" de ma mémoire car j'aurais du vérifier avant, c'est que Borland était effectivement le propriétaire de dBASE en 1992, lorsque Microsoft a acheté Fox Software, et non Aston-Tate comme je l'ai mentionné. Aston-Tate a été acheté par Borland, avant la fusion avec Fox Software et cela a certainement été un facteur majeur pour Microsoft d'acheter Fox Software, avec les autres raisons que j'ai mentionnées dans mon article.
Randy a souligné une chose importante à noter à propos de l'histoire de FoxPro et de son éventuelle disparition, c'est que la décision de Microsoft de tuer VFP a été faite bien avant les justifications actuelles (par exemple la baisse des ventes et le marché). Et une fois que la décision a été prise (au moment de la version 5.0 de VFP), il n'y avait pas grand chose qui puisse être fait pour le sauver, puisque la décision est allée jusqu'au sommet.
Une ironie dans mon article, c'est que j'ai mis le mot «stratégie» dans le titre, car je me suis référé à la seule réelle stratégie de Microsoft pour FoxPro qui a été pour les 5 premières années (1992-1997). Après cela (à partir de VFP 6.0), ce n'était pas tant de la stratégie que de garder simplement un mode de maintenance et quelques efforts de marketing communautaires pour garder les développeurs VFP sur plateforme Microsoft Windows.
FoxRockX et @FoxRockX Vous pouvez voir dans la chronologie de l'histoire de FoxPro sur http://www.foxprohistory.org/foxprotimeline.htm, qu'il y a 6 ans Pinnacle allait mettre fin à la publication de FoxTalk. Quand j'ai appris de cette nouvelle au début de 2004, j'ai passé un appel téléphonique a une personne clé chez Pinnacle et les ai convaincus de continuer l'édition de FoxTalk, avec un nouveau nom FoxTalk 2.0, avec l'accord que je fournirais un article mensuel intitulé Conseils de l'équipe VFP. L'accord prévoyait aussi que l'équipe Fox aiderait à promouvoir la publication afin de maintenir la base des abonnements. Je me souviens aussi que dans la conversation, Pinnacle voulait bien continuer la publication pour une année et ensuite faire un point pour déterminer s'ils pouvaient poursuivre ou non la publication. La communauté VFP a une fois de plus montré son soutien et FoxTalk 2.0 à continué 4 ans de plus jusqu'à ce qu'il soit repris et transformé en FoxRockX.
Le compte @FoxRockX sur Twitter a été créé récemment pour relater les nouvelles et les annonces de FoxRockX. Et maintenant une question amusante pour finir... Pourrait on ou devrait on considérer FoxRockX comme faisant partie de Visual FoxPro Stack ?
Ken Levy est le président et fondateur de MashupX, LLC, spécialisé dans le conseil pour les communautés bâties autour de produits et de services, les techniques de consulting marketing ciblées, la création multimédia et les techniques logicielles. Ken est le co-animateur de CodeCast un podcast associés à Code Magazine. Avant de commencer MashupX, Ken a travaillé chez Microsoft comme chef de produit pour Visual FoxPro, puis responsable de l'équipe de la plateforme Windows Live et enfin gestionnaire du programme communautaire VSX (Visual Studio Extensibility). Ken est un membre bien reconnu de la communauté FoxPro, il a créé GenScrnX pour FoxPro 2.x et de nombreux composants VFP y compris l'explorateur de classes. Vous trouverez Ken sur twitter @KenLevy, sur son blog à http://mashupx.com/blog/ et vous pouvez aussi le à contacter par email klevy@mashupx.com.
[1] Note du Traducteur : La traduction en français de cet article existe et elle est disponible sur www.FoxRockX.com et www.atoutfox.org
[2] Note du Traducteur : J'ai questionné Ken Levy sur mon doute de la traduction « the only product today», car d'autres solutions existent (VFP OLEDB.). Il m'a répondu que cette ligne provient de la documentation Sybase elle-même...
[3] Note du Traducteur : La traduction en français de cet article existe et elle est disponible sur www.FoxRockX.com et www.atoutfox.org
Une form pour envoyer des mails avec VFP_WinSockQuelques explications :
form_parametrable est ma form de base. Elle gère le redimensionnement des forms, ouvre le ou les mouchards ainsi que la table de l'aide contextuelle automatique (dans mes forms, il y a une editbox 'edtexplication' qui affiche le memo qu'elle trouve dans cette table en fonction d'une clef. L'opérateur a donc sous les yeux les explications liées à la form). Vous pouvez la supprimer en tant de 'parentclass'.
Tous les traitements ont lieu dans des classes programmées que j'ai mises dans atoutfox_mail.prg; la form form_mail ne sert qu'à ... visualiser. Les paramétrages sont dans un fichier texte et donc facilement modifiables.
On enregistre les mails dans une table VFP. Mais rien n'empêche de créer automatiquement une copie invisible à sa propre adresse de messagerie et de récupérer les mails envoyés dans un dossier particulier grâce à un filtre de message.
Je pense avoir mis beaucoup d'explications mais si vous avez besoin de compléments, n'hésitez pas à me les demander.
Jean à Grenoble
BasicSubClass : Création d'un VCX contenant une surcharge "vide" des classes visuelles de baseBonjour,
Les "Best Practices" indiquent (à juste titre à mon avis) qu'il faut considérer les classes de bases visuelles de VFP comme "Abstract" et donc commencer un projet VFP par générer ses propres classes visuelles en surchargant les classes visuelles de bases.
Comme c'est un peu long à faire à la "mano" ci-aprés un programme permmettant de générer un VCX directement
C'est tellement plus pratique ensuite de n'avoir qu'a modifier ses propres classes "de bases" ...
Cordialement
Francis Faure
StrTran en C#Deux methodes d'extension de Strtran - avec
Une qui utilise IndexOf() Une qui utilise RegEx
10-21 Rushmore, améliorer les performances de VFP en utilisant RushmoreCi-joint rushmore.zip contenant :
les programmes et données démontrés pendant la session / atelier du vendredi matin. nos bibliothèques ab... contenant près de 400 méthodes et fonctions utilitaires (décrites dans "ab.xls") Ce code est distribué en open source à notre communauté (voir mention en tête de chaque prg)
Il sera bientôt sur un serveur subversion pour faciliter le partage du code.
10-15 SESSION PARTAGE MIGRATION Dot net et StrataframeBonjour à tous
ci jont un fichier pdf relatif à ma présentation sur strataframe
Comme promis lors des rencontres, l'intégralité du code de cette application est livré à atoutfox et ses adhérents sour la forme d'un fichier zip 16 megas téléchargeable à l'adresse : http://www.aumeric.fr/atoutfox/etiquettes.zip
y compris les fonctions contenues dans le fichier baseric.vb permettant de coder avec une sytaxe très très proche de vfp .
Ainsi le code pour garder un écran affiché pendant 20 secondes puis le fermer à l'issue et aussi les fonctions de calcul de clé rib, calcul d' IBAN et conversion de chiffres en lettres.
Strataframe est téléchargeable en version évaluation ( complète pendant 20 jours)
Tous les éléments disponibles sur le site https://www.strataframe.net/
De quoi migrer en douceur autant que faire ce peut.
chaque migration reste une aventure et le temps passé à préparer les bases de données, sélectionner les bons types de champs (char à la place de varchar, numéric ou int à la place des float) , bonne gestion des Primary Key et des Foreign Key est largement récupéré par la suite.
Ce sujet pourrait faire l'objet une session tellement il est vaste.
Bon courage à tous et bon codes
Atoutfoxement
Eric LEISSLER
10-11 Regular Expressions in vfp - Gregory AdamLe fichier contenant la presentation. Les pages 6 a 20 peuvent etre utilisees comme reference
10-14 XML et WebServices - Francis FAURECi-joint un fichier zip contenant le matériel de support de ma présentation "XML & Webservices" lors des conférences AtoutFox 2010 à Roissy (powerpoint au format PDF et les petits programmes d'illustration).
Cordialement
Francis
Convertir win-1252 en ISO-8859-1Pour Jean :
Suite à sa demande en news de convertir en ISO-8859-1
Cordialement
Francis
ps : Grégory nous ferait surement une regex en 2 lignes pour la même chose ^^
Envoyer des fax en série avec l'imprimante virtuelle de XPCete moulinette permet d'envoyer des fax en série en utilisant l'imprimante virtuelle Fax de Windows XP (installée par défaut si votre ordinateur dispose d'un modem).
Elle n'a pas été testée avec autre chose que XP. Elle est donc a priori à usage interne, pour vos propres envois de fax.
Le principe est le suivant :
- une impression vers fax doit être initiée à la main (ca pourrait se faire automatiquement mais ce n'est pas le propos ici : il faudrait définir l'imprimante par défaut puis lancer l'impression avec ShellExecute : sauf erreur de ma part, d'autres articles traitent de ces aspects)
- la moulinette prépare l'envoi du fax à des destinataires multiples : les N°s de fax sont dédoublonnés et vérifiés avant d'être ajoutés à la liste d'envoi de l'imprimante virtuelle, par détection de la fenêtre de l'imprimante virtuelle fax windows, simulation de l'appui des touches de raccourci des boutons, et utilisation du presse-papier.
NB : il est probable que selon les versions de windows l'IHM du fax virtuel change, et que donc les raccourcis claviers ne sont pas les mêmes et qu'il faille donc adapter le programme en conséquence.
Fax_Demo() est une démonstration du fonctionnement, avec des numéros bidon.
ATTENTION - COMMUNIQUE DU TRESORIER - IMPORTANT 6ATTENTION
Lorsque vous adressez un chèque pour l'associaiton, assurez vous d'entourer le chèque soit dans une double enveloppe, soit dans une feuille de papier, de manière à ce que le chèque ne puisse être vu de l'extérieur.
Plusieurs malfaisants sévissent au sein de la poste et ouvrent systématiquement le courrier lorsqu'il contient un chèque. Ensuite, si l'ordre du chèque est vierge, ils l'encaissent.
Voici le dernier chèque recu ce jour et remis sous blister par la poste.
Pour être plus sûr, insérez votre chèque dans deux feuilles A4. Les postiers pensent que c'est un CV et ne déchirent pas l'enveloppe.
En tout état de cause, libellez toujours l'ordre de vos chèqu es
Bonne journée à toutes et à tous
A bientôt en aux rencontres Francaise et Africaines.
Eric LEISSLER
DT2TimeStampC'est une convertion du format DateTime au format TimeStamp que l'on retrouve généralement comme identifiant unique dans les fichiers scx, frx, vcx et autres dans Vfp
Merci Gregory de m'avoir fournit cette source qui fait la convertion TimeStamp à DateTime
http://blogs.msdn.com/calvin_hsia/archive/2005/01/21/358339.aspx
EuroCompta32 comptabilité généraleJe publie les sources d'une comptabilité générale (EuroCompta32 diffusée depuis plus de 10 ans).
Il faut VFP 9 SP2,
Et aussi XFRX (facilement adaptable au cas ou).
Un fichier CHM à jour (avec les sources est livré).
En espérant que ce projet puisse servir,
Pour plus de détails:
http://www.diese-consulting.fr/EuroCompta.htm
calcul d'ancienneté en lettresbonjour à toutes et à tous
voici une petite fonction permettant de retourner le nombre d'années de de mois entre deux dates, et le tout en lettres
Bonne programmation à tous
= anciennete(ctod("01/01/2000") , ctod(18/02/2010)) renverra 10 ans et un mois
= anciennete(date_debut,date()) vous renverra l'ancienneté depuis à la date de début à ce jour
Aumeric
COMBO a deux colonnesBonjour à toutes et à tous Voici un exemple simple pour comprendre le mécanisme du combo de strata. Ici, on va servir une table nommée acteurs. Le champ titre_id est une Fk du champ idint de la table titre qui est une Pk Du grand classique en somme. Voici comment faire avec strataframe En vous souhaitant Une excellente année à tous Aumeric
Comment envoyer un message SMS sans modem.La technique est très simple, la plupart des fournisseurs de téléphone mobile (cellulaire) assignent une adresse courriel à votre numéro de téléphone pour les messages SMS. (ex: 5145551212@fido.ca), donc il est possible d'envoyer un message SMS vers un téléphone mobile avec Outlook ou Outlook Express ou tout autre méthode d'automation pour envoyer des courriels.
Vous trouver plusieurs articles sur Atoutfox pour automatiser des courriels. En voici quelques uns: http://www.atoutfox.org/articles.asp?ACTION=FCONSULTER&ID=0000000047
Il s'agit seulement de connaitre le fournisseur du téléphone mobile que vous voulez rejoindre.
Fetch progressif avec les délégués et StrataFrameà propos de Les Pinter À propos de l'auteur.
Les Pinter a commencé à travailler comme consultant pour des compagnies pétrolières locales à Houston (Texas), pendant qu'il préparait son PhD en économie à l'université de Rice.
La programmation prit rapidement plus d'importance que l'enseignement, et sa société commença à se développer. En 1979, Les s'associa avec deux amis (Mike Griffin et Bill Rading) pour développer le « Magic Wand », le quatrième traitement de texte qui ait été écrit pour fonctionner sous le système d'exploitation CP/M. En septembre 1980, Les reçoit un coup de téléphone d'un jeune de 23 ans, un certain Bill Gates ; il rencontre le fondateur de Microsoft le lendemain, et il lui vent le code source de ce qui allait devenir Microsoft Word.
Les Pinter abandonne rapidement les gros systèmes, et devient un des meilleurs experts des USA sur Lotus 1-2-3 ; il publie « The real Estate Guide », le premier add-on pour 1-2-3. Il travaille ensuite sur le premier dBase, puis sur FoxBase. Au moment où Microsoft achète Fox Software, Les Pinter éditait une revue mensuelle, la « Pinter FoxPro Letter », qui a duré 10 ans.
Les Pinter a été nommé MVP VFP. il a écrit un livre sur la migration de FoxPro à .NET, et a été nommé MVP VB.NET. Depuis cet ouvrage, la conversion d'applications FoxPro en .Net est l'activité principale de Pinter Consulting (plus de 800 programmes convertis).
Son domaine de haute compétence intègre WPF et Silverlight, Crystal Reports, SQL Reporting Services, et le développement pour mobiles. Il siège au comité technique de StrataFrame, de IdeaBlade, et de GeneXus.
Créer un report rdlc avec Visual Studio 2008 et StrataFrameVisual Studio propose 2 outils de création de Report.
Dans cet article, nous étudierons pas à pas l'utilisation du plus simple (les rapports de type rdlc) en nous appuyant sur StrataFrame pour accéder aux données.
Ken Levy / FoxRockX "La stratégie de Microsoft concernant Visual FoxPro"Traduction Française par Francis FAURE 12/2009 de l’éditorial de Ken Levy du magazine « FoxRockX » de novembre 2009.
Avec l'autorisation de Ken Levy et Rainer Becker. http://www.foxrockx.com/seite.htm
La stratégie de Microsoft concernant Visual FoxPro Aperçu historique des 15 années d’évolution de Visual FoxPro et de sa stratégie chez Microsoft Ken Levy
Microsoft ne publiera jamais le code source de VFP en open source car il n’y a aucune raison économique pour le faire et de nombreuses raisons pour ne pas le faire. L’évolution de VFP dans la prochaine décennie se fera avec des produits nouveaux ou améliorés qui fonctionnent avec VFP, des projets communautaires comme VFPX, et bien sûr par la communauté VFP elle-même.
La stratégie initiale de Microsoft pour FoxPro L’achat de Fox Software pour 173 million de dollars en 1992 était très stratégique pour Microsoft, cela a été le plus gros rachat d’entreprise que Microsoft ait fait jusqu’alors. dBase de Aston-Tate était encore populaire, Borland avait Paradox, et il y avait PowerBuilder qui était le roi des applications client/server. Microsoft attendait trois choses dans le rachat de Fox Software : l’équipe de développement de Fox, la technologie de Fox, et la part de marché de la clientèle FoxPro/FoxBase. Microsoft venait juste de commencer à travailler sur Access, c’était cibler des utilisateurs de plus de puissance, même s’il y avait des chevauchements. Visual Basic en était à ses débuts.
Il y avait une estimation de 500 000 développeurs FoxPro à son apogée autour de l’année 1995, et des millions d’ordinateurs utilisant des applications FoxPro (avec DOS ou Windows). Il a fallu près de 4 ans, et pas avant VFP 5.0, pour que Microsoft concentre d’avantage sa stratégie autour de VB et moins pour VFP. Naturellement, la base clientèle VFP et le nombre des ventes sont passés de croissants à décroissants ; comme le dit le proverbe dans le monde des affaires : il faut grandir ou mourir .
Les premières années après l’acquisition de Fox Software, Microsoft a déployé un effort énorme et beaucoup de ressources dans la création de VFP 3.0. Il y avait environ 50 personnes dans l’équipe de développement de Fox avec un budget marketing important. Les années suivantes, à la fois Access et VB ont gagné des parts de marché et également concurrencé le marché de VFP (et sa communication), et au moment où VFP 5.0 est sorti, nombre de haut gestionnaires Microsoft voulaient mettre fin à VFP à ce moment-là.
En fait, ils l’ont fait pour une courte période. J’étais là, dans une réunion de 40 personnes, où l’annonce officielle a été faite à l’équipe de développement de Fox que VFP était mort. C’était en tout début de 1996, et cette réunion a été relayée par le rapport du Gartner Group sur l’annonce de l’enterrement de VFP, cela a eu un impact majeur sur les ventes ultérieures de VFP. Mais les membres de l’équipe de développement et sa communauté faisait tant de bruit, également avec des personnages comme Eric Rudder (architecte de VFP 3.0, qui devient l’assistant technique de Bill Gates), qu’ils ont convaincu les gestionnaires des outils de développement qu’il était possible de maintenir VFP et le faire évoluer tout en diminuant ses ressources. En fait, la raison principale pour laquelle VFP a duré une dizaine années de plus, avec 4 versions successives, tenait d’avantage aux ventes de Windows qu’à celles de VFP. Car il y a beaucoup de machines sous Windows qui utilisent des applications VFP. Quand Steve Balmer lance à corps et à cris « développeurs, développeurs, développeurs », il pense plus aux ventes de Windows qu’aux ventes d’outils de développement.
L’histoire de Visual FoxPro chez Microsoft Pour chaque nouvelle version de VFP comme 6.0 et 7.0, il y avait moins de ressources, moins de membres dans l’équipe, et moins de budget marketing. Lorsque VFP a été inclus dans la boîte Visual Studio, c’était juste un paquetage et non une intégration. Quand la communauté VFP a vue que VFP était dans le Visual Studio et a envisagé la possibilité de fonctionner dans le cadre du Framework .NET, ils ont aussi compris que si VFP prenait cette voie, cela risquait sérieusement de briser la compatibilité ascendante des programmes FoxPro et de remettre en cause son interface de développement.
Microsoft n’a jamais eu comme but de travailler à la fois sur VFP et sur un VFP pour .NET. Produire un nouveau VFP pour .NET aurait enlevé des ressources utilisées pour faire évoluer VB.NET et C#, et rendu plus difficiles les ventes de Visual Studio et du framework .NET, et cela pour un résultat ne garantissant pas de faire fonctionner de vieilles applications VFP telles quelles.
Ensuite, après VFP 7.0, il a été décidé de garder VFP comme un produit autonome en dehors de la solution Visual Studio, car il ne faisait pas partie de la plateforme .NET. Cela avait un sens, et a permis à VFP d’avoir son propre scénario de nouvelles versions. Pour toutes les nouvelles versions lancées ensuite, il était prévu que ce soit la dernière. Personne dans l’équipe de développement de Fox, pas une seule personne ne s’attendait à ce qu’une version après la VFP 8.0 puisse être produite.
Les ventes ont continuées à diminuer chaque année, tout comme le budget marketing. La seule façon d’accroitre les ventes de VFP aurait été d’être en compétition avec Visual Studio et de prendre sur les budgets et ressources de Visual Studio. En réalité, le plus gros concurrent de VFP, c’est Visual Studio (et non Delphi ou tout autre produit non Microsoft). La plupart des gens du marketing et les gestionnaires chez Microsoft aurait préférés que les développeurs Fox utilisent Delphi.NET de Borland plutôt que Microsoft VFP, car ils auraient été utilisateurs de la plateforme .NET plutôt que du vieil héritage de COM. COM est devenu un ennemi, dont il fallait éloigner les gens, tout comme le HTML/JavaScript est également un ennemi aujourd’hui pour la plateforme Microsoft.
Pour VFP 9.0, il n’y avait que 8 personnes dans l’équipe de développement, alors même que, VFP 9.0 était une meilleure version que VFP 7.0 et VFP 8.0 d’après la communauté unanime. Peu de temps après la sortie de VFP9, Microsoft a décidé de créer et d’offrir un complément Xbase en vue de maintenir les ventes de mise à jour et d’améliorer l’image de VFP. Cela a été le plan Sedna, un ensemble d’applications, d’utilitaires et d’exemples simples en téléchargements qui sont orientés vers l’interfaçage avec d’autres produits Microsoft (.NET, SQL Server, Office, Windows, etc.). L’autre raison d’être de Sedna a été de retarder l’annonce de la fin de VFP, pour sauvegarder les ventes de VFP 9.0 autant que possible mais aussi de protéger la communauté FOX et ses développeurs sur le marché du travail.
Le code source de Visual FoxPro ne sera pas versé dans le domaine public La demande à Microsoft pour qu’il donne le code source de Visual FoxPro au domaine public est courante (et logique). Voilà en gros pourquoi Microsoft ne communiquera jamais le code source de Visual FoxPro. Il y a dans VFP de la technologie, comme Rushmore optimisant les indexations, qui est utilisée dans d’autre produit Microsoft comme SQL Server et Access. Ce n’est pas le même codage C/C++, mais les techniques et les algorithmes proviennent originellement de VFP.
Microsoft considère cette propriété intellectuelle comme un actif Microsoft et ne veut pas le publier.
Mais les deux plus importantes raisons n’ont rien avec les raisons ci-dessus. Elles ont rapport avec le business. Microsoft n’est plus axée sur les ventes de VFP, elle est centrée sur les ventes de Visual Studio et l’adoption de sa plateforme globale (ensemble de produits et services). Verser le code source de VFP en domaine public se traduirait par moins de développeurs VFP utilisant l’actuelle (moderne) plateforme de produits Microsoft, mais pourrait également aussi permettre à une personne ou à une entreprise de créer un produit compétitif contre Microsoft lui-même. Microsoft ne voudrait pas avoir son code utilisé pour un produit concurrent ou un nouveau produit qui interfère dans avec ses ventes de Visual Studio ou dans l’adoption de la plateforme .NET.
La stratégie finale de Visual FoxPro chez Microsoft Au cours des 5 dernières années de Visual Foxpro chez Microsoft, alors que j’étais chef de produit (marketing / communauté) pour VFP, la stratégie était de commercialiser VFP à la communauté existante (principalement via les mises à jours), et de faire tout ce qui était possible pour maintenir une forte communauté Fox, et de faire en sorte que les développeurs VFP adoptent d’autres produits Microsoft (.NET and SQL Server).
J’ai toujours considéré que mon rôle avait deux faces : l’une en tant que représentant de Microsoft comme salarié, et l’autre en tant que membre de la communauté FoxPro pour faire tout mon possible pour Fox à l’intérieur des murs de Microsoft pour le faire évoluer, le sauvegarder, le promouvoir et aider VFP et sa communauté autant que possible. J’ai passé presque la moitié de mon temps à « vendre » VFP au sein même de Microsoft, au siège à Redmond et dans ses bureaux externes, mais aussi à communiquer pour faire passer le message positif d’un VFP vivant.
Les gestionnaires chez Microsoft sont au dessus de l’équipe de développement du cour de Fox, ils sont les décideurs pour tout ce qui est lié à la stratégie de VFP. Personne dans l’équipe de développement du cour de Fox n’avait la capacité de décision concernant les budgets de marketing ou des ressources pour les équipes, ou pour ce qui suivait la livraison de chaque version. Il y avait quelques personnes clés dans l’équipe qui, travaillant ensemble, ont sans doute prolongée la vie de VFP de plusieurs années par au moins une version supplémentaire.
Je pense que la fidélité des clients a été un autre facteur dans la durée de vie prolongée de VFP au delà de la version 6.0.
Mais au moment où VFP 9.0 a été lancé, le montant des ventes de toutes les versions de VFP confondues pour une année étaient inférieur au chiffre d’affaire d’une seule journée de Visual Studio.
Le coût d’évolution de VFP relatif au chiffre généré (le retour sur investissement – le ROI) était de loin bien moindre à celui de mettre des ressources sur Visual Studio et les langages .NET. De plus, certains membres de l’équipe de développement étaient prêts à aller de l’avant ou à quitter Microsoft, et il était presque impossible de trouver des gens qualifiés pour les remplacer.
Cela aide à tout mettre en perspective si vous pensez à Visual Studio comme le produit concurrent de VFP, même s’il était détenu par la même société. Rappelez-vous quand Apple a travaillé sur les ordinateurs Mac et Lisa en même temps, un seul a survécu. Dans le cas de VFP, il a survécu une décennie entière après avoir été tué pour l’essentiel (il n’est de ce fait plus stratégique).
Dans la prochaine décennie Le 15 janvier 2010, le support standard de VFP 9.0 prendra fin. Bien que le support payant étendu doive exister pendant 5 ans de plus, je ne m’attends pas à des correctifs logiciels supplémentaires (hotfixes) ou à ce que quoique ce soit d’autre soit fait pour VFP, sauf dans le cas improbable impactant le runtime de VFP pour Windows 7 empêchant aux clients ayant des applications VFP de migrer sur la dernière version de Windows.
On peut considérer que Microsoft a tué VFP avant que ça ne soit vraiment nécessaire, mais on peut avoir un point de vue historique et voir que VFP a vécu de très nombreuses années et eu plusieurs versions bien au-delà de ce qu’il était prévu.
Bien que Microsoft aurait pu faire d’avantage pour VFP, cela ne pouvait pas réellement se faire simultanément avec la promotion de Microsoft et les ressources nécessaires pour ses produits Access, VB et Visual Studio.
Seuls les développeurs qui ont utilisés FoxPro l’apprécient vraiment pour ce qu’il est et pour ce qu’il est encore.
Ken Levy est le président et fondateur de MashupX, LLC, spécialisé dans le conseil pour les communautés bâties autour de produits et de services, les techniques de consulting marketing ciblées, la création multimédia et les techniques logicielles. Ken est le co-animateur de CodeCast un podcast associés à Code Magazine. Avant de commencer MashupX, Ken a travaillé chez Microsoft comme chef de produit pour Visual FoxPro, puis responsable de l'équipe de la plateforme Windows Live, et enfin gestionnaire du programme communautaire VSX (Visual Studio Extensibility). Ken est un membre bien reconnu de la communauté FoxPro, il a créé GenScrnX pour FoxPro 2.x et de nombreux composants VFP y compris l'explorateur de classes. Vous trouverez Ken sur twitter @KenLevy, sur son blog à http://mashupx.com/blog/ et vous pouvez aussi le à contacter par email klevy@mashupx.com .
Texte original de l’éditorial de Ken Levy du magazine « FoxRockX » 11/2009
Visual FoxPro Strategy at Microsoft Historical overview of the 15 year evolution and strategy of Visual FoxPro at Microsoft Ken Levy
Microsoft will never release VFP source code into open source because there is no business reason to do so and a list of reasons not to. The evolution of VFP goes on into the next decade with new and enhanced products that work with VFP, community projects such as VFPX, and of course the VFP community itself.
Microsoft’s Early FoxPro Strategy The purchase of Fox Software for $173 million in 1992 was very strategic for Microsoft, and was the biggest corporate purchase Microsoft had ever made up until that time. Aston-Tate's dBase was still popular, Borland had Paradox, and there was PowerBuilder as the king of client/server tools. Microsoft needed three things from the Fox Software deal - the Fox developer team, the Fox technology, and the customer market share of FoxPro/FoxBase. Microsoft was just starting work on Access and it was more targeting power users, but there was still some overlap. Visual Basic was still in its early days.
There was an estimated 500,000 FoxPro developers at the peak around 1995, and millions of computers with FoxPro apps running (either DOS or Windows based). It took almost 4 years, not until after VFP 5.0, for Microsoft to focus more strategy around VB and less for VFP. Basically, the VFP customer base and sales went from increasing to decreasing, as the saying goes in business: if you aren't growing, you’re dying .
In the initial years after the Fox Software merger, Microsoft put a huge effort and lots of resources into creating VFP 3.0. There were about 50 people on the Fox team with a big marketing budget. In the following years, both Access and VB grew in market share and also competed in ways with the VFP market (and messaging), and by the time VFP 5.0 was released, many upper managers wanted Microsoft to just end VFP there. In fact, they did for a short time. I was there, in a meeting with 40 people, and the formal announcement was made to the Fox team that VFP was dead. It was very early 1996, and that meeting lead to the Gartner Group releasing their report that VFP was dead, which had a major impact on future VFP sales. But the Fox team members along with the community made so much noise, combined with people like Eric Rudder (architect of VFP 3.0, who became Bill Gates' technical assistant), who convinced developer tools management to keep VFP evolving while decreasing the resources. In fact, the primary reason VFP lasted another decade with 4 more versions released was more about Windows sales than VFP sales. There are many Windows machines running VFP apps. When Steve Ballmer jumps around like monkey boy and yells "developers, developers, developers", he's thinking about selling Windows more than sales of developer tools.
History of Visual FoxPro at Microsoft For each new version of VFP like 6.0 and 7.0, there were less resources, team members, and marketing budget. When VFP was included the Visual Studio box, it was just a bundle, no integration. When the VFP community saw VFP running inside Visual Studio and the possibility of running on the .NET framework, they also learned that if VFP went that path, it would seriously break FoxPro code backward compatibility and the VFP IDE would be gone eventually. Microsoft never had a goal to work on both VFP stand-alone and VFP for .NET. Having a new VFP for .NET would just take away resources from evolving VB.NET and C#, make it harder to sell Visual Studio and the .NET framework, and not really result in anything useful since it would not run old VFP code as-is.
Then after VFP 7.0, it was decided to keep VFP as a stand-alone product outside of the Visual Studio bundle, since it would not be part of the .NET platform. This made sense, and allowed VFP to ship on its own new version timeline. Each new version released, it was expected that was the last version. Nobody on the Fox team, not a single person, expected a version after VFP 8.0 released. Sales continued to decline annually, and so did the marketing budget. The only way to grow/increase sales of VFP would have been to compete with Visual Studio and take away budget and resources from Visual Studio. In reality, the biggest competitor to VFP was Visual Studio (not Delphi or any non-Microsoft product). Most marketing and management folks at Microsoft would have preferred Fox developers use Borland's Delphi.NET rather than Microsoft VFP, since they would be building on the .NET platform rather than the old legacy COM. COM became the enemy, to move people away from it, just like HTML/JavaScript is a current enemy to the Microsoft platform today as well.
For VFP 9.0, there were only about 8 people on the Fox team, and even so, VFP 9.0 was a better release than VFP 7.0 and VFP 8.0 according to the community. Soon after VFP 9.0 released, Microsoft decided to create an Xbase add-on to give away in order to maintain initial upgrade sales and an upbeat perception of VFP. The result was a plan for Sedna, a download of useful sample apps and utilities that focused on VFP interop with other Microsoft products (.NET, SQL Server, Office, Windows, etc.). The other reason for Sedna was to delay the announcement of the end of VFP in order to save sales of VFP 9.0 as well as to protect the Fox community and the job market for VFP developers.
No Open Source of Visual FoxPro The request for Microsoft to make the Visual FoxPro code base open source is a common (and logical) one. Here is some insight to why Microsoft will never release Visual FoxPro source code into open source. There is technology in VFP, like Rushmore optimized indexing, that is used in other Microsoft products SQL Server and Access. It’s not the same C/C++ codebase, but many techniques and algorithms originated from VFP. Microsoft considers this intellectual property, an asset Microsoft does not want to be released.
But the two more significant reasons have nothing to do with the reason above. They have to do with business. While Microsoft is not focused on sales of VFP, it is focused on sales of Visual Studio and adoption of the overall Microsoft platform (stack of products and services). Releasing VFP into open source would result in less VFP developers using the current (modern) Microsoft platform of products, but may also result in someone or some company creating a competitive product against Microsoft. Microsoft would not want to see the code used to enhance a competitive product nor would they want to see a new product created that interferes with Visual Studio sales or .NET platform adoption.
The Final Strategy of Visual FoxPro at Microsoft In the final 5 years of Visual FoxPro at Microsoft, while I was the last Product Manager (marketing/community) for VFP, the strategy was to market VFP to the existing community (mainly via upgrades), to do what was possible to keep the Fox community as strong, and to get VFP developers to adopt additional Microsoft products (.NET and SQL Server). In my role, I always viewed myself in 2 positions - one representing Microsoft as an employee, and the other as a FoxPro community member doing everything I could for Fox within the walls of Microsoft to evolve, save, promote, and help VFP and the community as much as possible. I spent nearly half of my time marketing VFP within Microsoft, at the Redmond headquarters and to the field offices, on messaging and keeping the VFP message positive/alive.
Management at Microsoft above the core Fox team were the decision makers for things related to VFP strategy. Nobody on the core Fox team had decision making ability around marketing budget or resources for the team, or what was done after each version shipped. There were a few key people on the team who, working together, probably extended the life of VFP an least one additional version and several years.
I think the customer base loyalty was yet another factor in how long VFP was extended beyond 6.0. But by the time VFP 9.0 was released, the amount of sales for all versions of VFP combined annually was less revenue than Microsoft sales of Visual Studio in only one day. The cost to evolve VFP relative to the amount of money it generated (ROI) was far less than putting more resources into Visual Studio and .NET languages. Plus, some Fox team members were ready to move on or leave Microsoft, and it was nearly impossible to find qualified people to replace them. It helps to put this all into perspective if you think of Visual Studio as a competitive product to VFP, even though it was owned by the same company. Remember when Apple worked on both the Mac and the Lisa computers at the same time, only one survived. In the case of VFP, it survived an entire decade after it was essentially killed (by it no longer being strategic).
Into the Next Decade On January 15th, 2010, VFP 9.0 standard support ends. While paid extended support will exist for 5 more years, I don't expect any additional hotfixes or anything to be done for VFP, unless in the rare case it impacted VFP runtime on Windows 7 preventing customers with VFP based apps to upgrade to the latest version of Windows. Some suggest that Microsoft killed VFP before it should have, and another way to look at the behind the scenes history is to see that VFP lived many years and versions beyond what it was planned. While Microsoft could have done more for VFP, it just really couldn't happen with Microsoft promoting and giving resources to Access, VB, and then Visual Studio at the same time. Only developers who have used FoxPro really appreciate it for what it was and what it still is.
Ken Levy is the president and founder of MashupX, LLC, specializing in consulting for community building around products and services, guerilla marketing techniques, multimedia creation, and software technology. Ken is the co-host of CodeCast, a podcast show associated with CODE Magazine. Prior to starting MashupX, Ken worked at Microsoft as the product manager for Visual FoxPro, a product planner on the Windows Live Platform team, and the community program manager for VSX (Visual Studio Extensibility). Ken is a long time recognized member of the FoxPro community, created GenScrnX for FoxPro 2.x, and many VFP components including the Class Browser. You can find Ken on Twitter @KenLevy, Ken’s blog at http://mashupx.com/blog, or contact Ken at klevy@mashupx.com.
Utiliser PDFCreator silencieusement (sans nommer le fichier PDF)Voici un bout de code pour utiliser PDFCreator sans avoir besoin de nommer le fichier PDF. Le code aussi detruit PDFCreator à chaque utilisation sinon cela peut causer un problème.
PREMIERES RENCONTRES AFRICAINES DE DEVELOPPEURS FRANCOPHONES FOXBonjour à toutes et à tous
Je vous annonce aujourd'hui, officiellement que les premières rencontres africaines de développeurs foxpro auront lieu sur le sol Africain aux environs du 13 mai
Elles se dérouleront à Nouakchott en Mauritanie sur 2 jours.
plus d'infos bientot sur le site www.bsa-technologies.com
L'info sera relayée sur le site www.atoutfox.org
et sur le site www.afdvfp.org
Le programme n'est pas encore complètement bouclé, mais plusieurs themes seront développés, de la première application en vfp9 jusqu'aux dbc, vfpIIs et les évolutions futures.
Ne manquez pas cet évènement. La participation à ces rencontres devrait être aux environ de 50 euros par développeur.
Sur le site de www.bsa-technologies.com , il y aura un formulaire d'inscription d'ici quelques jours.
En attendant, vous pouvez adresser vos intentions de participations sur infos@afdvfp.org
bien cordialement
Aumeric
Gérer les accès concurrentiels avec StrataFrameQuelles sont les possibilités offertes par StrataFrame pour nous permettre de choisir notre mode de gestion des accès concurrentiels aux données? Quels équivalents du WHERETYPE de VFP ce framework nous propose-t-il?
Getfile() : Récupérer le nom exact sur disque avec FSOBonjour,
Je vous propose une petite contribution pour répondre à une question en newsgroup:
Getfile() retourne le chemin et le fichier en majuscules,
Ci-après le moyen de récupérer le chemin et nom exact sur disque avec FSO.
Cordialement
Francis FAURE
Environnement de développement VFP9 sous Windows Vista, et Windows 7 - Problème Aéro.En son temps, lors d’une installation d’un poste de développement Microsoft Visual Foxpro [par défaut] sur Microsoft Windows Vista [installé par défaut] : on a constaté que les déplacements des fenêtres de l’IDE sont : lents, saccadés et imprécis.
Les fenêtres fonctionnent, mais cela est particulièrement visible et pénible sur la fenêtre de « Commandes ».
On s’est aperçu qu’en désactivant la fonction « Dockable » : il n’y a plus ce problème.
Après un peu de temps, l’explication a été fournie : Windows Vista a introduit le mode « Aéro » et ce mode ‘Aéro’ pose problème sur les fenêtres qui sont « Dockables » ET qui ont un titre « HalfHeight ».
Ce n’est pas un problème purement Visual Foxpro puisque les applications utilisant des fenêtres « HalfHeight » + « Dockable » ont eu le même problème.
Dans le Visual Foxpro l’impact est uniquement sur l’IDE. (Fenêtres de commandes, projets, propriétés, sessions…)
En solutions :
a) La première a été évoquée ci-avant : il suffit de ne pas « docker » les fenêtres.
(Cela n’est pas possible pour le gestionnaire de projet)
b) Désactiver le mode « Aéro ».
Finalement le mode Aéro (que l’on peut résumer fonctionnellement à la transparence des fenêtres) : est-il réellement indispensable sur une machine de développement ?
(Surtout que c’est un bouffe CPU et mémoire sous Vista)
c) Simplement désactiver le mode « Aéro » uniquement lorsque l’on est dans l’environnement de développement VFP.
En complément : on peut raisonnablement penser que la modification des fenêtres de l’IDE de VFP ne sera jamais modifiée par les développeurs Microsoft, puisque la « fox team » n’existe plus, et que pour la sortie du SP2 qui gérait les problèmes « Vista » ce problème a été répertorié mais classé non prioritaire puisque cela n’impact que l’IDE. Puis finalement abandonné par la team faute de temps.
Avec la commercialisation récente de Windows 7, bon nombre de questions similaires à ce sujet arrivent à nouveaux dans les forums.
En fait les causes et les solutions sont les mêmes…
La version Windows 7 béta de fin décembre 2008: le mode « Aéro » n’était pas activé par défaut : du coup le problème ne se posait plus.
La version commerciale de Win7 active le mode « Aéro » par défaut.
Pour en revenir aux solutions :
http://www.atoutfox.org/modules/articles/mht/0000000725.mht
Classe générique d'automation WordFacilite l'automation de Word
Donne la main à l'utilisateur pour modifier un document et reprend la main quand il a terminé
Convertit un document Word dans un autre format
Ferme automatiquement les documents ouverts et Word
Peut donner des idées pour aller plus loin dans l'automation de Word avec VFP
Nécessite VFP >= 8
Shape avec coins arrondis ou autresLes Shape de Visual Foxpro permettent de faire des arrondis simples dans les coins avec Curvature.
On peut aussi faire des formes libres grâce à Polypoints.
La classe ShpCorners vous permet de faire différents types de coins :
- l'arrondi classique (ou sortant)
- l'arrondi rentrant
- le coin bizauté ou diagonale
- le coin rentrant
Le type peut être défini séparément pour chaque coin grâce aux propriétés cHGcorner, cHDcorner, cBDcorner, cBGcorner (haut gauche, haut droit, ...). On définit également le nombre de points ou le % (par rapport à largeur et hauteur) servant de base au coin.
(Chaine caractère de la forme nnn.nn%C ou nnnnC : Pourcentage ou Nombre de points pour coin + type coin (si vide coin normal, si pas de nn 10% par défaut / types : A = Arrondi sortant, R = Arrondi rentrant, D = coin diagonale, I = coin inversé)
Dans le zip, un fichier exemple pour illustrer l'utilisation.
un requeteur accessible pour les utilisateurs finauxBonjour à tous le problème est de permettre à des utilisateurs finaux de faire des requête multi critères. En général le choix des éléments ne pose pas de problème, mais le choix des tables, et les liens entre les tables complique la tache des néophytes. cet exemple permet d'avoir un écran REQUETECONSTRUCTEUR, destiné au développeur. Celui ci gère son environnement de données, ces tables, ces liens et il crée sa requête. Il peut exporter l'environnement de données sous la forme d'un prg. L'utilisateur final dans le programe n'a qu'un écran de requête. A l'initialisation, il a le choix du prg qui va créer pour lui l'environnement de données exporté par le développeur. Ainsi, l'utilisateur n'a plus à se soucier des liens entre les tables et n'a plus qu' à choisir les éléments que le développeur lui aura indiqué le document MHT indique ce qu'il convient de faire avec ce projet d'exemples. Le code est brut , l'amélioration top, serait de créer un formulaire permettant de choisir les tables et les liens sous forme graphique. A vos requêtes Bonne journée à tous Aumeric
Methodes d'extension Stream: AppendFrom, AppendToQuelques methodes pour se faciliter la vie
(1) streamIn.AppendTo(streamOut) (2) streamOut.AppendFrom(streamIn) - la meme chose que (1) (3) stream.ReadBlock() : pour lire exactement nBytes (ou un multiple de nBytes) d'un stream
Comment trouver une adresse physique à partir de coordonnés GPS et Google MapsVoici la fonction inverse de la fonction trouvée ici : http://www.atoutfox.org/articles.asp?ACTION=FCONSULTER&ID=0000000715 La technique se nomme (en Anglais) Reverse Geocoging. N.B. La science de Reverse Geocoding n'est très précise. Mais utile. Le résultat de cette fonction donne un fichier XML avec beaucoup d'information. À vous d'extraire l'information à vos besoins.
Utiliser un Document Word comme corps d'un email expédié avec VFPwinsockAprès des échanges en emails sur "comment envoyer un mail avec vfpwinsock dont le corps du message (textes et images) proviennent de document word : je vous propose ci après une compilation des enchainements de petits traitements permettant d'ouvrir une document word dans word, l'enregistrer en htm et de le convertir en MHTML pour expédition.
Bien sûr pour chacun des points il existe déjà des exemples sur www.atoutfox.org
Cordialement
Francis FAURE
calcul de cle rib et de cle ibanBonjour à tous
du code pratiquement comptatible VB NET et VFP pour calculer la cle rib ou la cle iban
? calculclerib( codebanque,codeguichet,nocompte)
codebanque 5 caractères
code guichet 5 caractères
nocompte 11 caractères
ex ? calculclerib("00000","00000","00000000000")
? Calculcleiban( codepays, rib)
codepays 2 caractères
rib 23 caractères ( 5 code banque 5 code guichet 11 nocompte, 2 clerib)
ex Calculcleiban("FR","00000000000000000000000")
Bonne journée à tous
umeric
Comment trouver les coordonnées GPS avec une adresse physique et Google MapsVoici un example comment déterminer les coodonnées GPS d'une adresse physique avec Google Maps. Vous trouverez la fonction inverse (Reverse Geocoding) ici: http://www.atoutfox.org/articles.asp?ACTION=FCONSULTER&ID=0000000719
Gérer Google Maps dans une formeVoici une façon de gérer Google maps avec Foxpro. Cet exemple montre comment tracer un itinéraire à partir d'un point vers un autre. Par défaut le point de départ est l'hôtel Novatel à Paris (adresse postale 75015), et si vous mettez par exemple 75010, vous verrez apparaitre une carte de la région de Paris, avec le tracé entre 75015 et 75010. Aussi vous verrez un texte à la gauche décrivant l'itinéraire et aussi vu qu'en France il y a des Google Cams, vous pouvez aussi voir une image 360 degrés d'une rue en particulier.
Contributions AtoutFoxContributions sur www.atoutfox.org