Quoi, tu ne connais pas PB ? Va falloir parcourir tout le forum alors !

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.

#1 17-11-2006 17:31:35

hellkinder  
Kinder Surprise
Award: chocomordutk6
Lieu: Bordeaux
Date d'inscription: 12-09-2006
Messages: 902
Pépites: 0
Banque: 10,524,230,367,490

[RESOLU] Detection Valeur null dans colonne

[PB 10.5] [XP]
Salut a tous.

Est ce que quelqu'un sait comment savoir rapidement si tous les rows d'une colonne d'une dw sont remplis ou si l'un d'eux est à null.

X Y
1 1
1 1
1
1 1
1 1
1 1
1 1


un truc de ce genre

lb_nullX = IsNull(dw_coordonnées.object.x)--------->FALSE
lb_nully = IsNull(dw_coordonnées.object.y)--------->TRUE

Et sans faire de compute comme le propose l'aide PB.

Merci


http://img510.imageshack.us/img510/4229/userbar1204625572ha9.gif
"Pour la première fois dans l'histoire de l'humanité, tous les peuples de la Terre ne forment qu'un"

Hors ligne

 

#2 17-11-2006 17:34:58

thezerg  
Modérateur
Award: calimero
Lieu: Bordeaux
Date d'inscription: 12-09-2006
Messages: 966
Pépites: 22,449
Banque: 154,120,629,477,379,100

Re: [RESOLU] Detection Valeur null dans colonne

Moi je dirai avec un compute dans la DW ? ok je  sors!          --> []

Hors ligne

 

#3 20-11-2006 08:52:10

pick ouic  
La bourse ou la vie ^^
Award: gearotter
Lieu: Massy-Verrières
Date d'inscription: 29-05-2006
Messages: 4658
Pépites: 942
Banque: 2,147,483,647
Site web

Re: [RESOLU] Detection Valeur null dans colonne

pourquoi ne pas mettre une valeur par defaut dans ta requete SQL ?
lorsque ton X ou Y est à nul ?


Connaitre son ignorance est une grande part de la connaissance.
http://animegifs.free.fr/anime/mazinger/mazinger.gif

Hors ligne

 

#4 20-11-2006 09:17:12

hellkinder  
Kinder Surprise
Award: chocomordutk6
Lieu: Bordeaux
Date d'inscription: 12-09-2006
Messages: 902
Pépites: 0
Banque: 10,524,230,367,490

Re: [RESOLU] Detection Valeur null dans colonne

Je ne peux pas mettre de DefaultValue car c est un champs qui doit être choisi par l utilisateur pour etre entré en base. En fait, si tout est rempli je peux activer un bouton d enregistrement.
D autres idées?

Sans quoi je ferai un compute (super idée the zerg )

Dernière modification par hellkinder (20-11-2006 09:17:59)


http://img510.imageshack.us/img510/4229/userbar1204625572ha9.gif
"Pour la première fois dans l'histoire de l'humanité, tous les peuples de la Terre ne forment qu'un"

Hors ligne

 

#5 20-11-2006 09:58:30

pick ouic  
La bourse ou la vie ^^
Award: gearotter
Lieu: Massy-Verrières
Date d'inscription: 29-05-2006
Messages: 4658
Pépites: 942
Banque: 2,147,483,647
Site web

Re: [RESOLU] Detection Valeur null dans colonne

bah, on appelle ca un controle de validation avant la mise à jour...

il suffit de faire les controles sur chaque colonne...
tu fais une boucle...et un test. si tu rencontres un null, tu quittes la boucle et tu affiches un message d'information obligeant l'utilisateur à saisir sur la ligne detéctée.
si tu n'as que les colonnes X, Y à controler, la solution du compute sum est intéressant.

A+


Connaitre son ignorance est une grande part de la connaissance.
http://animegifs.free.fr/anime/mazinger/mazinger.gif

Hors ligne

 

#6 20-11-2006 11:17:09

