Liste des bogues corrigés dans Microsoft Visual FoxPro 9.0 Service Pack 1

Cet article fournit des détails sur la version et les bogues corrigés dans Visual FoxPro 9.0 Service Pack 1.

Version d’origine du produit : Visual FoxPro
Numéro de la base de connaissances d’origine : 907737

Résumé

Cet article contient des informations sur les bogues corrigés dans Microsoft Visual FoxPro 9.0 Service Pack 1 (SP1). Pour plus d’informations, consultez Comment obtenir le Service Pack 1 pour Visual FoxPro 9.0.

Visual FoxPro (VFP) 9.0 SP1 contient des correctifs pour les problèmes suivants.

Contrôles et classes

  • Impossible d’utiliser la souris pour obtenir le focus sur d’autres contrôles à partir du contrôle DHTML.
  • Les formulaires générés par l’Assistant échouent lorsque vous essayez d’ajouter un enregistrement si la table sous-jacente contient des champs AutoInc.
  • Contrôle Navigateur web : l’implémentation de DWebBrowserEvents2 entraîne une incompatibilité de nombre de paramètres.
  • L’enregistrement du formulaire dans un fichier en cours d’utilisation entraîne une exception irrécupérable.
  • Une exception irrécupérable se produit lors de la création d’un projet qui contient VCX avec des propriétés séparées par des retours chariot uniquement.
  • Collections : la suppression d’éléments de la collection avec >=500 éléments bloque le VFP sous Vérificateur d’application.
  • CursorAdapter : TABLEUPDATE(0) ignore le paramètre SendUpdate pour le curseur mis en mémoire tampon de table.
  • TextBox : C0000005 exception avec textbox de saisie semi-automatique où TextBox a ControlSource défini sur un champ qui autorise les valeurs NULL.
  • ComboBox : message d’erreur « Incompatibilité de type de données » lors de la définition de la valeur dans la liste déroulante lorsque ControlSource est une propriété de membre Null.
  • Une erreur d’exception irrécupérable se produit avec la commande FORM MODI lorsque MSXML3.dll fichier n’est pas inscrit.
  • La fonction SEARCH dans les formulaires générés par l’Assistant fonctionne avec les nouveaux types de données VFP9. La recherche ne trouve pas de données varchar.
  • La classe de contrôle ne redimensionne pas les contrôles ancrés en elle-même.
  • QUIT déclenché dans DESTROY of form ne ferme pas VFP ou application.
  • READ du formulaire converti est publié dans VFP 9.0, mais pas dans les versions antérieures de VFP.
  • Grid perd des données lorsque l’alias sélectionné est remplacé d’une grille de remplissage par l’alias de la même table que celle utilisée à nouveau, et qu’une commande CALCULATE est utilisée sur le deuxième alias.
  • C0000005 exception en appuyant sur la touche ENTRÉE lorsque ListBox ListIndex = 0.
  • Comportement inattendu de l’ancre pour les valeurs 256/512 et largeur/hauteur impaire.
  • Formulaire : une erreur de cohérence interne puis une exception irrécupérable se produisent lorsque vous modifiez le formulaire après avoir ajouté une relation à DataEnvironment du formulaire à l’aide de la référence aselobj().
  • L’implémentation a échoué avec Word. Objet Application avec Office 2003.
  • La grille devient vide lorsque la méthode personnalisée de l’ensemble de formulaires parent est définie comme ControlSource d’une colonne de grille.
  • Contrôles ActiveX : le contrôle ActiveX LeadTools fait apparaître deux barres vides dans le menu Fenêtre.
  • CheckBox : La case à cocher graphique et le bouton d’option n’apparaissent pas avec une couleur arrière plus foncée lorsqu’ils sont enfoncés avec les thèmes activés.
  • Message d’erreur « Cohérence interne » fonctionnant avec une bibliothèque de classes stockée dans un dossier masqué.
  • ComboBox : DownClick( ) ne se déclenche pas, sauf si l’utilisateur passe d’abord la souris sur le contenu de la liste déroulante.
  • L’image de page avec TabStretch=0 (multiple) et de nombreux onglets continue de croître lorsque le formulaire est ouvert pour modification.
  • Ajout de la prise en charge de adVarNumeric pour la source de données ADO.
  • Les problèmes d’actualisation sur PageFrame dans FormSet provoquent l’ghosting de TextBox.
  • Problèmes d’actualisation avec différents contrôles d’un formulaire quand .exe est exécuté sur le réseau (UNC ou lecteur mappé).
  • La valeur du style de liste déroulante ComboBox n’apparaît pas dans accessible observateur d'événements.
  • Le formulaire orphelin DataEnvironment provoque le blocage du VFP à la sortie.
  • Message d’erreur « Cohérence interne » lorsque Ctrl+Tab désactivé est désactivé sur la page de l’image de page.
  • Un objet d’ensemble de formulaires présente une altération de la mémoire des propriétés utilisateur la deuxième fois qu’il est exécuté après un CLEAR ALL.
  • Message d’erreur « Cohérence interne » lors de la modification ou de l’exécution d’un formulaire avec un objet ayant un paramètre Zorder non valide.
  • Barre d’outils non active avec formulaire modal à l’intérieur du formulaire de niveau supérieur.
  • Grille : message d’erreur « Incompatibilité de type de données » 9 modification d’un champ DOUBLE via la grille ou la navigation.
  • Les formulaires de niveau supérieur avec une forme modale contenue doivent être redimensionnables et déplaçables.
  • Message d’erreur « Cohérence interne » définissant la propriété valeur dans l’init du contrôle dans la colonne de grille.
  • Message d’erreur « Cohérence interne » en cliquant sur la relation dans la fenêtre d’environnement de données avec une relation persistante sur la clé d’index composé.
  • CursorAdapter : les noms de table de base sont convertis en minuscules dans sql généré automatiquement.
  • Message d’erreur « Cohérence interne » dans textbox de saisie semi-automatique liée si le formulaire utilise une session de données privée.
  • EditBox wordwrap fait disparaître les lignes vides.

Moteur

  • Le moteur de données n’optimise plus certaines requêtes impliquant la fonction DELETED() et les clauses OR.
  • Les index sur STR() ne sont pas optimisés pour Rushmore avec SET ANSI OFF.
  • Top N dans la sous-requête est ignoré quand UNION est utilisé.
  • Les valeurs de mémo ne sont pas traduites lorsqu’elles sont copiées entre des tables avec des pages de codes différentes (SQL SELECT, APPEND FROM).
  • Exception irrécupérable avec REPLACE avec variable non définie si une règle de validation de ligne est présente.
  • Le blocage se produit lorsque UNLOCK est exécuté.
  • Message d’erreur « Cohérence interne » lors de l’accès à la table gratuite dans la transaction si la table est rendue transactionnelle dans une session de données différente.
  • Requery() sur la vue distante préparée échoue.
  • LOCAL ne parvient pas à trouver une correspondance lorsque l’index sur Devise est utilisé pour l’optimisation et que la partie droite de la comparaison est une certaine valeur numérique.
  • La commande USE peut affecter un alias en double pour la zone de travail.
  • Message d’erreur inattendu « La table a une longueur de fichier/incohérence du nombre d’enregistrements » sur END TRANSACTION.
  • Message d’erreur inattendu « L’expression SQL est trop complexe » sur CREATE SQL VIEW sur des tables volumineuses.
  • La réouverture ou le VIDage de la table après ZAP avec SET TABLEVALIDATE >= 8 provoque « Table ... est devenu endommagé » message d’erreur.
  • SQL SELECT retourne un résultat incorrect lorsque la sous-requête corrélée retournant COUNT(*) est comparée à 0.
  • Altération des données lorsque CursorAdapter lié à Grid est mis à jour dans une TRANSACTION.
  • Message d’erreur inattendu « SQL : Erreur de corrélation des champs » avec deux sous-requêtes EXISTS.
  • La corrélation n’est pas vérifiée pour respecter la limite « la corrélation est prise en charge uniquement pour la requête parente immédiate ».
  • Message d’erreur inattendu « La sous-requête a retourné plusieurs enregistrements » lorsque l’agrégat est utilisé dans HAVING, mais pas dans la liste SELECT.
  • La requête retourne un résultat incorrect lorsque l’évaluation ORDER BY+TOP N est fusionnée avec l’évaluation GROUP BY et que TOP est optimisé.
  • SELECT COUNT(ICASE(.T.,1)) retourne un résultat incorrect.
  • SELECT INTO ARRAY modifie la zone de travail actuelle si elle utilise une sous-requête dans FROM.
  • Le curseur mis en mémoire tampon de l’index sur la table est endommagé après remplacer par l’étendue.
  • Une requête avec OUTER JOIN produit un résultat incorrect si NOT EMPTY(...) est utilisé dans WHERE.
  • Message d’erreur inattendu « L’expression SQL est trop complexe » avec une sous-requête corrélée.
  • « Microsoft Visual C++ Dépassement de mémoire tampon de la bibliothèque runtime détecté ! » et C0000005 exception exécutant la boucle SCAN sur une table volumineuse.
  • CAST() en date d’un champ datetime vide retourne le type datetime.
  • ALTER TABLE ... ALTER COLUMN pour modifier le champ de caractère en entier change également de valeur.
  • « Erreur lors de la génération de la clé pour l’index... » message d’erreur lors de l’indexation à l’aide de str() sur une valeur NULL.
  • Message d’erreur « Cohérence interne » sur REQUERY() après tableupdate() pour l’affichage distant avec batchupdatecount = -1 et la mise en mémoire tampon de table.
  • Message d’erreur « Cohérence interne » sur SQL SELECT lorsque la taille d’enregistrement * le nombre d’enregistrements est élevé.
  • Activez l’optimisation pour les tables avec une page de codes non actuelle lorsque ENGINEBEHAVIOR < 90.
  • Message d’erreur « Cohérence interne » lors de l’indexation avec un filtre de collection imbriquée.
  • La condition de filtre qui modifie temporairement la zone de travail actuelle peut interrompre la relation ou interrompre la génération XML imbriquée avec XMLAdapter.
  • Le processeur de requêtes ne parvient pas à trouver la colonne dans la liste SELECT si elle est placée entre parenthèses et signale le message d’erreur « SQL : La clause ORDER BY n’est pas valide ».
  • Message d’erreur inattendu « LA clause SQL : GROUP BY est manquante ou non valide » lors de la tentative de création d’une vue ou d’une vue USE avec NODATA.
  • La requête produit un résultat incorrect lorsque ENGINEBEHAVIOR < 90, la sous-requête retourne la fonction Aggregate et qu’aucun enregistrement ne correspond à la condition WHERE de la sous-requête.
  • COPIER DANS ... AS nCodepage ne parvient pas à encoder le mémo avec la page de code correcte et utilise CPCURRENT() à la place.
  • Les valeurs de mémo ne sont pas traduites lorsqu’elles sont copiées à partir de tables avec une page de codes active vers une table avec une autre page de codes (COPY TO, SQL SELECT, APPEND FROM).
  • SÉLECTIONNEZ... WITH BUFFERING extrait de façon inattendue les données mises en mémoire tampon d’un curseur, qui n’a pas été explicitement référencé dans la clause FROM.

