Probleme de boucle sur tableau d'objects...

sphaxslayer Messages postés 216 Date d'inscription mardi 5 avril 2005 Statut Membre Dernière intervention 17 septembre 2008 - 7 juin 2005 à 10:04
Lutinore Messages postés 3246 Date d'inscription lundi 25 avril 2005 Statut Membre Dernière intervention 27 octobre 2012 - 10 juin 2005 à 10:56
B'jour b'jour !
alors voilà j'ai un souci...j'ai un tableau d'object à 2 dimensions qui reçoit le résultat d'une fonction exécutant une requête SQL...mon prbleme c'est que ma requête doit être dans un boucle mais sauvée dans sa totalité dans un tableau, la voici :

SELECT DQ.MSG_ID, DQ.USER_DATA_” + i + “,


ENQ_TIME, FINAL_TIME, MSG_STATE,


FAILURE_CODE, FAILURE_COMMENT


FROM DXCNT_QUEUE DQ


WHERE DQ.QUEUE = // sélectionnée depuis une listeBox


AND DQ.USER_DATA_” + i + “ IS NOT NULL


AND DQ.MSG_STATE = <code_statut> // variable initialisée au préalable


ORDER BY MSG_ID

vous remarquez certainement le "i" dans la requête: en fait, en abse, il y'a 10 champs USER_DATA_i, avec i de 0 à 9...j'ai donc voulu mettre cette requête dans une boucle...Donc, mon tableau reçoit le résultat de cette requete...sauf qu'évidemment, faire

for (int i=0; i<10; i++)
Result = connex.getquery("SELECT... ...")

ça va m'écraser Result à chaque tour....
j'ai donc pensé à faire

Result = Result + connex.getquery("SELECT ... ...")

mais Visual Studio me dit qu'on ne peut pas applioquer l'opérateur + sur un tableau d'objets....

donc voilà si quelqu'un pouvait m'aider à résoudre ça....merciii :)

"Un seul Être vous manque, et tout est dépeuplé..."

67 réponses

cs_yoannd Messages postés 305 Date d'inscription lundi 7 janvier 2002 Statut Membre Dernière intervention 10 août 2011 7
8 juin 2005 à 15:54
En effet... lol



Désolé d'avoir comis la faute, mais tu as compris ce que je voulais dire, donc c cool :)
0
sphaxslayer Messages postés 216 Date d'inscription mardi 5 avril 2005 Statut Membre Dernière intervention 17 septembre 2008
8 juin 2005 à 15:59
bof arrete, y'a pas d'probleme...:) j'suis en train d'essayer d'magouiller: pour l'instant j'ai inclus une 2eme boucle for dans la premiere:



for (
int i = 0; i<Resultats.Count; i++)


{



for (
int j = 6; j<15; j++)


{


Result = Resultats[i];


DixUserData = DixUserData + Result[i,j].ToString();


}


}

et comme je dois afficher que les 20 1ers messages, normalement un simple remplacement de Resultats.Count par 20 devrait suffir:


for (
int i = 0; i<20; i++)


{



for (
int j = 6; j<15; j++)


{


Result = Resultats[i];


DixUserData = DixUserData + Result[i,j].ToString();


}


}

"Un seul Être vous manque, et tout est dépeuplé..."
0
cs_yoannd Messages postés 305 Date d'inscription lundi 7 janvier 2002 Statut Membre Dernière intervention 10 août 2011 7
8 juin 2005 à 16:04
"et comme je dois afficher que les 20 1ers messages, normalement un
simple remplacement de Resultats.Count par 20 devrait suffir:"

--> Alors tu prends des risques gars. Si tu récupères moins de 20 résultats, ben ca plante.



for (
int i = 0; i<20 && i <
Resultats.Count
; i++)




{




for (
int j = 6; j<15; j++)




{




Result = Resultats[i];




DixUserData = DixUserData + Result[i,j].ToString();




}



}
0
sphaxslayer Messages postés 216 Date d'inscription mardi 5 avril 2005 Statut Membre Dernière intervention 17 septembre 2008
8 juin 2005 à 16:13
héhéééééééééééé bien vuuuuu j'me suis fait eu :p

"Un seul Être vous manque, et tout est dépeuplé..."
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
sphaxslayer Messages postés 216 Date d'inscription mardi 5 avril 2005 Statut Membre Dernière intervention 17 septembre 2008
8 juin 2005 à 16:31
AAHHHH !
il veut pas accepter la ligne
Result = Resultats[i]
dans le for....il dit qu'il peut pas convertir implicitement un Objetct[] en Object[*,*]

