IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Requêtes et SQL. Discussion :

Requete SQL Mise a jour table issu d'un txt


Sujet :

Requêtes et SQL.

  1. #1
    Membre à l'essai
    Inscrit en
    Juillet 2008
    Messages
    10
    Détails du profil
    Informations forums :
    Inscription : Juillet 2008
    Messages : 10
    Points : 10
    Points
    10
    Par défaut Requete SQL Mise a jour table issu d'un txt
    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.

    Et la, je suis encore en train de faire des essais....

  2. #2
    Membre à l'essai
    Inscrit en
    Juillet 2008
    Messages
    10
    Détails du profil
    Informations forums :
    Inscription : Juillet 2008
    Messages : 10
    Points : 10
    Points
    10
    Par défaut
    A partir d'un code récupérer je l'ai adapté.
    j'obtient la mise a jour des donnée manquantes mais je n'arrive pas a écraser, je ne sais pas pourquoi...
    bon je vais essayer champs par champs. au pire...


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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
    Private Sub Commande0_Click()
    On Error GoTo Err_Commande0_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 = "TEMPO"
    NomTable2 = "TB_Test"
    Set oRst1 = odb.OpenRecordset(NomTable1)
    Set orst2 = odb.OpenRecordset(NomTable2)
    While Not oRst1.EOF
      Insertion oRst1, orst2
      oRst1.MoveNext
    Wend
    If orst2.EOF Then Copier oRst1, orst2
    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"
    Exit_Commande0_Click:
        Exit Sub
     
    Err_Commande0_Click:
        MsgBox err.Description
        Resume Exit_Commande0_Click
     
    End Sub
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    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
    Sub Copier(oRst1 As DAO.Recordset, orst2 As DAO.Recordset)
    On Error GoTo err
      Dim Fld As DAO.Field
        orst2.Edit
        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

  3. #3
    Membre à l'essai
    Inscrit en
    Juillet 2008
    Messages
    10
    Détails du profil
    Informations forums :
    Inscription : Juillet 2008
    Messages : 10
    Points : 10
    Points
    10
    Par défaut
    Bon et bien la réponse est trouvée.
    Enfin...




    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

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [MySQL] Requete de mise a jour sur deux table
    Par runcafre91 dans le forum PHP & Base de données
    Réponses: 1
    Dernier message: 22/02/2010, 10h17
  2. [AC-2003] Mise a jour table selon résultat requete
    Par toine38 dans le forum Requêtes et SQL.
    Réponses: 2
    Dernier message: 26/11/2009, 13h43
  3. Requete SQL mise à jour
    Par dodo91 dans le forum Langage SQL
    Réponses: 2
    Dernier message: 02/06/2009, 09h50
  4. pbm de mise a jour table
    Par khier dans le forum Bases de données
    Réponses: 2
    Dernier message: 20/09/2005, 00h08
  5. Plantage SQL Server sur requete de mise a jour
    Par Laurent_75000 dans le forum MS SQL Server
    Réponses: 2
    Dernier message: 02/09/2005, 10h00

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo