[Résolu][Basic] Tableau et Collection
Modérateur : Vilains modOOs
Règles du forum
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 !
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 !
-
- Membre OOrganisé
- Messages : 88
- Inscription : 19 févr. 2023 09:59
[Résolu][Basic] Tableau et Collection
Bonjour,
Connaissez-vous les différences existant entre un tableau et une collection ? Quand préférer l'un à l'autre ?
Je vous remercie de votre éclairage.
Connaissez-vous les différences existant entre un tableau et une collection ? Quand préférer l'un à l'autre ?
Je vous remercie de votre éclairage.
Dernière modification par GMHB le 24 avr. 2023 06:21, modifié 1 fois.
LibreOffice 7.4.7.2 (x64)
Windows 10
Windows 10
-
- ManitOOu
- Messages : 3031
- Inscription : 02 juil. 2014 17:25
Re: [Basic] Tableau et Collection
Bonjour,
Je n'en fais pas usage au quotidien, mais un des avantages d'une collection est de permettre d’appeler un élément de la collection par son nom : Tout est expliqué dans le livre.
@+
Je n'en fais pas usage au quotidien, mais un des avantages d'une collection est de permettre d’appeler un élément de la collection par son nom : Tout est expliqué dans le livre.
@+
Vous ne pouvez pas consulter les pièces jointes insérées à ce message.
-
- Membre OOrganisé
- Messages : 88
- Inscription : 19 févr. 2023 09:59
Re: [Basic] Tableau et Collection
Merci à vous ,
Cela veut dire que les requêtes n'ont pas besoin d'être codées en SQL. ? Si c'est ça, c'est pas mal du tout. Adieu la connexion à la base, l'infernale danse des guillemets et simples quotes ... ?
Cela veut dire que les requêtes n'ont pas besoin d'être codées en SQL. ? Si c'est ça, c'est pas mal du tout. Adieu la connexion à la base, l'infernale danse des guillemets et simples quotes ... ?
LibreOffice 7.4.7.2 (x64)
Windows 10
Windows 10
-
- IdOOle de la suite
- Messages : 25602
- Inscription : 03 mars 2006 07:45
- Localisation : 127.0.0.1
Re: [Basic] Tableau et Collection
Salut,
Collection est un objet. Une table mémoire (array) est un type de variable.
Suivant le contexte, on utilise l'un ou l'autre.
Quel est le rapport avec le SQL ?
Collection est un objet. Une table mémoire (array) est un type de variable.
Suivant le contexte, on utilise l'un ou l'autre.
Quel est le rapport avec le SQL ?
-
- Membre OOrganisé
- Messages : 88
- Inscription : 19 févr. 2023 09:59
Re: [Basic] Tableau et Collection
Vous avez raison : dans mon enthousiasme à la découverte de l'existence de cette autre forme de tableau, j'ai confondu Table de bdd et Tableau appartenant au langage Basic !
Merci à tous deux
Merci à tous deux
LibreOffice 7.4.7.2 (x64)
Windows 10
Windows 10
-
- IdOOle de la suite
- Messages : 25602
- Inscription : 03 mars 2006 07:45
- Localisation : 127.0.0.1
Re: [Résolu][Basic] Tableau et Collection
Collection est semble t-il un objet conçu pour s'approcher de la compatibilité avec le VBA de Microsoft.
Je viens de faire quelques tests et a priori, je déconseille de l'utiliser.
Simple exemple :
Ce code ne fonctionne pas car l'objet est perdu lors de l'appel suivant.
Mieux vaut utiliser la table mémoire, c'est plus sûr.
Je viens de faire quelques tests et a priori, je déconseille de l'utiliser.
Simple exemple :
Code : Tout sélectionner
Sub Main
oCollec = SetCollec("init","test")
msgbox oCollec.Count & " > " & oCollec("init") 'retourne 1 > test
oCollec = SetCollec("foo","bar", oCollec)
End Sub
Function SetCollec(sProp, sVal, optional oCollec)
if sProp = "init" then
Dim oCollec as new collection
endif
oCollec.Add(sVal, sProp)
SetCollec = oCollec
End function
Mieux vaut utiliser la table mémoire, c'est plus sûr.
-
- PassiOOnné
- Messages : 639
- Inscription : 09 août 2017 22:15
Re: [Résolu][Basic] Tableau et Collection
Hello,
il me paraît bien compliqué ton exemple Dude, l'exemple de Zeguedon qui est un exemple de Bernard Marcelly fonctionne :
il me paraît bien compliqué ton exemple Dude, l'exemple de Zeguedon qui est un exemple de Bernard Marcelly fonctionne :
Code : Tout sélectionner
Sub DictionaryExample
Dim k As String
Dim dico As New Collection
dico.Add("49000", "Angers") ' key = "Angers", Item = "49000"
dico.Add("33000", "Bordeaux")
dico.Add("09000", "Foix")
dico.Add("11350", "Cucugnan")
MsgBox("Number of elements : " & dico.Count)
Do
k = InputBox("Town : ", "Find postal code", "")
if Len(k) = 0 then Exit Do
On Error GoTo inconnu
MsgBox("Postal code : " & dico(k) ) ' the key is not case sensitive
suite1:
On Error GoTo 0
Loop
Do
k = InputBox("Town : ", "Remove postal code", "")
if Len(k) = 0 then Exit Do
On Error GoTo inconnu
MsgBox("Remove Postal code : " & dico(k) ) ' the key is not case sensitive
dico.Remove(k)
suite2:
On Error GoTo 0
Loop
MsgBox("Number of elements : " & dico.Count)
Exit Sub
inconnu:
MsgBox("Town " & k & " is unknown", 16)
Resume Suite1
End Sub
LibreOffice 7.6.2.1 et OpenOffice 4.1.15 sous windows 11
LibreOffice 24.2.0 et OpenOffice 4.1.15 sous Ubuntu 20.04
LibreOffice 24.2.0 et OpenOffice 4.1.15 sous Ubuntu 20.04
-
- IdOOle de la suite
- Messages : 25602
- Inscription : 03 mars 2006 07:45
- Localisation : 127.0.0.1
Re: [Résolu][Basic] Tableau et Collection
L'exemple montre que l'on ne peut pas utiliser cet objet dans une fonction.
-
- Membre lOOyal
- Messages : 35
- Inscription : 17 mars 2012 10:16
Re: [Résolu][Basic] Tableau et Collection
Bien sûr que si ... !L'exemple montre que l'on ne peut pas utiliser cet objet dans une fonction.
Un objet Collection est une variable comme une autre et peut donc servir d'argument ou de paramètre à une fonction.
Pour faire "marcher" ton code, il suffit de remplacer
Code : Tout sélectionner
Dim oCollec As New Collection
Code : Tout sélectionner
Set oCollec = new collection
JPL
Kubuntu 22.04 / LibO 24.2
Access2Base (LibO).
BaseDocumenter extension (LibO)
ScriptForge (LibO) - Documentation on https://help.libreoffice.org/latest/en- ... bPAR=BASIC
Access2Base (LibO).
BaseDocumenter extension (LibO)
ScriptForge (LibO) - Documentation on https://help.libreoffice.org/latest/en- ... bPAR=BASIC
-
- IdOOle de la suite
- Messages : 25602
- Inscription : 03 mars 2006 07:45
- Localisation : 127.0.0.1
Re: [Résolu][Basic] Tableau et Collection
OK j'ai noté qu'au final, il ne fallait pas déclarer mais juste affecter.
Merci
Merci
Si tu passes en mode débogage, tu verras que la déclaration qui est dans un if n'est pas exécutée.
Vous ne pouvez pas consulter les pièces jointes insérées à ce message.
-
- Membre lOOyal
- Messages : 35
- Inscription : 17 mars 2012 10:16
Re: [Résolu][Basic] Tableau et Collection
Ce n"est pas le comportement que j'observe en LO 7.5.
1) avec ton code, la compilation donne le message d'erreur suivant:
Variable oCollec déjà définie
2) après modification du code comme décrit plus haut, l'exécution se déroule normalement.
A la sortie de la Sub Main, la collection contient bien les 2 entrées souhaitées (init/test et foo/bar).
JPL
1) avec ton code, la compilation donne le message d'erreur suivant:
Variable oCollec déjà définie
2) après modification du code comme décrit plus haut, l'exécution se déroule normalement.
A la sortie de la Sub Main, la collection contient bien les 2 entrées souhaitées (init/test et foo/bar).
JPL
Kubuntu 22.04 / LibO 24.2
Access2Base (LibO).
BaseDocumenter extension (LibO)
ScriptForge (LibO) - Documentation on https://help.libreoffice.org/latest/en- ... bPAR=BASIC
Access2Base (LibO).
BaseDocumenter extension (LibO)
ScriptForge (LibO) - Documentation on https://help.libreoffice.org/latest/en- ... bPAR=BASIC