"Un seul Être vous manque, et tout est dépeuplé..."
0
Lutinore Messages postés 3246 Date d'inscription lundi 25 avril 2005 Statut Membre Dernière intervention 27 octobre 2012 41
8 juin 2005 à 16:47
results = ( Object[,] )resultats[ i ];
0
sphaxslayer Messages postés 216 Date d'inscription mardi 5 avril 2005 Statut Membre Dernière intervention 17 septembre 2008
8 juin 2005 à 16:53
Merci ! j'testerais demain, c'est l'heure du départ :)
J'vous tiens au courant dès que j'arrive à quelque chose, et bien sûr j'viendrais accepter les réponses dès que j'arrive à résoudre tout ce bordel !

Merci les gars ;)

"Un seul Être vous manque, et tout est dépeuplé..."
0
sphaxslayer Messages postés 216 Date d'inscription mardi 5 avril 2005 Statut Membre Dernière intervention 17 septembre 2008
9 juin 2005 à 09:23
Bien le bonjourrrrr !
Dites, y'a quelqu'un qui saurait me dire pourquoi ce j++ en rouge dans mon code me sort l'erreur:

Une exception non gérée du type 'System.NullReferenceException' s'est produite dans MenuDyna.exe


Informations supplémentaires : La référence d'objet n'est pas définie à une instance d'un objet.

Voici le code:

tabUsrDta =
null; // tableau de strings



int k = 0;



do {



for (
int i=0; i<10; i++)


{


Resultats.Add(connex.getQueryResult("SELECT DISTINCT DQ.MSG_ID, DQ.ENQ_TIME, DQ.FINAL_TIME, DQ.MSG_STATE, DQ.FAILURE_CODE, DQ.FAILURE_COMMENT, DQ.USER_DATA_" + i.ToString() +


" FROM DXCNT_QUEUE DQ " +


"WHERE DQ.USER_DATA_" + i.ToString() + " IS NOT NULL " +


"AND DQ.MSG_STATE = " + state +


" AND DQ.QUEUE = '" + ListBox_Interfaces.SelectedItem.ToString() + "' "+


"ORDER BY MSG_ID"));


}



for (
int j=0; j<10; j++)


{


Result[k,j] = Resultats[k];


DixUserData = DixUserData + Result[k,j].ToString(); // DixUserData étant une string


tabUsrDta[k] = DixUserData;


}


DataRow row = dtaSet.Tables["MESSAGE"].NewRow();


row["MSG_ID"] = Result[k,0];


row["ENQ_TIME"] = Result[k,1];


row["FINAL_TIME"] = Result[k,2];


row["MSG_STATE"] = Result[k,3];


row["FAILURE_CODE"] = Result[k,4];


row["FAILURE_COMMENT"] = Result[k,5];


row["USER_DATA_0"] = Result[k,6].ToString().Substring(0,128);



// ajout de la ligne au Datagrid et rafraîchissement de celui-ci


dtaSet.Tables["MESSAGE"].Rows.Add(row);


DtaGrid_Result.Refresh();


k++;


}
while (k<20 && k<Resultats.Count);

"Un seul Être vous manque, et tout est dépeuplé..."
0
sphaxslayer Messages postés 216 Date d'inscription mardi 5 avril 2005 Statut Membre Dernière intervention 17 septembre 2008
9 juin 2005 à 10:47
Bon en fait je pense avoir localisé le probleme, mais j'ai encore besoin de votre aide:
j'ai essayé en remplaçant
Result[k,j] = Resultats[k]

"Un seul Être vous manque, et tout est dépeuplé..."
0
sphaxslayer Messages postés 216 Date d'inscription mardi 5 avril 2005 Statut Membre Dernière intervention 17 septembre 2008
9 juin 2005 à 10:56
on dirait qu'y'a eu un pb d'ajoutation...p'tete qu'le poste est plein :D j'recommence donc...

Bon en fait je pense avoir localisé le probleme, mais j'ai encore besoin de votre aide:
j'ai essayé en remplaçant
Result[k,j] = Resultats[k]
par Result = (Objerct[,])Resultats[k] mais ca marche pas non plus...j'ai donc mis ue MessageBox en sortie de boucle affichant Resultats[9].toString()....Et la chaine affichée est donc: "Object[,]"....y'a un ch'tiot pb...sachant que ma fonctiongetQueryResult renvoie un Object[,] est-ce ue ça viendrait pas de là par hasard...? Merciiii les booooons :-)

"Un seul Être vous manque, et tout est dépeuplé..."
0
cs_yoannd Messages postés 305 Date d'inscription lundi 7 janvier 2002 Statut Membre Dernière intervention 10 août 2011 7
9 juin 2005 à 11:02
Resultats[9].toString()



