begin process at 2010 02 09 15:34:43
  Trouver un code source :
 
dans
 
Accueil > Forum > 

Archive Foxpro

 > 

Archives

 > 

Débutants

 > 

Vue !!!


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

Vue !!!

mardi 13 septembre 2005 à 08:56:25 | Vue !!!

spoutnic_37

aloha;

Je fais un programme qui est basé sur un base de donnée foxpro(.dbc, .dbf)et qui sera mise dans une clef usb.
Le probleme est que je voudrais pouvoir  mettre a jour la meme base de donnée qui serait elle sur le serveur de l'entreprise (donc on arrive on branche la clef sur l'ordi et on fait la mise ajour).
Je pense que je dois utiliser des vues distantes, mais je ne trouve rien dans la msdn pour me montrer comment faire.
De plus g aussi du mal avec une vue local, ou je n'arrive pas a supprimer des enregistrements!

Est ce que quelqu'un pourrait me dire comment faire , ou m'orienter vers des exemples sur le net?

mercredi 14 septembre 2005 à 13:25:23 | Re : Vue !!!

fonch001

Bonjour,

concernant ta remarque :
De plus g aussi du mal avec une vue local, ou je n'arrive pas a supprimer des enregistrements!

Lorsque tu fais ton SQL (ex: SELECT * FROM MaTable INTO CURSOR MonCurs), pense à ajouter "READWRITE" à la fin, sinon le curseur est en lecture seule. (ex : SELECT * FROM MaTable INTO CURSOR MonCurs READWRITE).

Et au cas où j'aurai mal compris, il faut aussi faire SET DELETE ON pour que les éléments "supprimés" n'apparaissent plus (un PACK supprime définitivement ces éléments "marqués pour suppression").




Sinon, je vois pas trop quel est ton soucis pour accéder aux données:
   *   tu peut utiliser les Data-environnements 
   *   tu peut faire des "USE"
   *   tu peut faire des requetes...

Il faut simplement que tu commences ton programme par une connexion à ta base...

Bon courage.


Quand le sage montre la lune, l'idiot regarde le doigt...
mercredi 14 septembre 2005 à 14:49:37 | Re : Vue !!!

spoutnic_37

justement parlons du pack!
j'ai fais une vue local, grace au generateur de vue, et je voudrais supprimer un enregistrement de cette vue , et donc des champs des deux tables qui la compose.

Mais apres avoir fait :
    use clients_contrat  && ma vue composé de champs des tables clients  et contrat
    delete for societe="A.C.M.S  "
    pack


!! operation non valide sur un objet curseur (1115)

je precise que j'utilise vfp 6
ps:le readwrite n'estpas utilisable , car pas reconnu par visual foxpro

mercredi 14 septembre 2005 à 15:18:35 | Re : Vue !!!

fonch001

Effectivement, le readwrite, c'est à partir de la version 7, donc ton curseur est forcément "read only".

Cela dit, ce que tu veux faire ne peut pas fonctionner: tu veux supprimer un élément dans une copie de tes tables (un curseur) et que cela supprime les éléments de tes tables si j'ai bien compris.

Pour cela tu vas devoir taper du code:
   sur ordre de suppression d'une lignes -> recherche des lignes correspondantes dans les tables (ici supprimer la societe "A.C.M.S" de la table societe.dbf et suprimer les contrats de la table contrats.dbf ayant "A.C.M.S." comme societe si j'ai bien compris ton idée) puis -> recalcul de la vue (forcément avec ces éléments en moins).

S'il y a une méthode plus simple, je suis preneur, mais je n'en connait pas.



En revanche si tu veut supprimer les éléments de ta requete SQL uniquement (sans toucher au valeurs dans les tables) un solution peut être de:
* faire une requete est la stocker dans curseur1 
* créer curseur2 de même format que curseur1
   exemple :
   SELECT curseur1
   DIMENSION t_fields(1)
   =AFIELDS(t_fields)
   CREATE CURSOR curseur2 FROM ARRAY t_fields
*copier chaque élément de curseur1 dans curseur2
   SELECT curseur1
   GO TOP
   DO WHILE !EOF()
         SCATTER MEMVAR
         SELECT curseur2
         APPEND BLANK
         GATHER MEMVAR
         SELECT curseur1
         SKIP
   ENDDO
* enfin, supprime curseur1 et utilise curseur2 pour ton affichage, ce curseur n'étant alors plus "read only".

Bon courage.


Quand le sage montre la lune, l'idiot regarde le doigt...
mercredi 14 septembre 2005 à 15:31:34 | Re : Vue !!!

spoutnic_37

tu avais bien compris.
Mais cette idée ne m'est pas venu toute seul, j'ai regardé la msdn qui dit :

chapitre 5:
"Pour extraire un ensemble d'enregistrements d'une table, modifier ces enregistrements et transmettre les modifications aux tables source, vous pouvez utiliser une vue Vous pouvez créer des vues à partir de tables locales, d'autres vues, de tables figurant sur un serveur"
mercredi 14 septembre 2005 à 16:17:56 | Re : Vue !!!

fonch001

Là, je ne connais pas, mais si quelqu'un connait, je suis preneur également.

jeudi 15 septembre 2005 à 14:03:11 | Re : Vue !!!

MichelAtoutFox

