Extraire la ligne dont le check box est selectionné d'un grid

engelina33 Messages postés 19 Date d'inscription samedi 2 décembre 2006 Statut Membre Dernière intervention 16 mars 2012 - 6 avril 2009 à 09:56
michelatoutfox Messages postés 828 Date d'inscription mardi 5 octobre 2004 Statut Membre Dernière intervention 7 mai 2013 - 7 avril 2009 à 23:21
bonjour,
je développe une application en VFP 9 et j'utilise SQL server comme un SGBD.
j'ai un probléme dans mon grid:
je crée une table foxpro et je la remplie à partir d'une table de ma base
puis je fais une correspondance entre la table foxpro et les champs de ma grid
le problème que j'ai une colonne qui est un check box et que je veux aprés le remplissage
de le grid avoir la ligne ou le numéros de la ligne que l'utilisateur a checké.
c'est à dire je veux savoir si il y'a un code qui permet d'accéder directement à la ligne ou comment parcourir le grid
le code est le suivant :
********créer la table
CREATE TABLE t_op (checke int , num_op int ,qte int )
 SELECT t_op
 ZAP
***********simple requete
***********remplir la table
DO WHILE NOT EOF('mon_curseur')
 SELECT t_op
 APPEND BLANK
 replace t_op.checke WITH 0
 replace t_op.num_op WITH mon_curseur.num_tirage
 replace t_op.qte WITH mon_curseur.quantité
SELECT mon_curseur
  SKIP 1
  ENDDO
*************remplir le grid
  thisform.grd_op.RecordSourcetype= 1
  thisform.grd_op.RecordSource='t_op'
  thisform.grd_op.column1.ControlSource='t_op.checke'
  thisform.grd_op.column2.ControlSource='t_op.num_op'
   thisform.grd_op.column3.ControlSource='t_op.qte'
   SELECT t_op
   GO top
   thisform.Refresh
   thisform.grd_op.Refresh

3 réponses

michelatoutfox Messages postés 828 Date d'inscription mardi 5 octobre 2004 Statut Membre Dernière intervention 7 mai 2013 1
6 avril 2009 à 12:15
Bonjour,

pour parcourir un grid en FoxPro, il suffit de parcourir son RecordSource.
Mais ton code est globalement incorrect, tu n'as pas du tout besoin de cette table t_op.
Comment est créé ce 'mon_curseur'? c'est une vue distante, un cursoradapter, ou le résultat d'un SQLexec?
c'est cet alias que tu dois prendre comme recordsource, tout simplement. Mais si tu veux pouvoir lier un checkbox à un champ, il sera plus simple de convertir le type de données en Booleen.
Je te conseille de créer une vue distante, puis de créer un form, et de faire un drag and drop de ta vue distante sur ton form. tu regardes le résultat, tu compares aux exemples qui sont fournis avec VFP, et ensuite tu adaptes à tes besoins.

PS: et oublie toutes ces vieilleries de DO WHILE NOT EOF(), et autres APPEND BLANK, qui ne te procureront que des complications inutiles.
0
engelina33 Messages postés 19 Date d'inscription samedi 2 décembre 2006 Statut Membre Dernière intervention 16 mars 2012
7 avril 2009 à 21:05
merci Michel, j'ai résolu le problème en parcourant le grid  avec ce petit code:

SELECT mon_curseur
 GO top
 SELECT ma_table
   GO top
 DO WHILE NOT EOF('mon_curseur')
     SELECT ma_table
    replace mon_curseur.Qte WITH  ma_table.variable
    *****requete de mise à jour simple***
    SELECT mon_curseur
           SKIP 1
    SELECT ma_table
           SKIP 1
          
             ENDDO
0
michelatoutfox Messages postés 828 Date d'inscription mardi 5 octobre 2004 Statut Membre Dernière intervention 7 mai 2013 1
7 avril 2009 à 23:21
tu appelles ça "résoudre le problème" ????

si ça te convient, pourquoi pas, mais (à mon avis), tu vas droit dans le mur avec du code de ce genre....
0
Rejoignez-nous