[Résolu][Base]Index hors de la plage définie

Discussions et questions sur tout ce qui concerne la programmation tous langages et tous modules confondus.

Modérateur : Vilains modOOs

Règles du forum
:alerte: Balisage obligatoire dans cette section !
Aidez-nous à vous aider au mieux en balisant correctement votre question : reportez-vous sur les règles de cette section avant de poster !
Istos
NOOuvel adepte
NOOuvel adepte
Messages : 12
Inscription : 16 avr. 2015 11:12

[Résolu][Base]Index hors de la plage définie

Message par Istos »

Bonjour,

J'ai créer une maccro pour pouvoir sélectionné un élément dans une liste en fonction de la liste précédente.
Elle fonctionne mais il y une chose que je ne comprend pas : lorsque je lance le formulaire le message d'erreur suivant apparait :

Valeur ou type de données incorrect(e).
Index hors de la plage définie.


Et me point sur cet élément : var_id_reseau = PysLstT_reseau.SelectedItems(0)
J'ai du passer à coter d'un élément essentiel je pense, mais je ne trouve pas comment corriger mon erreur.

Ci joint la maccro en question :

Code : Tout sélectionner

option explicit

dim PysLstT_reseau as Object , PysLstT_emplacement AS Object

Sub PysOpen(PysEvent)

dim PysContainer  as object, PysConnection as object
dim PysProp(1) as New com.sun.star.beans.PropertyValue 

PysContainer =  PysEvent.Source.Model.Parent.ActiveConnection.Parent.DatabaseDocument.FormDocuments
PysConnection = PysEvent.Source.Model.Parent.ActiveConnection
PysProp(0).Name = "ActiveConnection"
PysProp(0).Value = PysConnection
PysProp(1).Name = "OpenMode"
PysProp(1).Value = "open"
PysContainer.loadComponentFromURL("T_reseau","_blank",0,PysProp())

end sub

sub PysRefresh
ThisComponent.DrawPage.Forms.getByName("Standard").getByName("lbox_reseau").refresh
end sub

sub PysMajListe


DIM var_id_reseau as integer

PysLstT_reseau = ThisComponent.DrawPage.Forms.getByName("Standard").getByName("lbox_reseau")
PysLstT_emplacement = ThisComponent.DrawPage.Forms.getByName("Standard").getByName("lbox_emplacement")

var_id_reseau = PysLstT_reseau.SelectedItems(0)

PysLstT_emplacement.ListSource() = array("SELECT nom_dossier, id_emplacement FROM T_emplacement WHERE id_reseau =" & var_id_reseau)
PysLstT_emplacement.refresh 

end sub

sub PysActualisation

dim ExoTrav

PysMajListe

ExoTrav= ExoRechercheDansTableau(PysLstT_emplacement.ValueItemList, PysLstT_emplacement.boundField.Value)

if ExoTrav <> "#N/A" then
	PysLstT_emmplacement.SelectedItems = array(ExoTrav)
else
	PysLstT_emplacement.SelectedItems = array(0)
end if

end sub

Function ExoRechercheDansTableau(ExoTablo, ExoRech)
dim i as integer

ExoRechercheDansTableau = "#N/A"

for i = lbound(ExoTablo) to ubound(ExoTablo)
	if ExoTablo(i)= ExoRech then
		ExoRechercheDansTableau = i
		exit for
	end if
next i

end function
Vous ne pouvez pas consulter les pièces jointes insérées à ce message.
Dernière modification par Istos le 30 avr. 2015 17:46, modifié 1 fois.
Libre office 4 windows 7
Avatar de l’utilisateur
Dude
IdOOle de la suite
IdOOle de la suite
Messages : 26195
Inscription : 03 mars 2006 07:45
Localisation : 127.0.0.1

Re: [Base]Index hors de la plage définie

Message par Dude »

Salut,

