Précédent   Forum des professionnels en informatique > Logiciels > Microsoft Office > Access > VBA Access
VBA Access Le forum pour les questions relatives au code VBA sous Access, et à son environnement de développement VBE.
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 11/07/2011, 19h17   #1
Invité de passage
 
Inscription : février 2008
Messages : 19
Détails du profil
Informations personnelles :
Localisation : France, Paris (Île de France)

Informations forums :
Inscription : février 2008
Messages : 19
Points : 1
Points : 1
Envoyer un message via MSN à diombo
Par défaut Problème avec Split

bonjour,
Je suis entrain de récupérer des données sous forme de liste (liste identifiée par des balises) pour les mettres dans une autre table. Et j'aimerai que chaque élement de la liste contenu dans l'enregistrement devient lui même un enregistrement.
Exemple du contenu du champ (tSr.Fields("sr_nom")) qui est une liste de référence:
Citation:
<ul><li>ACGIH, American Conference of Governmental Industrial Hygienists<br /><link http://www.acgih.org/TLV/>http://www.acgih.org/TLV/</link></li></ul>
<ul><li>Annexe VI (Classification et étiquetage harmonisés pour certaines substances dangereuses) du règlement (CE) n° 1272/2008 du 16 décembre 2008 relatif à la classification, à l'étiquetage et à l'emballage des substances et des mélanges</li></ul>
<ul><li>ATSDR, Agency for Toxic Substances and Disease Registry,Toxicological profile for 1,3-Butadiene (mise à jour avril 1993)<br /><link http://www.atsdr.cdc.gov/>http://www.atsdr.cdc.gov/</link></li></ul>
<ul><li>CHRIS database, Chemical Hazards Response Information System</li></ul>
<ul><li>CIRC, Centre International de Recherche sur le Cancer, Monographies Vol 71, Vol 97 (2008)<br /><link http://monographs.iarc.fr/FR/Classification>http://monographs.iarc.fr/FR/Classification</link></li></ul>
<ul><li>ESIS, European chemical substances information system<br /><link http://ecb.jrc.ec.europa.eu/esis/>http://ecb.jrc.ec.europa.eu/esis/</link> </li></ul>
<ul><li>INERIS, Fiche de données toxicologiques et environnementales : 1,3-butadiène (mise à jour 18/12/2006) <br /><link http://www.ineris.fr/substances/fr/>http://www.ineris.fr/substances/fr/</link></li></ul>
<ul><li>INRS, Fiche toxicologique N° 241 (FT 241), 1,3-Butadiène&nbsp;(mise à jour 2002)<br /><link http://www.inrs.fr/>http://www.inrs.fr/</link></li></ul>
<ul><li>IPCS INCHEM database, International Programme on Chemical Safety, Environmental Health Criteria<br /><link http://www.inchem.org/>http://www.inchem.org/</link> </li></ul>
<ul><li>NIOSH, Fiche Internationale de Sécurité Chimique n° 0017 (mise à jour 2000)<br /><link http://www.cdc.gov/niosh/ipcsnfrn/nfrnicsc.html>http://www.cdc.gov/niosh/ipcsnfrn/nfrnicsc.html</link> </li></ul>
<ul><li>US EPA, United States Environmental Protection Agency <br /><link http://www.epa.gov/>http://www.epa.gov/</link> </li></ul>
Je prend comme séparteur la balise "</Li>" sachant que j'obtient les types type d'erreur quelque soit le séparateur.

Le code que j'utilise est le suivant:
Code :
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
Set tSr = db.OpenRecordset("select * from tmp_sources ", dbOpenDynaset)
Set Sr = db.OpenRecordset("source_tmp")
tSr.MoveFirst
 
Do Until tSr.EOF
    Dim monTab() As String
    Dim i As Integer, j As Integer
 
    monTab = Split(tSr.Fields("sr_nom"), "</li>")
 
    For i = 0 To UBound(monTab)
        For j = 0 To LBound(monTab)
            Sr.AddNew
            Sr.Fields("sr_id") = "999" & numeroSr
            Sr.Fields("sr_type") = 1
            Sr.Fields("sr_nom") = monTab(j)
            Sr.Fields("sr_indice_conf") = 1
            Sr.Fields("sr_agent") = -1
            Sr.Fields("sr_contact") = -9
            Sr.Fields("sr_reference") = monTab(j)
            Sr.Fields("sr_wsys_sb_nom") = tSr.Fields("sb_nom")
 
            Sr.Fields("sr_wsys_user") = "adminCMR"
            Sr.Fields("sr_wsys_date") = Date
            Sr.Update
            numeroSr = numeroSr + 1
        Next j
    Next i
DoEvents
tSr.MoveNext
Loop
Le programme trourne. Cependant mes résultats ne sont pas correctes car c'est la première valeur issue de la séparation qui est enregistrée autant de fois que qu'il a ya de ligne de tableau.
Merci de votre aide
diombo est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 12/07/2011, 08h11   #2
Invité de passage
 
Inscription : février 2008
Messages : 19
Détails du profil
Informations personnelles :
Localisation : France, Paris (Île de France)

Informations forums :
Inscription : février 2008
Messages : 19
Points : 1
Points : 1
Envoyer un message via MSN à diombo
Bonjour,
J'ai pu résoudre le problème.
En effet j'ai modifier la chaine séparateur.
Le code est :
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
monTab = Split(tSr.Fields("sr_nom"), "<ul><li>")
 
    For i = 1 To UBound(monTab)
            Sr.AddNew
            Sr.Fields("sr_id") = "999" & numeroSr
            Sr.Fields("sr_type") = 1
            Sr.Fields("sr_nom") = monTab(i)
            Sr.Fields("sr_indice_conf") = 1
            Sr.Fields("sr_agent") = -1
            Sr.Fields("sr_contact") = -9
            Sr.Fields("sr_reference") = monTab()
            Sr.Fields("sr_wsys_sb_nom") = tSr.Fields("sb_nom")
 
            Sr.Fields("sr_wsys_user") = "adminCMR"
            Sr.Fields("sr_wsys_date") = Date
            Sr.Update
            numeroSr = numeroSr + 1
    Next i
diombo est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 06h21.


 
 
 
 
Partenaires

Hébergement Web