Access MAJ table par une autre

artamys Messages postés 127 Statut Membre -  
Frappe Misere Messages postés 2702 Statut Membre -
Bonjour,

J'ai une Table A avec 25 Champs. Il existe un Champs Clé Primaire numérique non numéro automatique.
Cette clé primaire est un numéro de demande.
L'objectif est de mettre a jour cette table A (outil interne de service) via un fichier txt qui sera chargé dans un table TEMPO issu de l'extraction hebdomadaire d'un outil WEB mondial.
La table A contient un Champ de plus que l'extraction txt. Ce champs est le numero de projet auquel est rattaché le numero de la demande.

L'objectif de la requete est donc double :
1. Mise a jour : Ecraser Tous les champs existant en fonction de la cle primaire sauf le champs numero de projet.
2 Charger les nouvelles demandes qui seront ensuite affecté par les utilisateurs.

Je fais des essais avec du VBA et SQL.

je peux charger les donner manquante.
MAis je n(arrive pas a écraser les colonnes existantes.
A voir également:

7 réponses

Frappe Misere Messages postés 2702 Statut Membre 568
 
verifie que le format des données est bien le meme.
0
artamys Messages postés 127 Statut Membre 7
 
LES Données sont identiques critères par critères, Même champs, Même nom...
Ce qui me manque c'est le code VBA ou la requete sql pour écraser. les colonnes existantes en fonction de la cle primaire. et en gardant les données de la colonne supplémentaire.
0
Frappe Misere Messages postés 2702 Statut Membre 568
 
une requete update comprenant tes 2 tables et seulement les champs que tu veux écraser.
je ne vois pas en quoi cela te pose un probleme ?
0
artamys Messages postés 127 Statut Membre 7
 
Merci, Sir,
Je ne suis pas expert access, moi je suis expert excel, et je ne connaissais pas cette fonctionalité. voici le code pour ceux qui auront besoin.





Sub reporting_Click()


Dim NomTable1 As String, NomTable2 As String
Dim oRst1 As DAO.Recordset, orst2 As DAO.Recordset
Dim odb As DAO.Database
Dim Message As String
Set odb = CurrentDb
NomTable1 = "TB_DEI"
NomTable2 = "TB_Tempo"
Set oRst1 = odb.OpenRecordset(NomTable1)
Set orst2 = odb.OpenRecordset(NomTable2)
While Not orst2.EOF
Insertion orst2, oRst1
orst2.MoveNext
Wend
If Not oRst1.EOF Then oRst1.MoveLast
Message = "Opération terminée" & vbCrLf & vbCrLf & _
"La table source comportait : " & oRst1.RecordCount & " enregistrement(s)," & vbCrLf & _
"la table de destination en comporte " & orst2.RecordCount
MsgBox Message, vbInformation, "MAJ terminée"

Dim db As DAO.Database
Set db = CurrentDb()

' Exécution de la requête
db.Execute "UPDATE TB_TEMPO INNER JOIN TB_DEI ON TB_TEMPO.NumDEI = TB_DEI.NumDEI SET TB_DEI.ObjetDEI = TB_TEMPO.ObjetDEI, TB_DEI.DateCreation = TB_TEMPO.DateCreation, TB_DEI.DemandeurDEI = TB_TEMPO.DemandeurDEI, TB_DEI.DirectionDEI = TB_TEMPO.DirectionDEI, TB_DEI.CodeAnalytiqueDEI = TB_TEMPO.CodeAnalytiqueDEI, TB_DEI.ValideurDEI = TB_TEMPO.ValideurDEI, TB_DEI.CamLeader = TB_TEMPO.CamLeader, TB_DEI.NatureDEI = TB_TEMPO.NatureDEI, TB_DEI.ThemeDEI = TB_TEMPO.ThemeDEI, TB_DEI.SousThemeDEI = TB_TEMPO.SousThemeDEI, TB_DEI.EtatDEI = TB_TEMPO.EtatDEI, TB_DEI.PrioriteDEI = TB_TEMPO.PrioriteDEI, TB_DEI.DateMOA = TB_TEMPO.DateMOA, TB_DEI.DetailDEI = TB_TEMPO.DetailDEI, TB_DEI.ChargesGlobalesDEI = TB_TEMPO.ChargesGlobalesDEI, TB_DEI.JoursRealisesDEI = TB_TEMPO.JoursRealisesDEI, TB_DEI.RafDEI = TB_TEMPO.RafDEI, TB_DEI.AuteurCreation = TB_TEMPO.AuteurCreation, TB_DEI.DateAcceptation = TB_TEMPO.DateAcceptation, TB_DEI.AuteurAcceptation = TB_TEMPO.AuteurAcceptation, TB_DEI.DateValidation = TB_TEMPO.DateValidation;"
Debug.Print "Enregistrement affectés = " & db.RecordsAffected
MsgBox (" Mise à Jour Terminée")
db.Close
End Sub



Sub Insertion(oRst1 As DAO.Recordset, orst2 As DAO.Recordset)
On Error GoTo err
Dim Fld As DAO.Field
orst2.AddNew
For Each Fld In oRst1.Fields
If (Fld.Attributes And dbAutoIncrField) = 0 Then
orst2.Fields(Fld.Name).Value = Fld.Value
End If
Next Fld
orst2.Update
err:
End Sub
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Frappe Misere Messages postés 2702 Statut Membre 568
 
là tu utilises du code mais tu pouvais aussi passer par une requete, avec l'assistant ça aurait été encore plus rapide.
mais tant que ça fonctionne...
0
artamys Messages postés 127 Statut Membre 7
 
Oui tu as raison mais comme c'est pour un service il ne faut que des boutons et des actions qu'ils ne puissent pas toucher ensuite. j'ai préféré sécuriser.

Merci beaucoup de ton aide en tout cas.
0
Frappe Misere Messages postés 2702 Statut Membre 568
 
juste pour info, il est possible d'associer une requete à un bouton.
bonne journée.
0