Xavleb
Messages postés21Date d'inscriptionmardi 15 janvier 2008StatutMembreDernière intervention26 janvier 2009
-
30 juil. 2008 à 16:20
Xavleb
Messages postés21Date d'inscriptionmardi 15 janvier 2008StatutMembreDernière intervention26 janvier 2009
-
31 juil. 2008 à 11:27
Bonjour,
Je developpe une application utilisant une base de donnée sql serveur permettant l'adressage ip d'une entreprise. Tout dabord, je fais un select pour ensuite remplir une datatable. Ensuite je voudrais faire une boucle for qui me permette de verifier chaque ligne de ma table jusqu'a la dernière ligne. Et si on trouve une valeur égale à la variable Ipp alors on appel une fonction qui modifie Ipp et on recommence la boucle. Le problème c'est que ma boucle for ne fonctionne pas et je ne sais pas pourquoi. Merci d'avance pour vos réponses. le code est le suivant:
strsql1 = "SELECT T_MATER.ADR_IP FROM T_MATER, T_SS_PLAGE WHERE ADR_DEB_SSP='" & ssp & "' AND T_MATER.ID_SSP=T_SS_PLAGE.ID_SSP"
<?xml:namespace prefix o ns "urn:schemas-microsoft-com:office:office" /??> ' recupération de toutes les @ IP où la sous plage = ssp
objetcommand = New SqlCommand(strsql1)
objetdataadapter = New SqlDataAdapter(objetcommand)
objetcommand.Connection() = con
objetdataadapter.Fill(objetdataset, "T_MATER")
objetdatatable = objetdataset.Tables("T_MATER")
' mettre le contenu dans une datatable
For rownumber 0 To rownumber objetdatatable.Rows.Count - 1
' pour toutes les lignes de ma datatable
If objetdatatable.Rows(rownumber).Item("ADR_IP") = Ipp Then
' psi le contenu de la ligne rownumber
est egal à la variable Ipp (à l'addresse)
LIBRE_MAX
Messages postés1402Date d'inscriptionmardi 1 mai 2007StatutMembreDernière intervention 7 octobre 20126 30 juil. 2008 à 18:48
Salut,
je connais pas trop vb net, mais renseignes toi sur les paramètres de ta connection ou de ton objet Command.
Je crois bien que c' est une question de curseur qui doit être dynamic, si toutefois c' est une question de boucle qui n' avance pas.
<hr />... Y'en a même qui disent qu'ils l'ont vu voler.
Salut je ne te donnerais surement pas la solution mais plusieurs choses me chiffonnent1 ) For rownumber 0 To rownumber objetdatatable.Rows.Count - 1 à remplacer par For rownumber = 0 To objetdatatable.Rows.Count - 1
2) If objetdatatable.Rows(rownumber).Item("ADR_IP") = Ipp Then
cette condition reviendra sans arrêt car tu ne modifies aucun des 2 éléments dans le code qui est déclenché par cette condition
explication = IF A= B then
on ne modifie ni A ni B
end if
Le condition reviendra alors à l'identique et la boucle For tournera sans fin
3) Utiliser un Do Loop qui encadre la boucle (éviter de modifier la variable de boucle)
Dim Trouve as Boolean = False
Do
For ..............
Application.doevents()
if A = B then
traitement de cette condition (faire en sorte que cette condition pour cette ligne ne revienne pas : voir au dessus)
Trouve = True
Exit do ' on sort de la boucle For Next
End If
Next
If Trouve = False Then Exit Do ' on sort de la boucle Do car plus rien à traiter
loop
J'espère que cela t'aidera
La théorie, c'est quand on sait tout et que rien ne fonctionne. La pratique, c'est quand tout fonctionne et que personne ne sait pourquoi.
Xavleb
Messages postés21Date d'inscriptionmardi 15 janvier 2008StatutMembreDernière intervention26 janvier 2009 31 juil. 2008 à 11:27
Merci de vos réponses. Cependant je ne suis pas arrivé à faire foncyionner ma boucle, mais je m'y suis pris autrement, j'ai utiilser la méthode foundrow. Les paramètres de connection étaient bon Libre_max. Sino pour répondre à alain, je modifiait mon paramètre B mais je l'ai pas mis dans le message, car le pb ne venait pas de là. Je pense qu'il venait du fait qu' il n'y a pas d'enregistrement courant pour une datatable,pas de pointeur sur un enregistrement, c'est nous même qui gérons RowNumber, une simple variable qui contient le numéro de l'enregistrement (l'index du DataRow) sur lequel on travaillez. Et je pense que je le gérais mal.