ATOUTFOX
COMMUNAUTÉ FRANCOPHONE DES PROFESSIONNELS FOXPRO
Visual FoxPro : le développement durable

Exemple d'utilisation du CursorAdapter pour définir une vue modifiable   



L'auteur

Thierry
France France
Membre Simple
# 0000000016
enregistré le 13/10/2004

47 ans
PERRETIER Thierry
92800 PUTEAUX
Fiche personnelle


Note des membres
18,5/20
4 votes


Contributions > 20 - Trucs et Astuces

Exemple d'utilisation du CursorAdapter pour définir une vue modifiable
# 0000000045
ajouté le 05/11/2004 12:16:07 et modifié le 24/07/2006
consulté 7680 fois
Niveau initié

Version(s) Foxpro :
VFP 9.0
VFP 8.0

Code source :
LOCAL oVue as CursorAdapter
oVue = NEWOBJECT("CursorAdapter")
WITH oVue
    SET TEXTMERGE TO memvar .selectCmd noshow
    \\    SELECT productID, ProductName, unitprice
    \\    FROM Home()+"samples\NorthWind\products"
    \\    WHERE CategoryId=?this.CategoryId
    SET TEXTMERGE TO
    .DataSourceType = "NATIVE"
    .Alias = "Vue"
    .KeyFieldList = "productID"
    .UpdatableFieldList = "unitprice"
    .Tables = "products"
    .UpdateNameList = "productID products.productID, unitPrice products.UnitPrice"
    .BufferModeOverride= 5
    .AddProperty("CategoryId",0)
    IF NOT .CursorFill()
        ERROR Message()+Chr(13)+Chrtran(.SelectCmdChr(9), Chr(13))
    ENDIF
ENDWITH

oVue.CategoryId= 1
Requery()
BROWSE TITLE "categorie 1"
TableUpdate(.t.)

oVue.CategoryId= 2
Requery()
BROWSE TITLE "categorie 2"
TableUpdate(.t.)

Commentaires
le 05/11/2004, Olivier Hamou a écrit :
C'est tres bien comme exemple merci
thierry grace à ca je peux sous classer cette classe cursor adapter

Afin quelle soit la plus portable possible
Olivier


le 28/01/2005, Miky a écrit :
Nickel !
le 24/07/2006, Francis Faure a écrit :
Génial,

Question à l'attention de Thierry :
- Si je rajoute à la fin de ton programme ci avant
APPEND BLANK
APPEND BLANK
(volontairement 2 fois 2 ajouts dans le curseur)

en
.BufferModeOverride= 5
il n'y a pas d'erreur, mais pas d'enregistrement
en
.BufferModeOverride= 3
il y a une erreur dés le deuxieme enregistrement (normal)

je cherche a permettre le rajout d'un enregistrement vide sur ce type de structure dans un cursoradapter

j'ai "bricolé" avec afterInsert et beforeinsert sans succès....

une idée pour permettre l'ajout des enregistrements (même vide) ?

le 24/07/2006, Thierry a écrit :
Pas d'idée. Comme pour les vues traditionnelles, ce n'est pas permis de créer des enregistrements vides (erreur n° 1547)
En .BufferModeOverride= 5, pour voir le message d'erreur, Il faut ajouter :
IF NOT TableUpdate(.t.)
ERROR Message()
ENDIF

Il faut dire que des enregistrements vides, ce n'est pas très compatible SQL.

le 24/07/2006, Thierry a écrit :
Essayes ceci :

PROCEDURE BeforeCursorUpdate (nRows, lForce)
IF Recno() < 0
SetFldState("unitPrice",4)
ENDIF
ENDPROC

Le but est de forcer pour les nouveaux enregistrements, la déclaration de mise à jour d'un champ au moins. (Une instruction INSERT INTO products (UnitPrice) VALUES (0) pourra être générée)


Publicité

Les pubs en cours :


www.atoutfox.org - Site de la Communauté Francophone des Professionnels FoxPro - v3.4.0 - © 2004-2019.
Cette page est générée par un composant COM+ développé en Visual FoxPro 9.0-SP2-HF3