Bonjour ,
Je voudrai savoir quel était l'equivalent de la methode VararrayOf de Delphi sur Visual studio ! Je trime dessus ; toute reponse est bienvenue .
Bonjour ,
Je voudrai savoir quel était l'equivalent de la methode VararrayOf de Delphi sur Visual studio ! Je trime dessus ; toute reponse est bienvenue .
Oui Merci !!
Pour expliquer en detail :
Je mets à jour listearticle grâce à Addwhere en comparant les ID et je developpe une application qui etait avant en delphi qui utilise une methode VarArrayof et je cherche l'equivalent sur VB .
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11 cursor = MasterContext.ClassManager.CreateCursor("TTable") ListeFamille = MasterContext.ClassManager.CreateObjectList("TTable") ListeFamille.addwhere("", "oid", False, Nothing) For i As Integer = 0 To ListeFamille.count - 1 ListeArticle = MasterContext.ClassManager.CreateObjectList("TTable") ListeFamille.GetInstance(i, Table) 'Dim ArrList As ArrayList() ListeArticle.addwhere("oidTTablel=%1", "oid", True, 'VarArrayof(Table.oid))
Bon j'etais déja dans le forum VB , un moderateur a deplacé Mon Post pour le mettre là .
et pour repondre à ta question , VarArrayOF recupére "Il me semble " Toutes les données d'un tableau défini .
Re,
Tu peux donner un exemple d'utilisation de VararrayOf ?
Voici le Code en Delphi que je suis en train de traduire en VB
VarArrayOf Ajoute a listeArticle les articles lorsqu'on a le meme id dans ListeFamille et Table.oid
Code delphi : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73 listeFamille:=MasterContext.ClassManager.CreateObjectList('TCategorieCommercialProduitVente'); listeFamille.Addwhere('','oid',FALSE,unassigned); for i:=0 to listeFamille.count-1 do begin listearticle:=unassigned; listearticle:=MasterContext.ClassManager.CreateObjectList('TProduitVente'); listeFamille.Getinstance(i,Table); 'Ici VarArrayOf Utilisé pour implementer ListeArticle listearticle.Addwhere('(oidCategorieCommercial=%1)','oid',TRUE,VARARRAYOF([Table.oid])); if listearticle.count<>0 then begin listeproduit:=MasterContext.ClassManager.CreateObjectList('TProduit'); for j:=0 to listearticle.count-1 do begin listearticle.Getinstance(j,article); listeproduit.Addwhere('(oidProduitVente=%1) and (publiable=%2)','oid',TRUE,VARARRAYOF([article.oid,'1'])) ; article:=unassigned; end; if listeproduit.count<>0 then begin ADOQuery1.close; ADOQuery1.sql.Clear; ADOQuery1.SQL.Add('select FA_CodeFamille from F_FAMILLE where FA_CodeFamille='''+(table.code)+''' '); ADOQuery1.Open; if not ADOQuery1.eof then //Article existant begin Memo1.Lines.Add('Famille '''+(table.code)+''' en cours de modification'); ADOInsertCLi.close; ADOInsertCLi.sql.Clear; ADOInsertCLi.SQL.Add( 'UPDATE F_FAMILLE SET '+ 'FA_Intitule='''+subs(InsertQuot(Table.Caption),69)+''' '+ ' where FA_CodeFamille='''+(table.code)+'''' ); ADOInsertCli.ExecSQL; end else //Famille inexistant begin Memo1.Lines.Add('Famille '''+(table.code)+''' en cours de création'); if subs(table.code,19)=table.code then begin ADOInsertCLi.close; ADOInsertCLi.sql.Clear; ADOInsertCLi.SQL.Add( 'INSERT INTO F_FAMILLE('+ ' FA_CodeFamille,FA_Type,FA_Intitule,FA_UniteVen,FA_CatProduit, '+ ' FA_Coef,FA_SuiviStock,FA_Garantie,FA_Central,FA_Stat01,FA_Stat02,FA_Stat03,FA_Stat04,FA_Stat05,FA_CodeFiscal,FA_Pays,FA_UnitePoids,FA_Escompte,'+ //13 ' FA_Delai,FA_HorsStat,FA_NotImp,FA_Frais01FR_Rem01REM_Valeur,FA_Frais01FR_Rem01REM_Type,FA_Frais01FR_Rem02REM_Valeur,FA_Frais01FR_Rem02REM_Type,FA_Frais01FR_Rem03REM_Valeur,'+ //8 ' FA_Frais01FR_Rem03REM_Type,FA_Frais02FR_Rem01REM_Valeur,FA_Frais02FR_Rem01REM_Type,FA_Frais02FR_Rem02REM_Valeur,FA_Frais02FR_Rem02REM_Type,FA_Frais02FR_Rem03REM_Valeur,FA_Frais02FR_Rem03REM_Type,'+ //7 ' FA_Frais03FR_Rem01REM_Valeur,'+ ' FA_Frais03FR_Rem01REM_Type,FA_Frais03FR_Rem02REM_Valeur,FA_Frais03FR_Rem02REM_Type,FA_Frais03FR_Rem03REM_Valeur,FA_Frais03FR_Rem03REM_Type,FA_Contremarque,FA_FactPoids,FA_FactForfait,'+ //8 ' FA_Publie,'+ 'cbProt,cbCreateur,cbReplication,cbFlag)'+ 'VALUES('''+Table.code+''',0,'''+subs(InsertQuot(Table.Caption),69)+''',1,1, '+ ' 0,0,0,'''','''','''','''','''','''','''','''',0,0, '+ ' 0,0,0,0,0,0,0,0, '+ ' 0,0,0,0,0,0,0, '+ ' 0, '+ ' 0,0,0,0,0,0,0,0, '+ ' 0,'+ ' 0,''COLU'',0,0)' ); ADOInsertCLi.ExecSQL; end end; end; Table:=Unassigned; //Site:=Unassigned; end end;
Pour etre plus clair , VarArrayof Crée un tableau et y implémente les données
Bonjour.
Le VararrayOf permet (si je ne me trompe) de construire un tableau de taille variable de données de type hétérogéne (Variant).
J'aurai donc tendance dans ton cas à le remplacer par un tableau d'Object et à utiliser "ParamArray param() As Object" dans la procédure (cf. l'aide de ParamArray).
Mais c'est pas terrible des tableaux de paramétres quand on a la possibilité de définire des signatures différentes ...
Donc avant tout chose, vérifie que son utilisation est justifiée : on en fait quoi de ce tableau "poubelle" dans la proc ?
Cdt.
Merci POur ta reponse . addwhere ajoute d'un coup tous les champs specifiés , j'ai essayé de récupérer les champs avec paramArray les champs Ou se trouvent les ID , mais il a pas l'air de les prendre en compte ! je dois peut etre modifier tout le code pour Obtenir le resultat voulu !
Bon alors, le code donné par rydjel est un code utiliser pour travailler sur le modèle métier de l'ERP SAGE Ligne 1000 à travers le serveur COM depuis une application extérieure à l'ERP.
Le code traditionnel est écrit en Delphi parce que le Framework de SAGE Ligne 1000 est un langage propriétaire basé à plus de 90% sur du Delphi 7 et que le support SAGE (le CTD en l'occurence) communique habituellement en Delphi.
Ceci dit, on peut utiliser d'autres langages pour ataquer le serveur COM et notamment VB.Net
Le varArrayOf([..,..]) en Delphi se traduira en VB par New Object() {...,...}
Oui Yves Merci d'ailleurs , Donc il me faut juste mettre??
Code : Sélectionner tout - Visualiser dans une fenêtre à part New object () {MonObjet.id)
yes,
VarArrayOf([MonObjet.Id]) devient New Object() {MonObjet.Id}
Bouhhh que c'est pas beau de la requête SQL pour attaquer les tables.
Bon heureusement que la partie SQL, c'est pour de la ligne 100.
D'ailleurs c'est quoi ce code ? Conversion L1000 vers L100 ?????
Partager