Transposition sous ACCESS 2003 /

Résolu
le DJ1 Messages postés 3 Statut Membre -  
le DJ1 Messages postés 3 Statut Membre -
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

BzhRico
 
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
Le DJ1
 
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 Statut Membre
 
Voir mon message précédent
0