hellkinder  
Kinder Surprise
Award: chocomordutk6
Lieu: Bordeaux
Date d'inscription: 12-09-2006
Messages: 902
Pépites: 0
Banque: 10,524,230,367,490

Re: [RESOLU] Detection Valeur null dans colonne

J'ai trois colonne a verifier,

ok bon ben je vais faire cette fichu boucle que j'aurais tant aimé éviter. C'est dommage qu'une fontion generique sur une colonne de dw ne soit pas gerer pour savoir si un champs de la colonne est a null. Je pense ecrire à sybase, voire pourter plainte

Merci en tout cas.

Dernière modification par hellkinder (20-11-2006 11:17:43)


http://img510.imageshack.us/img510/4229/userbar1204625572ha9.gif
"Pour la première fois dans l'histoire de l'humanité, tous les peuples de la Terre ne forment qu'un"

Hors ligne

 

#7 20-11-2006 11:22:40

pick ouic  
La bourse ou la vie ^^
Award: gearotter
Lieu: Massy-Verrières
Date d'inscription: 29-05-2006
Messages: 4658
Pépites: 942
Banque: 2,147,483,647
Site web

Re: [RESOLU] Detection Valeur null dans colonne

tu peux ecrire toi meme une fonction generique...
genre, tu mets la couleur de fond de la colonne en une autre couleur, pour signifier que cette colonne est obligatoire.

et avec ta fonction, si tu detectes cette couleur de fond, tu parcours la colonne...ect...
on le fait souvent ca...

a++


Connaitre son ignorance est une grande part de la connaissance.
http://animegifs.free.fr/anime/mazinger/mazinger.gif

Hors ligne

 

#8 20-11-2006 14:33:03

hellkinder  
Kinder Surprise
Award: chocomordutk6
Lieu: Bordeaux
Date d'inscription: 12-09-2006
Messages: 902
Pépites: 0
Banque: 10,524,230,367,490

Re: [RESOLU] Detection Valeur null dans colonne

Merci pour ces precieux conseils Keep CUI ! Je vais proposer...
Dans tout les cas tu peux mettre le topic a résolu je pense, car il faut faire une boucle ou un compute pour ce probleme. Y'a pas d'autres solutions.

TcHô


http://img510.imageshack.us/img510/4229/userbar1204625572ha9.gif
"Pour la première fois dans l'histoire de l'humanité, tous les peuples de la Terre ne forment qu'un"

Hors ligne

 

#9 18-02-2009 15:22:04

micmx  
Membre Geek
Date d'inscription: 02-02-2009
Messages: 84
Pépites: 1,028
Banque: 1,383,846,119

Re: [RESOLU] Detection Valeur null dans colonne

Hello,

Et donc après 2 ans , vous l'avez faites finalement cette fonction générique ?
Je suis nouveau sur pb et je regarde un peu partout , j'ai vraiment du mal avec ce langage :s
J'ai voulu faire , plutôt que de tester 1 à 1 les valeurs de la DW

Code: pb

int li_i
boolean lb_filledin

lb_filledin=true

for li_i = 1 to 6//dw_1.rowcount( )
  //if(isnull(dw_1.object.v_machine[1]) or dw_1.object.v_machine[1]="") then
  if(isnull(dw_1.getItemString(li_i,1)) or dw_1.getItemString(li_i,1)="") then
    lb_filledin=false
  end if
next 

if(not lb_filledin) then
  messagebox("!!!","Veuillez remplir tous les champs")
else
.
.
.


Mais bien évidemment... ça ne fonctionne pas

Hors ligne

 

#10 18-02-2009 15:27:04

erasorz  
Admin
Lieu: Babylone
Date d'inscription: 23-11-2006
Messages: 5121
Pépites: 97,197
Banque: 2,147,483,647

Re: [RESOLU] Detection Valeur null dans colonne

ça ne fonctionne pas... càd ? message d'erreur ?

pour info getitemstring pour les valeurs chaines uniquement
dans ce cas-là il vaut mieux utiliser la notation pointée pour récupérer une variable Any


N'envoyez jamais un humain faire le travail d'un programme.

Hors ligne

 

#11 18-02-2009 15:30:49

micmx  
Membre Geek
Date d'inscription: 02-02-2009
Messages: 84
Pépites: 1,028
Banque: 1,383,846,119

Re: [RESOLU] Detection Valeur null dans colonne

Et bien premièrement , si à la place de "6" , je laisse dw_1.rowcount( ), j'ai 1 comme nombre de row

Ensuite, dw_1.getItemString(1,1) me donne bien ma première valeur mais dw_1.getItemString(2,1) et ceux qui suivent sont nuls !

Hors ligne

 

#12 18-02-2009 15:42:40

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

Re: [RESOLU] Detection Valeur null dans colonne

micmx a écrit:

Et bien premièrement , si à la place de "6" , je laisse dw_1.rowcount( ), j'ai 1 comme nombre de row

Ensuite, dw_1.getItemString(1,1) me donne bien ma première valeur mais dw_1.getItemString(2,1) et ceux qui suivent sont nuls !

Normal: Si le dw_1.rowcount()e retourne 1, c'est que tu n'as qu'une seule ligne dans ta datawindow


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

Hors ligne

 

#13 19-02-2009 08:53:41

micmx  
Membre Geek
Date d'inscription: 02-02-2009
Messages: 84
Pépites: 1,028
Banque: 1,383,846,119

Re: [RESOLU] Detection Valeur null dans colonne

Apparemment je confond les lignes avec les colonnes , j'ai vraiment du mal..
J'ai du faire comme ci-dessous mais ce n'est pas très professionnel..

Code: pb

int li_i,li_columncount
boolean lb_filledin
any al_cc

lb_filledin=true
al_cc = dw_1.object.datawindow.column.count
li_columncount=integer(al_cc)

for li_i = 1 to li_columncount
  if(li_i <3) then
  //if(isnull(dw_1.object.v_machine[1]) or dw_1.object.v_machine[1]="") then
  if(isnull(dw_1.getItemString(1,li_i)) or dw_1.getItemString(1,li_i)="") then
    lb_filledin=false
  end if
  else
  if(isnull(dw_1.getItemNumber(1,li_i)) or dw_1.getItemNumber(1,li_i)=0) then
    lb_filledin=false
  end if
end if
next 

if(not lb_filledin) then
  messagebox("!!!","Veuillez remplir tous les champs")
else
.
.
.

Dernière modification par micmx (19-02-2009 09:12:08)

Hors ligne

 

#14 19-02-2009 09:15:26

buck  
Modérateur
Lieu: Dijon
Date d'inscription: 31-07-2008
Messages: 747
Pépites: 1,028,843
Banque: 171,170,849,654

Re: [RESOLU] Detection Valeur null dans colonne

Bonjour,

Juste une suggestion, par expérience les utilisateurs font souvent des choses inattendues et contourne les interdits.

Je te conseille de modifier le test pour éviter les champs remplis par des espaces de la façon suivante :

Code: pb

Trim(dw_1.getItemString(1,li_i))=""

Hors ligne

 

#15 19-02-2009 10:20:34

micmx  
Membre Geek
Date d'inscription: 02-02-2009
Messages: 84
Pépites: 1,028
Banque: 1,383,846,119

Re: [RESOLU] Detection Valeur null dans colonne

Merci du conseil !
Existe-t-il une fonction plus standard qui irait chercher les données et retournerait un "any" pour ensuite tester cet élément avec un "CHOOSE CASE ClassName(var)" ?

Car ça me semble un peu sale la façon dont j'ai procédé :$

Hors ligne

 

#16 19-02-2009 10:44:28

erasorz  
Admin
Lieu: Babylone
Date d'inscription: 23-11-2006
Messages: 5121
Pépites: 97,197
Banque: 2,147,483,647

Re: [RESOLU] Detection Valeur null dans colonne

micmx a écrit:

Existe-t-il une fonction plus standard qui irait chercher les données et retournerait un "any"

erasorz a écrit:

pour info getitemstring pour les valeurs chaines uniquement
dans ce cas-là il vaut mieux utiliser la notation pointée pour récupérer une variable Any

Code: pb

Any la_value
la_value = dw_1.Object.Data[no_ligne,no_colonne]

N'envoyez jamais un humain faire le travail d'un programme.

Hors ligne

 

#17 19-02-2009 11:03:03

micmx  
Membre Geek
Date d'inscription: 02-02-2009
Messages: 84
Pépites: 1,028
Banque: 1,383,846,119

Re: [RESOLU] Detection Valeur null dans colonne

Ok donc je poste ici le code pour ceux qui à l'avenir chercherons un moyen de vérifier que les données sont biens remplies

Code: pb

int li_i,li_columncount
boolean lb_filledin
any al_cc
Any la_value

lb_filledin=true
al_cc = dw_1.object.datawindow.column.count
li_columncount=integer(al_cc)

for li_i = 1 to li_columncount
  la_value = dw_1.Object.Data[1,li_i]
  if(isNull(la_value)) then
    lb_filledin=false
  else
      CHOOSE CASE ClassName(la_value)
          CASE "string"
        if(Trim(string(la_value))=" ") then
          lb_filledin=false
        end if
          CASE "integer"
          if(integer(la_value)=0) then
            lb_filledin=false
          end if
        END CHOOSE
  end if
next


if(not lb_filledin) then
  messagebox("!!!","Veuillez remplir tous les champs")
else

//TRAITEMENT
..
..

Hors ligne

 

#18 19-02-2009 11:05:10

buck  
Modérateur
Lieu: Dijon
Date d'inscription: 31-07-2008
Messages: 747
Pépites: 1,028,843
Banque: 171,170,849,654

Re: [RESOLU] Detection Valeur null dans colonne

Bonjour,

Dans ton cas une autre solution pourrait être l'utilisation de l'événement ItemChanged, dans la mesure ou tu n'as q'une ligne :

(Tu déclares une variable d'instance de type integer ii_colnull)

Code: PB

IF NOT ISNULL(data) AND trim(data) <> "" THEN
ii_colnull += integer(dwo.id)
ELSE
ii_colnull -= integer(dwo.id)
END IF


Lors de la validation :

Code: PB

IF dw_1.AcceptText() < 0 THEN RETURN

IF ii_colnum <> 21 THEN
messagebox("!!!","Veuillez remplir tous les champs")
END IF


L'interêt est que "data" est toujours de type string.

Hors ligne

 

#19 19-02-2009 11:14:08

micmx  
Membre Geek
Date d'inscription: 02-02-2009
Messages: 84
Pépites: 1,028
Banque: 1,383,846,119

Re: [RESOLU] Detection Valeur null dans colonne

Je ne comprends pas vraiment la notion de "Rows" en PB

Voici ma DW..

En quoi voit-on qu'elle n'a qu'une ROW ? oO
http://img253.imageshack.us/my.php?image=madwjk5.jpg

Hors ligne

 

#20 19-02-2009 11:25:56

buck  
Modérateur
Lieu: Dijon
Date d'inscription: 31-07-2008
Messages: 747
Pépites: 1,028,843
Banque: 171,170,849,654

Re: [RESOLU] Detection Valeur null dans colonne

Bonjour,

Et bien non, le nombre de lignes est déterminé au moment ou tu récupères les données lorsque tu fait ton "Retrieve".
C'est le nombre de lignes récupérées par le "select" de ta requête SQL.

Dans ce cas, le motif de ton formulaire sera répété à l'affichage autant de fois que le nombre de lignes récupérées avec les différentes données.

Hors ligne

 

#21 19-02-2009 13:29:56

micmx  
Membre Geek
Date d'inscription: 02-02-2009
Messages: 84
Pépites: 1,028
Banque: 1,383,846,119

Re: [RESOLU] Detection Valeur null dans colonne

Ok , je comprends .
Merci pour l'info .

Hors ligne

 

Pied de page des forums

Propulsé par FluxBB 1.2.22