Ton ToString est lancé sur le 9e élément du tableau. Quel est le type
du 9e élément de ton tableau ? C'est un object[,], un tableau d'objets
en d'autres termes. Peut on appliquer une fonction ToString sur ce type
d'élément ? non, bien sûr. Il te retourne "Object[,]", c'est à dire son
type sous une forme chaine de caractères parcequ'il sait pas quoi faire
d'autre.



Si tu veux vérifier le contenu de ta variable Resultats, je te
conseille de mettre un point d'arret dans ta boucle, et de lancer ton
programme. Regarde la doc de ton IDE pour de plus amples explications
(il me semble que tu n'as pas Visual Studio, je me trompe ?)
0
sphaxslayer Messages postés 216 Date d'inscription mardi 5 avril 2005 Statut Membre Dernière intervention 17 septembre 2008
9 juin 2005 à 11:06
lool si j'ai VS, mais j'ais pas MSDN et sans vouloir cracher sur celle en ligne, l'est pas toujours très explicite...j'ai mis des points d'arrets mais j'vois pas comment m'débrouiller pour choper le contenu des tableaux contenus eux-mêmes dans Résultats....:'(:'( j'désespere...je sens que c un truc tout simple mais j'arrive pas à piger l'erreur qu'il me sort, ni rien, j'suis out là...lol

"Un seul Être vous manque, et tout est dépeuplé..."
0
sphaxslayer Messages postés 216 Date d'inscription mardi 5 avril 2005 Statut Membre Dernière intervention 17 septembre 2008
9 juin 2005 à 11:08
il commence à saturer je crois...il aime pas qu'on écrive trop lol il manque la fin de mon message...j'disais qu'j'trouvais qu'algorithmiquement parlant ça m'semblait pas mauvais comme code nan ?

"Un seul Être vous manque, et tout est dépeuplé..."
0
cs_yoannd Messages postés 305 Date d'inscription lundi 7 janvier 2002 Statut Membre Dernière intervention 10 août 2011 7
9 juin 2005 à 11:10
Pour consulter le contenu d'une variable : laisser la souris dessus quelques secondes ou ajouter son nom dans la fenêtre Watch
0
sphaxslayer Messages postés 216 Date d'inscription mardi 5 avril 2005 Statut Membre Dernière intervention 17 septembre 2008
9 juin 2005 à 11:12
euh ouais mais la souris sur un tableau de tableaux ca donne psa c'qu'il y a ds l'tableau mais le type gnre "System.Windows..." :(

"Un seul Être vous manque, et tout est dépeuplé..."
0
cs_yoannd Messages postés 305 Date d'inscription lundi 7 janvier 2002 Statut Membre Dernière intervention 10 août 2011 7
9 juin 2005 à 11:17
Le coup de la souris fonctionne très bien pour les variables simples.
As-tu essayé de taper, dans la fenêtre watch, quelque chose du genre
Resultats[1] ?



Un petit conseil : Essaye de maîtriser au mieu ton env. de dev. Tu peux
penser que c'est une perte de temps de voir comment ça marche, mais tu
en gagneras bien plus par la suite.
0
sphaxslayer Messages postés 216 Date d'inscription mardi 5 avril 2005 Statut Membre Dernière intervention 17 septembre 2008
9 juin 2005 à 11:21
nan bah en fait j'ai regarder pendant la compile dans ce que tu dois appeler la fenetre Watch, si c'est ce que je pense je savais m'en servir (un peu :s) : ske j'dois choper c donc Resultats[0] et de la le contenu de la case [0,6], puis [1,6] etc.... pour chacun des Résultats[x]....c'est possible ça? lool

"Un seul Être vous manque, et tout est dépeuplé..."
0
cs_yoannd Messages postés 305 Date d'inscription lundi 7 janvier 2002 Statut Membre Dernière intervention 10 août 2011 7
9 juin 2005 à 11:24
C'est mieux, en effet
0
sphaxslayer Messages postés 216 Date d'inscription mardi 5 avril 2005 Statut Membre Dernière intervention 17 septembre 2008
9 juin 2005 à 11:26
Mais du coup, j'comprends pas comment récupérer le-dit bout d'tableau...sachatn que le premier tableau de Resultats n'est jamais vide, puisque c'est le USER_DATA_0, mais que les 9 suivants peuvent être null...je pense que c sur ca qu'il faut jouer dans la boucle apres la requete, tu en penses quoi ?

"Un seul Être vous manque, et tout est dépeuplé..."
0
cs_yoannd Messages postés 305 Date d'inscription lundi 7 janvier 2002 Statut Membre Dernière intervention 10 août 2011 7
9 juin 2005 à 11:33
j'en sais rien, mais ce qui est sûr, c'est qu'il est pas difficile de tester si une valeur est nulle ou non...
0
Rejoignez-nous