IDE

  • Gestionnaire de projet : application de création d’exception irrécupérable qui utilise l’icône toujours en mémoire.
  • Fenêtre Propriétés : exception irrécupérable fermant la fenêtre Zoom avec la touche Entrée sous Vérificateur d’application avec SET KEYCOMP TO DOS.
  • « Erreur de cohérence interne du gestionnaire de menus » se bloque lors de l’émission de CLEAR POPUPS.
  • Invite d’enregistrement du fichier tmp des références de requête.
  • Les info-bulles s’affichent dans le moniteur droit lorsque vous exécutez VFP dans le moniteur gauche dans l’installation multi-moniteur où le moniteur principal se trouve à droite.
  • C0000005 erreur dans l’Designer d’affichage avec une expression longue.
  • Gestionnaire de projet : exception irrécupérable modification de la police sur le Gestionnaire de projet après l’opération Dock/Undock.
  • Gestionnaire de projet : les nouveaux gestionnaires de projets ne se souviennent pas de leur position lorsque l’option Remplacer les paramètres individuels est sélectionnée pour le type Projets sous l’onglet IDE de la boîte de dialogue Options .
  • Le générateur d’instances réservées utilise une syntaxe incorrecte pour la commande UNLOCK.
  • La classe Picbtns de Wizbtns.vcx affiche des avertissements lorsqu’elle est utilisée avec CursorAdapter.
  • Gestionnaire de projet : Le VFP cesse de répondre (se bloque) lors de la reconstruction de l’application après le message d’erreur indiquant que classlib est utilisé.
  • La violation d’accès C0000005 lors de l’activation d’IntelliSense dans l’éditeur de programme.
  • IntelliSense : C0000005 violation d’accès quittant la classe Designer après l’échec de la tentative d’accès à LPARAMETER IntelliSense pour la méthode membre.
  • Exception irrécupérable lors du débogage d’un fichier de code volumineux.
  • Générateurs : MemberData Editor : un bogue de code dans GetHierarchy() de MemberDataEditor.scx provoque une erreur de hiérarchie dans l’éditeur MemberData.
  • Fenêtre Propriétés : C0000005 exception fermant class Designer avec CursorAdapter, XMLAdapter, XMLTable et XMLField après avoir appuyé sur Échap sur une propriété dont la valeur dépasse 255 caractères.
  • Éditeur : 100 % de l’utilisation du processeur se bloque lors de l’utilisation du Générateur d’expressions à partir de la fenêtre de l’éditeur de code qui ne contient que deux lignes vides.
  • IntelliSense : exception irrécupérable dans list members after creating early binding mapi.session object with CreateObjectex().
  • Message d’erreur « Parcourir la table est fermée » suivi d’une exception non prise en charge (c05) lors de la pagaille avec le fichier de ressources pendant la navigation de la table.
  • Sur la plateforme chinois simplifié, la réduction de la largeur d’une zone de texte contenant une chaîne dbcs entraîne l’arrêt de la réponse de l’IDE.
  • Sur la plateforme chinois simplifié, exception irrécupérable lors de l’exécution du programme.
  • Le redimensionnement du Gestionnaire de projet ne met pas à jour l’arborescence des fichiers.
  • L’exemple de bouton d’option dans exemples de solutions génère l’erreur DATATYPE MISMATCH.
  • Galerie de composants : « Erreur lors de la génération de la clé pour l’index » lors de la sélection de Nettoyer dans le menu contextuel.
  • Générateurs : problèmes liés aux boîtes de dialogue Propriétés dans ReportBuilder.app.
  • Message d’erreur « L’imprimante n’est pas prête » lors de l’impression sur EMF-Citrix pilote d’imprimante dans la session cliente Citrix sur metaframe 4.0 Presentation Server. D’autres applications peuvent imprimer correctement sur cette imprimante.
  • Message d’erreur « 'local thisview' n’est pas autorisé dans le script d’affichage ou se trouve au mauvais endroit » dans Afficher Designer.
  • Rendre ReportBuilder.app localisable.

