Transposition sous ACCESS 2003 /

Résolu/Fermé
le DJ1 Messages postés 3 Date d'inscription lundi 23 juillet 2007 Statut Membre Dernière intervention 4 février 2008 - 16 août 2007 à 14:18
le DJ1 Messages postés 3 Date d'inscription lundi 23 juillet 2007 Statut Membre Dernière intervention 4 février 2008 - 18 août 2007 à 09:14
Bonjour,

J'ai une base de données access 2003 contenant des coordonnées de points en longitude et latitude que je veux utiliser dans ARCGIS 9.2 comme fichier de points qui va me servir par la suite pour créer des routes:
Le format de ma base est :

Champ1, Champ2, X1, Y1, X2,Y2,.........Xi,Yi

i va de 1 à 260 ... Donc j'ai 262 variables

Xi et Yi représentent les coordonnées des points

SEQi est la séquence 1,2,3, ....i

Je veux avoir une nouvelle base avec le format suivant:

Champ1, Champ2, X1, Y1, SEQ1
Champ1, Champ2, X2, Y2, SEQ2
....
Champ1, Champ2,Xi,Yi,SQi,SEQi

...........................
Je peux le faire en SQL en répétant la commande ci dessous 260 fois et en changeant i de 1 à 260.

"INSERT INTO TableSource ( Champ1, Champ2, X,Y, SEQ, i AS Seq FROM TableOrigine;"

Quelqu'un peut m'aider avec un code qui automatise cette tâche répétitive dans ACCESS.



Merci d'avance

Le DJ1

2 réponses

Bonjour, tu pourrais essayer de faire cette boucle VBA :

/!\ Vérifier que "Microsoft DAO x.x Object library" est activé dans le menu Outils/Référence...

With CurrentDb.OpenRecordset("SELECT * FROM TableOrigine")
  Do Until .EOF
    For i = 1 To 260
      CurrentDb.Execute "INSERT INTO TableSource ( Champ1, Champ2, " _
        & "X" & i & ", Y" & i & ", SEQ, " & i & " AS Seq " _
        & "FROM TableOrigine WHERE {clé}=" & !{Clé} & ";"
    Next i
    .MoveNext
  Loop
  .Close
End With


En remplacent le contenu avec les "{ ... }" des noms champs clés,
toute la table sera convertie automatiquement, ou ceux que tu veux avec une close WHERE dans le with

NB : si la valeur 'Seq' de TableSource n'est pas numérique, il faut mettre 'i' entre simple cote
Et donc remplacer la portion de SQL comme cela : ...SEQ, '" & i & "' AS...
0
Grand Merci BzhRIco,
Je m'excuse du temps pris pour te répondre. J'ai tenté de mettre en place le code. Enfin j'y arrive.
Voilà le code repris avec le nom exact de mes variables qui marche bien.

With CurrentDb.OpenRecordset("SELECT * FROM TableOrigine")
Do Until .EOF
For i = 1 To 260
CurrentDb.Execute "INSERT INTO TableSource ( Route_id, TER, GEST, DATITINE, N_J, "_
& "GTR, ANIM, UNIT, SEQ_in_route )"_
& "SELECT TableOrigine.Route_Id, TableOrigine.TER, TableOrigine.GEST,"_
& "TableOrigine.DATITINE, TableOrigine.N_J , TableOrigine.GTR, TableOrigine.ANIM, "_
& "TableOrigine.UNI" & i & " &"," & i & "AS Seq" _
& "FROM TableOrigine" & ";"
Next i
.MoveNext
Loop
.Close
End With
0
le DJ1 Messages postés 3 Date d'inscription lundi 23 juillet 2007 Statut Membre Dernière intervention 4 février 2008
18 août 2007 à 09:14
Voir mon message précédent
0