Comment puis-je supprimer une table dans Access avec VBA?
Ce que je suis en train de faire, tandis que, dans Excel, à l'utilisation de VBA pour envoyer des données à une table Access. J'ai été capable de le faire, mais j'ai un petit hoquet. Avant de me repousser les données d'accès, je veux effacer les données actuelles sur la table Access, de sorte que lorsque les nouvelles données à partir d'Excel arrive, il est le seul de données dans la table Access. Je ne sais vraiment pas comment écrire du code pour l'Accès depuis la classe a été sur VBA pour Excel. J'ai essayé plusieurs approches différentes et à chaque fois ça ne fonctionne pas. Par exemple, le code qui semble comme il se doit le travail est
DoCmd.RunSQL "DELETE tblName.* FROM CoversheetTableFourthAttempt
mais j'obtiens une erreur me disant de définir un objet.
Si vous pouviez m'aider avec cela, je voudrais vraiment appricate il
J'ai mis mon code ci-dessous pour référence.
Sub AccessFourthMonth()
Dim cn As ADODB.Connection, rs As ADODB.Recordset, r As Long
' connect to the Access database
Set cn = New ADODB.Connection
cn.Open "Provider=Microsoft.Jet.OLEDB.4.0; " & _
"Data Source=C:\Users\Kent\Documents\MBA\Winter 2009 Semester\MBA 614\Final Project\shilded\testdatabase.mdb"
' open a recordset
Set rs = New ADODB.Recordset
rs.Open "CoversheetTableFourthAttempt", 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("Project") = Range("A" & r).Value
.Fields("Description") = Range("B" & r).Value
.Fields("Amount") = Range("C" & r).Value
.Fields("Date") = Range("D" & 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
OriginalL'auteur | 2009-04-18
Vous devez vous connecter pour publier un commentaire.
Essayer
Cet article pourrait vous intéresser: L'exécution des Instructions SQL dans du Code VBA
OriginalL'auteur Mitch Wheat
Essayez les opérations suivantes à partir d'Excel:
OriginalL'auteur dsteele
DoCmd est interne à l'Accès de l'application et n'est pas reconnu par l'application Excel.
Approche Simple à votre problème est de tirer de la suppression de la requête à partir d'Excel lui-même.
Ajouter cette partie après votre cn.Open "Provider.. en ligne
Cela devrait vider la table avant la prochaine partie qui remplit les données s'exécute.
OriginalL'auteur Adarsha
Votre
DoCmd
approche a deux problèmes. Vous avez utilisé un devis pour démarrer une chaîne de caractères, mais ne comprend pas un cours de clôture. Mais même avec le citant, votreDoCmd
ne fonctionne pas car Excel ne sait pas que CoversheetTableFourthAttempt est le nom d'une table dans une base de données Access.Vous avez montré que vous pouvez réussir à créer un ADO de connexion à votre base de données Access. Donc, ma suggestion est d'utiliser le
Execute
méthode de l'objet de connexion pour l'exécution de votre SQL de tresorerie:Enfin, visite de Problème des noms et des mots réservés dans l'Accès de comprendre pourquoi Date, Description, et Projet ne sont pas de grands choix pour l'Accès à des noms de champ.
OriginalL'auteur HansUp