Langue

  • La fonction SQLEXEC() autorise la réentrance pour le même handle de connexion.
  • DEBUGOUT génère des données binaires sous forme de chaînes.
  • CursorToXML() et XMLAdapter ne génère pas de secondes pour les valeurs xsd :dateTime si SET SECONDS a la valeur OFF.
  • C0000005 suivi du message d’erreur « Appel pushjmp/popjmp incompatible » lors de l’exécution du programme à partir de « do <program.prg> » dans le menu de l’éditeur de programme, puis suivi d’un appel à EXESCRIPT().
  • WEXIST() recherche les fenêtres ToolTipText.
  • Fuite de mémoire lorsque vous définissez la propriété ActiveConnection de l’objet Ado RecordSet sur NULL.
  • Message d’erreur « Cohérence interne » suivi d’un blocage des méthodes d’appel VFP de l’objet qui sont retournées avec GetObject(« IIS://LocalHost/W3SVC/1 »).
  • XMLToCursor() et XMLAdapter ne parviennent pas à charger les valeurs de type xsd :date si la partie heure est présente.
  • SQLCOLUMNS() échoue avec des noms complexes si au moins une partie du nom contient un espace ou un autre caractère « non conforme ».
  • ADIR retourne une taille de fichier non valide pour >les fichiers 2gig (PC virtuels).
  • GETOBJECT() a une limite de paramètres basée sur les spécifications de fichier (261 caractères).
  • L’optimisation des chaînes pour la récursivité produit des résultats erronés.
  • Le nombre littéral provoque des erreurs BINTOC().
  • La conversion de Bintoc en character à l’aide de CTOBIN() lève une valeur indésirable.

Fournisseur OLE DB VFP

  • Fournisseur OLE DB : SYS(3050) doit être défini par défaut sur 128 Mo dans le fournisseur.
  • Fournisseur OLE DB : Une fuite de mémoire apparente entraîne une erreur de connectivité « Impossible de convertir la valeur de données... » avec openrowset répété ou openquery sur le serveur lié SQL.
  • Impossible de créer un jeu de données avec le fournisseur OLE DB VFP.
  • GetSchema(string, string[]) n’a pas pu filtrer en fonction de INDEX_NAME.
  • Fournisseur OLE DB : activez SYS(3055) (« Complexité des clauses FOR et WHERE ») dans le fournisseur.
  • Le fournisseur OLE DB VFP gère incorrectement les paramètres binaires.
  • Activez les commandes DROP VIEW et DROP PROCEDURE.
  • DBSCHEMA_PROCEDURES’ensemble de lignes retourne des procédures obsolètes.
  • DBSCHEMA_PROCEDURES’ensemble de lignes retourne une définition de procédure incomplète.
  • APPEND PROCEDURES ignore les erreurs de compilation dans les procédures.
  • L’accès à un conteneur de base de données (DBC) qui n’a pas de tables peut entraîner une erreur de dépassement de mémoire tampon.

Reporting

  • Report Builder boîtes de dialogue doivent respecter les paramètres régionaux.
  • L’aperçu du rapport a un titre incorrect dans certains cas.
  • Lorsque l’aperçu du rapport assisté par objet est affiché, la barre d’outils aperçu avant impression initiale diffère de celle ouverte en sélectionnant Barre d’outils dans le menu de la surface Aperçu du rapport.
  • L’objet sur le rapport défini sur « Mettre à l’échelle le contenu, conserver la forme » apparaît différemment entre l’aperçu du rapport et le code HTML créé par un HTMLListener.
  • Plusieurs bandes de détails ne fonctionnent pas correctement lorsque « Démarrer sur une nouvelle page » est activé.
  • La boîte de dialogue Atteindre la page s’ouvre en dehors de la plage visible dans lorsque la propriété Preview Container TopForm a la valeur .T. et que windowstate a la valeur NORMAL.
  • La barre d’outils Aperçu du rapport de nouveau style n’est pas accessible lorsque l’aperçu du rapport est affiché dans le formulaire SDI sans clause NOWAIT sur la commande FORMULAIRE DE RAPPORT.
  • Fenêtre de code remplie de caractères de mémoire lorsque vous essayez de fermer Concepteur de rapports et que vous cliquez sur NON dans l’invite Voulez-vous enregistrer les modifications dans <proc> ?.
  • La limite de regroupement de données pour un rapport est de 74 dans la rubrique de documentation « Comment : ajouter des groupes de données aux rapports », mais ReportBuilder.app vous limite à 20.
  • La justification du format numérique est Justification gauche. Cela diffère des versions précédentes de VFP et des Concepteur de rapports par défaut.
  • Aucune erreur n’est générée lors de la fermeture de la boîte de dialogue Propriétés du rapport après avoir défini la valeur initiale d’une variable de rapport sur une valeur non valide.
  • La boîte de dialogue Expression de rapport pour le champ avec erreur n’est pas affichée après l’erreur d’aperçu avec tandis que REPORTBEHAVIOR = 90.
  • Les valeurs calculées dans l’en-tête de détail de rapport sont réinitialisées de manière inattendue lorsque l’option d’en-tête de détail réimprimer est activée.
  • Les propriétés ReportListener, AdjustObjectSize et MaxHeightAvailable ne fonctionnent pas avec les objets flottants.
  • L’aperçu d’un rapport qui contient une image située sur le disque provoque une fuite de handle GDI chaque fois que l’aperçu est actualisé.
  • REPORT PREVIEW GDI gère la limitation avec de nombreuses pages.
  • Option de rapport d’en-tête et de pied de page associée : les numéros séquentiels ne s’impriment pas sur les pages.
  • ReportListener.OutputPage vers HDC utilise 96 PPP au lieu de l’imprimante PPP.
  • Message d’erreur « Property WindowState does not exist in line 325 of ResourceManager ::SaveWindowState() ».
  • La boîte de dialogue Sélection multiple permet de définir des indicateurs de protection, même lorsque le rapport est PROTÉGÉ.
  • Vous êtes invité à entrer FRX si vous passez de « charger de FRX » à « lier à la classe ».
  • Après l’annulation à partir de la première invite GETFILE(FRX), vous êtes à nouveau invité à utiliser GETFILE.
  • L’aperçu du rapport remplace m.oForm s’il est précédemment déclaré en dehors de la préversion.
  • Les programmes doivent respecter la résolution de l’écran « réel » au moment de l’exécution au lieu du 96 PPP au moment du design.
  • Diverses erreurs se produisent lors du chargement d’un DataEnvironment à partir d’une classe qui a des attributs spécifiques.
  • Le chemin d’accès complet de la bibliothèque de classes DE liée est écrit dans le code de liaison. Ce n’est pas toujours approprié.
  • Les propriétés du formulaire d’aperçu ne sont pas enregistrées correctement dans le fichier de ressources dans certaines circonstances.
  • Vous recevez le message d’erreur « Unknown member .cmdPrint » si vous avez sélectionné AllowPrintFromPreview = .F.
  • Toutes les variables de FRXOUTPUT.prg n’avaient pas « m ».
  • Améliorez l’application pour qu’elle soit plus intelligente en ce qui concerne le type de sortie inconnu si une référence d’écouteur valide est transmise.
  • Vérifiez que « m. » dans toutes les méthodes et #DEFINEs qui incluent des expressions.
  • Les écouteurs basés sur des fichiers dérivés de XmlListener qui utilisent sa propriété ApplyUserXSLT n’ont pas pu spécifier le répertoire uniquement pour TargetFileName.
  • Le menu Aperçu du rapport ne peut plus être affiché par la touche Maj-F10 après l’affichage de la boîte de dialogue Atteindre la page .
  • La taille de la bande de rapport ne change pas correctement avec les objets flottants qui s’étendent.
  • C0000005 exception pendant l’aperçu avant impression du rapport avec un champ EXPR endommagé dans le fichier frx.
  • Améliorez reportoutput.app pour gérer un type de sortie inconnu si une référence d’écouteur valide est passée.

Runtime et COM

  • Barre d’outils ou barre d’état non visible dans l’exécution de l’application sur Windows 98 Deuxième Édition.
  • Message d’erreur « Le point d’entrée de procédure GetLongPathNameA n’a pas pu se trouver dans la bibliothèque de liens dynamiques KERNEL32.dll » dans l’exécution dans Windows NT 4.0.
  • Fuite de mémoire avec IMPLEMENTS dans les serveurs COM.
  • Passage de paramètre COM non valide avec des types long et int non signés.
  • Interblocage dans REMClearConnect et csCritSectionEnter lorsque COM+ recycle le processus worker dllhost.
  • COMARRAY. Sur le serveur COM De Visual Basic 6.0, le type date ne fonctionne pas.
  • OCXAPI ne peut pas être initialisé pour les objets de liaison anticipée.
  • Message d’erreur « Les dimensions du tableau ne sont pas valides » 230 lorsque vous passez un grand tableau >65000.