Premièrement, as-tu fait deux minutes de recherche sur cette erreur ?
Deuxième point, ce genre de question peut être résolue en utilisant l'incontournable XRay.

L'interrogation du contrôle lbox_reseau montre que tu passes la requête SQL :

Code : Tout sélectionner

select "reseau" From "T_reseau"
Quel est son résultat ?
_base.png
Maintenant si je regarde ce que contient PysLstT_reseau, je vois que la propriété SelectedItems est vide :
_macro.png
Normal puisqu'il ne s'agit pas d'entier mais de caractère, il faut donc interroger StringItemList qui renvoie un :
Tableau : T( 0 To 2 ) As string  
(0)       | string : "V"
(1)       | string : "W"
(2)       | string : "X"
Le résultat logique de la requête SQL précédente.
Vous ne pouvez pas consulter les pièces jointes insérées à ce message.
Istos
NOOuvel adepte
NOOuvel adepte
Messages : 12
Inscription : 16 avr. 2015 11:12

Re: [Base]Index hors de la plage définie

Message par Istos »

Non bien sur je me suis dit que ce serait tellement plus sympa si les bénévoles faisaient tout le travail à ma place...

Cela dit, merci pour ta réponse, j'ai corrigé mon erreur. Cela dit je n'ai fais que déplacé l'erreur puisque maintenant il me pointe vers :

Code : Tout sélectionner

ExoTrav= ExoRechercheDansTableau(PysLstT_emplacement.ValueItemList, PysLstT_emplacement.boundField.Value)


avec ce message :

"Erreur d'exécution BASIC.
Variable d'objet non définie
"

En ce qui concerne Xray, étant complétement novice en thermes de maccros, je n'arrive simplement pas à l'utiliser pour le moment :/
Libre office 4 windows 7
Avatar de l’utilisateur
Dude
IdOOle de la suite
IdOOle de la suite
Messages : 26195
Inscription : 03 mars 2006 07:45
Localisation : 127.0.0.1

Re: [Base]Index hors de la plage définie

Message par Dude »

Istos a écrit :Cela dit je n'ai fais que déplacé l'erreur puisque maintenant il me pointe vers
Il te suffit de procéder de la même manière que dans ma réponse précédente :
Dude a écrit :ce genre de question peut être résolue en utilisant l'incontournable XRay.
J'ai pris 15 min. de mon temps pour te rédiger un pas-à-pas détaillé.
Il te suffit de refaire la même chose en inspectant la variable qui renvoie l'erreur.
Istos a écrit :En ce qui concerne Xray, étant complétement novice en thermes de maccros, je n'arrive simplement pas à l'utiliser pour le moment
Cette phrase montre que tu n'as pas lu le lien que je t'ai donné.
Il y a une documentation qui accompagne cet outil pour s'en servir.
Istos a écrit :j'ai corrigé mon erreur
Balisage [Résolu] à poser en conséquence.
Istos
NOOuvel adepte
NOOuvel adepte
Messages : 12
Inscription : 16 avr. 2015 11:12

Re: [Base]Index hors de la plage définie

Message par Istos »

Bonsoir,

Oui et je vous suis vraiment reconnaissante d'avoir pris du temps pour m'aider !
Dude a écrit :Cette phrase montre que tu n'as pas lu le lien que je t'ai donné.
Il y a une documentation qui accompagne cet outil pour s'en servir.
Non cela voulais simplement dire que je connaissais Xray, mais que je n'arrivais pas à l'utiliser correctement.
Contrairement à votre supposition j'ai vu votre lien et je l'ai lu, je suis maintenant en train de tenter d'apprivoiser la bête :)
Navrée si je me suis mal exprimée ;)

en ce qui concerne le "déplacement d'erreur" je voulais simplement faire un "état des lieux" après avoir corrigé la première. Mais oui je vais mettre la balise "Résolue" de ce pas !

Encore merci pour votre aide :)
Libre office 4 windows 7