Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

Importation donnée dans MS Acces avec la méthode ADODB.Connection

Soleil11

XLDnaute Occasionnel
Bonjour le forum,

J'utilise le code ci-dessous afin d'importer des données d'un fichier excel à une table MS Access. Mes connaissance sont limitées sur la méthode ADODB, est-il possbile de modifier ce code afin qu'il élimine les données existante de la table "NPDO_test" avant d'importer les nouvelles dans la même table ?

J'ai essayé d'introduire la ligne de code sql = "Delete * from NPDI_test" mais cela n'a pas l'aire de fonctionnner.


Code:
Sub TransferNPDIdata()

' exports data from the active worksheet to a table in an Access database
Dim cn As ADODB.Connection, rs As ADODB.Recordset, r As Long, sql As String  
  ' connect to the Access database
    Set cn = New ADODB.Connection
    'cn.Open "Microsoft.ACE.OLEDB.12.0;User ID=Admin;Data Source=N:\05 - NBS CSS\PFC\BTC (Eric)\Gtime structure.accdb;"
    cn.Open "Provider=Microsoft.ACE.OLEDB.12.0;User ID=Admin;Data Source=N:\05 - NBS CSS\PFC\BTC (Eric)\Gtime structure.accdb;Persist Security Info=False"
   '=======>Ajouter sql = "Delete * from NPDI_test"
    ' open a recordset
    Set rs = New ADODB.Recordset
    rs.Open "NPDI_test", cn, adOpenKeyset, adLockOptimistic, adCmdTable
    ' all records in a table
    r = 2 ' the start row in the worksheet
    Do While Len(Range("A" & r).Formula) > 0
    ' repeat until first empty cell in column A
        With rs
            .AddNew ' create a new record
            ' add values to each field in the record
            .Fields("ID") = Range("A" & r).Value
            .Fields("Name") = Range("B" & r).Value
            .Fields("Project Manager") = Range("C" & r).Value
            .Fields("Responsible Stream") = Range("D" & r).Value
            .Fields("Accountable Entity") = Range("E" & r).Value
            .Fields("Product Category") = Range("F" & r).Value
            .Fields("Market or Region") = Range("G" & r).Value
            .Fields("Overall Project Status") = Range("H" & r).Value
            .Fields("status") = Range("I" & r).Value
            .Fields("Next Gate") = Range("J" & r).Value
            .Fields("Next Gate Status") = Range("K" & r).Value
            .Fields("Planned Decision Date") = Range("L" & r).Value
            .Fields("Escalation") = Range("M" & r).Value
            .Fields("Escalation Reason") = Range("N" & r).Value
            .Fields("Desired Kick-Off date") = Range("O" & r).Value
            .Fields("Planned Kick-Off date") = Range("P" & r).Value
            .Fields("Desired Go-Live date") = Range("Q" & r).Value
            .Fields("Planned Go-Live date") = Range("R" & r).Value
            .Fields("Commited Go-Live date") = Range("S" & r).Value
            .Fields("Approval Category") = Range("T" & r).Value
            .Fields("OPL Activity Type") = Range("U" & r).Value
            .Fields("MultiProject") = Range("V" & r).Value
            .Fields("Originating Source") = Range("W" & r).Value
            .Fields("Type") = Range("X" & r).Value
            
            .Update ' stores the new record
        End With
        r = r + 1 ' next row
    Loop
    rs.Close
    Set rs = Nothing
    cn.Close
    Set cn = Nothing
End Sub

Merci pour votre aide.

Soleil11
 

Jam

XLDnaute Accro
Re : Importation donnée dans MS Acces avec la méthode ADODB.Connection

Salut Soleil11,

Tout d'abord ajoute une variable dans tes déclarations:
Code:
Dim objCommand As Command
Puis là où tu veux effacer le contenu de la table:
Code:
Set objCommand = New Command
With objCommand
    .ActiveConnection = objConnection
End With

'Execute SQL Command
strSQL = "DELETE * FROM NPDI_Test;"
With objCommand
  .CommandText = strSQL
  .CommandType = adCmdText
  .Execute
End with
Voilà, ça devrait le faire. Attention, je n'ai pas testé faute de bdd sous la main.

Ah, n'oublie pas de vider la variable à la fin du traitement comme pour rs et cn.
 

Soleil11

XLDnaute Occasionnel
Re : Importation donnée dans MS Acces avec la méthode ADODB.Connection


*************************

Rebonjour,

J'ai testé et j'ai vidé la variable et cela fonctionne.

Je vous remercie beaucoup pour votre aide.

Soleil11
 

Soleil11

XLDnaute Occasionnel
Re : Importation donnée dans MS Acces avec la méthode ADODB.Connection

Bonjour le forum,

J'ouvre à nouveau cette discussion, car j'aimerais modifié le code ci-dessus toujours dans avec le même méthode ADODB j'aimerai lancé une requête élimination "Q_Accruals" de lignes sur la table "NPDI_Test" comment puis-lancé cette requête élimination.

Merci pour votre aide.

Soleil11
 

Jam

XLDnaute Accro
Re : Importation donnée dans MS Acces avec la méthode ADODB.Connection

Bonjour Soleil,

Peux-tu préciser ta question ?
A quoi correspond Q_Accruals: Une table ? Un champs d'une table ?
S'il s'agit d'une Table et que tu veux faire comme avec NPDI_Test il suffit juste de changer l'instruction SQL
Code:
strSQL = "DELETE * FROM NPDI_Test;"
en
Code:
strSQL = "DELETE * FROM Q_Accruals;"
.
Sinon, ça dépend

Bon courage,
 

Soleil11

XLDnaute Occasionnel
Re : Importation donnée dans MS Acces avec la méthode ADODB.Connection

Bonjour,

Il s'agit de lancer une requête qui élimine des données et j'ai trouvé le code adapté.

' après le cn.open j'ajoute le code ci-dessous et cela exécuter automatiquement la requête.

cn.Q_Accruals

Merci beaucoup de m'avoir répondu.

Soleil11
 
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…