PB à toute heure et à tout moment. (à parcourir avec modération)

Le forum (ô combien francophone) des utilisateurs de Powerbuilder.

Recherche rapide

Annonce

Certaines rubriques, dont des cours, sont uniquement visibles par les membres du forum ^^.
Dans la rubrique Liens & Références, vous avez accès à un sommaire de téléchargement, profitez-en !
Il existe maintenant un nouveau TOPIC "Votre CV en Ligne" accessible uniquement par demande.
  • Index
  •  » Powerscripts
  •  » [RESOLU] Recherche colonne ou compute field existant...

#1 26-11-2007 10:43:55

LeCiao  
Membre Geek
Date d'inscription: 05-09-2007
Messages: 87
Pépites: 18
Banque: 362,050,507,885,535

[RESOLU] Recherche colonne ou compute field existant...

Voilà encore une question.

Dans un script générique, j'ai besoin de vérifier si une colonne portant un nom spécifique existe dans la DW de la fenêtre en cours.
Car le traitement doit être différent dans le cas des écrans où la colonne existe.

Existe il une fonction miracle qui vérifie cela ?

Dernière modification par LeCiao (26-11-2007 15:45:15)

Hors ligne

 

#2 26-11-2007 11:01:05

foon  
N2iGeek + MangasGeek = foon
Award: bf
Lieu: Bonchamp-Lès-Laval
Date d'inscription: 28-02-2007
Messages: 2487
Pépites: 88
Banque: 9,223,372,036,854,776,000

Re: [RESOLU] Recherche colonne ou compute field existant...

Bonjour LeCiao,

Il te suffit de boucler sur toutes les colonnes de ta dw et de tester son nom:

Code: pb

Long   l_colcount, l_currentcol
String   s_colcount, s_colname

/* Boucle sur toutes les colonnes de la datawindow de saisie: */

s_colcount = dw_detail.Describe("DataWindow.Column.Count")

IF IsNumber( s_colcount ) THEN
  
   l_colcount = Long( s_colcount )
  
ELSE
  
  Messagebox( "Erreur", "Erreur sur la récupération du nombre de colonnes" )
  RETURN
  
END IF

l_currentcol = 1

DO WHILE l_currentcol <= l_colcount
    
     /* Récupération du nom de la colonne: */
    
     s_colname = dw_detail.Describe("#" + String( l_currentcol ) + ".Name")

    /* Mettre ici ton test sur le nom de ta colonne:*/

    IF Lower(s_colname) = "macolonneamoi" THEN

        Messagebox( "Cool", "C''est la bonne!" )
        EXIT

    END IF
  
     l_currentcol = l_currentcol++
  
LOOP

Seuls ceux qui ne font rien ne font jamais d'erreurs
http://www.nerdtests.com/images/badge/163124fb7fb459a3.gif

Hors ligne

 

#3 26-11-2007 13:12:26

LeCiao  
Membre Geek
Date d'inscription: 05-09-2007
Messages: 87
Pépites: 18
Banque: 362,050,507,885,535

Re: [RESOLU] Recherche colonne ou compute field existant...

Merci je mets ça en place et je vous tiens au courant !

Hors ligne

 

#4 26-11-2007 15:10:07

LeCiao  
Membre Geek
Date d'inscription: 05-09-2007
Messages: 87
Pépites: 18
Banque: 362,050,507,885,535

Re: [RESOLU] Recherche colonne ou compute field existant...

Parfait pour une colonne. MAIS ne prend pas en compte un compute field !

Une idée complémentaire ??   

Hors ligne

 

#5 26-11-2007 15:14:50

JCZ  
Builder Power
Award: bf
Lieu: 75019 paris
Date d'inscription: 21-05-2007
Messages: 1724
Pépites: 496,453,703,213
Banque: 9,223,372,036,854,776,000

Re: [RESOLU] Recherche colonne ou compute field existant...

exemple de code à adapter

Code: pb

ls_syntax = dw_sheet.Object.DataWindow.Syntax
ll_find = PosA(ls_syntax, "compute(", 1)
li_Cpt = 1
Do while ll_find > 0 
  ll_find_name = PosA(ls_syntax, "name=", ll_find)
  ll_find_name2 = PosA(ls_syntax, " ", ll_find_name+5)
  ls_name = MidA(ls_syntax, ll_find_name + 5, ll_find_name2 - ll_find_name - 5)



  ll_find = PosA(ls_syntax, "compute(", ll_find_name2)
  li_Cpt ++
Loop

Face à l'agression, la puissance de l'intelligence

Hors ligne

 

#6 26-11-2007 15:43:16

LeCiao  
Membre Geek
Date d'inscription: 05-09-2007
Messages: 87
Pépites: 18
Banque: 362,050,507,885,535

Re: [RESOLU] Recherche colonne ou compute field existant...

Merci beaucoup à vous 2 ça marche nickel.
Voici le code final :

Code: pb

Long    ll_tot, ll_i, ll_find, ll_find_name
String  ls_tot, ls_name, ls_syntax
Boolean  lb_trouve

/* Boucle sur toutes les colonnes de la DW */
ls_tot = This.Describe("DataWindow.Column.Count")
If IsNumber( ls_tot ) Then
   ll_tot = Long( ls_tot )
End If

For ll_i = 1 To ll_tot
  /* Récupération du nom de la colonne: */
  ls_name = This.Describe("#" + String(ll_i) + ".Name")
  
  /* Test sur le nom de la colonne */
  If  Lower(ls_name) = "cf_page" Then
    If This.object.cf_page.Visible Then
      This.object.cf_page.Visible = False
      lb_trouve = True
    End If
    ll_i = ll_tot
  End If
Next

/* Si on n'a pas trouvé la colonne, on recherche un compute field */
If Not lb_Trouve then
  ls_syntax = This.Object.DataWindow.Syntax
  ll_i = Pos(ls_syntax, "compute(", 1)
  Do while ll_i > 0 
    ll_find      = Pos(ls_syntax, "name=", ll_i)
    ll_find_name  = Pos(ls_syntax, " ", ll_find+5)
    ls_name      = Mid(ls_syntax, ll_find + 5, ll_find_name - ll_find - 5)
    
    If  Lower(ls_name) = "cf_page" Then
      If This.object.cf_page.Visible Then
        This.object.cf_page.Visible = False
        lb_trouve = True
      End If
      ll_i = 0
    Else
      ll_i = Pos(ls_syntax, "compute(", ll_find_name)
    End If
  Loop
End If

uof_print()

If lb_trouve Then
  This.object.cf_page.Visible = True
End If

This.SetRedraw(True)

Hors ligne

 
  • Index
  •  » Powerscripts
  •  » [RESOLU] Recherche colonne ou compute field existant...

Pied de page des forums

Propulsé par FluxBB 1.2.22