Membre Club
bon, quelques précisions s'imposent !

si tes données du serveur doivent être mises à jour avec les données de la clé (ou l'inverse, peu importe) depuis le serveur, alors c'est une vue locale! ton prog va tourner sur le serveur, et pour celui-ci, la clé est un disque local...

pour les vues, il faut bien comprendre que c'est une extraction de tes données dans un curseur, sur lequel un pack n'a aucun sens (pack supprime sur le disque les enregistrements marqués à delete SUR UNE TABLE)
si tu veux supprimer, tu marque à delete tes enregistrements dans ta vue, et ça va envoyer ces marques de delete sur la table. quand on travaille avec des vues, on ne s'occupe plus du pack sur les tables que pour de la maintenance (pour réduire la taille des tables)

pour mettre à jour tes tables depuis ta vue, regarde donc dans l'avant-dernier onglet du generateur de vue (critères de mise à jour): est-ce que la case envoyer les mises à jour est cochée? si elle est grisée, il te faut d'abord choisir la clé (c'est à dire le champ sur lequel VFP va se fier pour déterminer les enregistrements à mettre à jour - en SQL, on ne tientpas compte du recno), et les champs à mettre à jour. alors, tu décide que les mises à jour seront envoyées en cochant la case en bas à gauche.

voili, voilà pour l'essentiel
pour la suite, le mieux est de venir aux rencontres Atoutfox en novembre...
[ Lien ]

PS: oui, une vue peut extraire des enregitrements venant d'autres vues, qui elles-même peuvent etc. mais alors, attention pour les mises à jour, gare aux conflits, aux incohérences, et autres emm..
jeudi 15 septembre 2005 à 16:01:10 | Re : Vue !!!

spoutnic_37

ok michel, ca fait plaisir de te revoir !

mais j'ai un petit probleme. j'utilise ma vue pour alimenter un combo box, je veux supprimer un element de la liste, les table parents sont bien affectées , et les enregistrement correspondant disparaissent.
La vue également a ete affectée et l'enregistrement a disparu!
Le formulaire se ferme ( donc les table associées aussi!) si je reouvre le fomrulaire, que je regarde dans le combo box je retrouve l'element .

Comment faire pour que le combobox soit mis a jour ?


jeudi 15 septembre 2005 à 16:01:48 | Re : Vue !!!

spoutnic_37

ok michel, ca fait plaisir de te revoir !

mais j'ai un petit probleme. j'utilise ma vue pour alimenter un combo box, je veux supprimer un element de la liste, les tables parents sont bien affectées , et les enregistrement correspondant disparaissent.
La vue également a ete affectée et l'enregistrement a disparu!
Le formulaire se ferme ( donc les table associées aussi!) si je reouvre le fomrulaire, que je regarde dans le combo box je retrouve l'element .

Comment faire pour que le combobox soit mis a jour ?


jeudi 15 septembre 2005 à 17:26:01 | Re : Vue !!!

MichelAtoutFox

Membre Club
comme d'habitude, une question pour répondre à ta question:
les tables parents sont affectées, ça veut dire quoi? les enregistrements sont mis à delete? en es tu certain? je veux dire, as-tu réouvert tes tables pour le vérifier, en faisant un browse avec un set deleted off?

d'autre part, quel est ton buffermode?


1 2

Cette discussion est classée dans : base, arrive, donnée, vue, clef


Répondre à ce message

Sujets en rapport avec ce message

apparition d'une base de donnée [ par jee0404 ] bonjour,        En utilisant un programme que j'ai programmé en foxpro , il apparaît sans que je l'ai voulus une base de donnée nommer "0.dbf". Qu'est Création d'une base de donnée [ par LaMouche39 ] Bonjour, Informaticien à la retraite (j'ai commencé en 1968....Assembleur, cobol, pascal, Dbase,Clipper 5), je me remets à la programmation avec foxpr Par ou commencer [ par liechar77 ] Bonjour, je suis étudiant en stage et ai quelques notions de programmation mais vraiment pas grand chose. On m'a demandé de réaliser un programme qui sql et installshield [ par hab162002 ] bonjour, j'ai un probleme avec sql server, j'ai concu une application client serveur qui marche tres bien dans mes 2 poste, foxpro est  installe dans echange oracle foxpro [ par panterga ] bonjourje ne suis pas un spécialiste d'oracle   mais je recherche un bout de programme me permettant via foxpro 9 de me connecter une base oracle pour Export Excel / Access [ par PVQL ] Bonjour a toutes et tous, je souhaite transferer une base données en VFP vers ACCESS (migration d'une base en VFP version 7 qui tourne sur un poste en Question sur les bases de données. [ par samurgence ] Bonjour,J'ai une base dbf que je gére par ligne de commande, en la triant, mettant les champs dans différents ordre (croissant, décroissant), en suppr fenêtre "enregistrer le fichier" [ par dology ] Bonjour, je n'arrive pas à trouver la fonction qui me permettrai d'ouvrir une fenêtre "enregistrer le fichier sous..." exactement comme lorsqu'on télé


Nos sponsors


Sondage...

Comparez les prix

CalendriCode

Février 2010
LMMJVSD
1234567
891011121314
15161718192021
22232425262728

Consulter la suite du CalendriCode

 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 1,357 sec (3)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales