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







Devancé par Foon
Sinon pour ton erreur tu peut regarder ce post qui montre bien qu'il faut faire attention au type des variables passées en paramètre
Hors ligne




oui oui, j'ai tout verifié...j'viens de tester en appeler ma fonction f_test(...) et là ca marche...alors qu'avant je l'avais appelé f_rowscopy()...
C'est vraiment bizarre cette histoire
Hors ligne




Bon alors c'est à ne plus rien y comprendre...
J'ai fait un copier coller de mes fonctions dans f_test, j'ai supprimé mes f_rowscopy et j'ai refait mes f_rowscopy en faisait un C/C de f_test...Et maintenant, c'est bon...Pourtant mes arguments étaient bons des le départ et de bon type
Je crois que ca va pas être ma journée :'( lol
Hors ligne
Juste une remarque concernant la méthodologie :
Il n’est pas très bon de multiplier les classes de services, car cela revient à faire de la programmation orientée services et non orientée objet.
Parmi les inconvénients cela crée des couplages entre les classe inutiles et si ton service ne convient pas tu ne peut pas le redéfinir simplement au sein d’une classe fenêtre où le service serait appelé. Il est souvent préférable de remonter l’ensemble des services au sein d’une classe fenêtre ancêtre de toutes les classes fenêtres.
Hors ligne




euh oui si tu le dis...moi on me dit de faire ca, je fais ca...faut jamais contredire un boss LOL
Merci en tout cas à tous pour votre aide
Hors ligne







Sebou a écrit:
euh oui si tu le dis...moi on me dit de faire ca, je fais ca...faut jamais contredire un boss LOL
Faut surtout pas montrer au boss que y a une salle de jeux dans PBaDonf
Dernière modification par Nephtis (09-01-2008 11:50:34)
Hors ligne














{HS}
Nephtis a écrit:
Sebou a écrit:
euh oui si tu le dis...moi on me dit de faire ca, je fais ca...faut jamais contredire un boss LOL
Faut surtout pas montrer au boss que y a une salle de jeux dans PBaDonf
ni parcourir des posts de mamba...
{/HS}
Hors ligne
par contre , rien ne t'empeche de faire de la pub pour ce site...

Hors ligne




pick ouic a écrit:
par contre , rien ne t'empeche de faire de la pub pour ce site...
ne t'en fais pas, j'en ai fait. Et je me gêne pas pour en rajouter qq fois quand il faut :D
Hors ligne




Bon, je me permets de faire une réouverture de ce sujet....Je viens de passer mon appli sur une base client....et là c'est la cata !!! C'est super long !!
Le problème vient du fait qu'à chaque ligne, on enchaine insertrow et setitem...
J'ai essayé d'améliorer la chose mais, ca n'y change pas grand chose...quelqu'un pour m'aider ? j'suis desespere là lol
long ll_nb_colonne1, ll_nb_colonne2, ll_i, ll_j, ll_pos_insert, ll_pos, ll_fin, ll_colnum, col_recep string ls_nom datastore lds_dw_orig, lds_dw_dest lds_dw_orig = f_getcolonne(p_dw_orig) lds_dw_dest = f_getcolonne(p_dw_dest) ll_fin = lds_dw_orig.RowCount() FOR ll_j = 1 TO ll_fin ls_nom = lds_dw_orig.GetItemString(ll_j, "nom") ll_pos = f_find(lds_dw_dest, "nom = '" + ls_nom + "'") IF ll_pos > 0 THEN lds_dw_orig.SetItem(ll_j, 'present', string(ll_pos)) END IF NEXT //On retire toutes les colonnes qui n'existent pas dans la seconde f_discard_final(lds_dw_orig, "present = 'N'") ll_fin = lds_dw_orig.RowCount() FOR ll_i = p_deb TO p_fin ll_pos_insert = p_dw_dest.insertrow(p_lig_insert) FOR ll_j=1 TO ll_fin ll_colnum = lds_dw_orig.GetItemNumber(ll_j, 'num') col_recep = long(lds_dw_orig.GetItemString(ll_j, 'present')) IF p_buffer = Primary! THEN p_dw_dest.Object.Data[ll_pos_insert, col_recep] = p_dw_orig.Object.Data.Primary[ll_i, ll_colnum] ELSE IF p_buffer = Delete! THEN p_dw_dest.Object.Data[ll_pos_insert, col_recep] = p_dw_orig.Object.Data.Delete[ll_i, ll_colnum] ELSE p_dw_dest.Object.Data[ll_pos_insert, col_recep] = p_dw_orig.Object.Data.Filter[ll_i, ll_colnum] END IF END IF NEXT NEXT destroy(lds_dw_orig) destroy(lds_dw_dest)
Hors ligne
Peut-être pourrais-tu travailler par bloc de donnée plutôt que ligne à ligne. Ce qui te permettrais de transférer le contenu d'une colonne en une seule fois. Regardes l'aide de la notation pointée au sujet de : Object.data[start row, start column, end row, end column]
FOR ll_j=1 TO ll_fin ll_colnum = lds_dw_orig.GetItemNumber(ll_j, 'num') col_recep = long(lds_dw_orig.GetItemString(ll_j, 'present')) IF p_buffer = Primary! THEN p_dw_dest.Object.Data[p_deb, col_recep, p_fin, col_recep] = p_dw_orig.Object.Data.Primary[p_deb, ll_colnum, p_fin, ll_colnum] ELSE IF p_buffer = Delete! THEN p_dw_dest.Object.Data[p_deb, col_recep, p_fin, col_recep] = p_dw_orig.Object.Data.Delete[p_deb, ll_colnum, p_fin, ll_colnum] ELSE p_dw_dest.Object.Data[p_deb, col_recep, p_fin, col_recep] = p_dw_orig.Object.Data.Filter[p_deb, ll_colnum, p_fin, ll_colnum] END IF END IF NEXT
Tu gagnes une boucle for ( de p_deb à p_fin)...
Hors ligne




euhhh...c'est à dire ? tu peux m'éclairer un peu plus stp ?
Hors ligne
Sebou a écrit:
euhhh...c'est à dire ? tu peux m'éclairer un peu plus stp ?
J'ai modifié mon post entre temps La réponse est dedans
Hors ligne




merci...mais c'est encore plus long comme ca :'(....Trois mois de travail sont en train de s'effondrer :'(
Hors ligne
Sebou a écrit:
merci...mais c'est encore plus long comme ca :'(....Trois mois de travail sont en train de s'effondrer :'(
Tu as bien viré la boucle for de p_deb à p_fin ?
Hors ligne




non
mais dis moi, je fais comment pour insérer à partir de ma ligne p_lig_insert ?? car là, si j'ai bien compris, j'insere de la ligne 10 à 20 de DW à la ligne 10 de DW2, non ?
on perd p_lig_insert, non ??
Hors ligne
Ah, je pensais que ta DW dest était toujours vide.
Dans ce cas :
p_count = p_dw_dest.rowcount() FOR ll_j=1 TO ll_fin ll_colnum = lds_dw_orig.GetItemNumber(ll_j, 'num') col_recep = long(lds_dw_orig.GetItemString(ll_j, 'present')) IF p_buffer = Primary! THEN p_dw_dest.Object.Data[p_deb + p_count, col_recep, p_fin + p_count, col_recep] = p_dw_orig.Object.Data.Primary[p_deb, ll_colnum, p_fin, ll_colnum] ELSE IF p_buffer = Delete! THEN p_dw_dest.Object.Data[p_deb + p_count, col_recep, p_fin + p_count, col_recep] = p_dw_orig.Object.Data.Delete[p_deb, ll_colnum, p_fin, ll_colnum] ELSE p_dw_dest.Object.Data[p_deb + p_count, col_recep, p_fin + p_count, col_recep] = p_dw_orig.Object.Data.Filter[p_deb, ll_colnum, p_fin, ll_colnum] END IF END IF NEXT
Hors ligne




exact merci...j'étais en train de m'embrouiller avec p_fin...tu verrais ma feuille de calcul
en tout cas, merci beaucoup )
Hors ligne
Si le problème est résolu, penses à modifier le titre de ton premier post en mettant [RESOLU]
Sinon, si ce n'est pas résolu, vas te avec une lettre autour du coup accusant ton boss de harcèlement...
Hors ligne




oui, ca y est, c résolu...j'attendais de lancer des tests utilisant la fonction pleinement pour voir si ca tenait le choc ou non
Encore merci )
Hors ligne