![]() |
| Le forum de référence en programmation et développement. Articles, cours et tutoriels du débutant au chef de projet et DBA confirmé. | |||||||
|
|||||||
| Contribuez Access : Vos contributions. Postez ici vos codes sources, conseils, astuces et autres propositions. Ce forum n'est pas un forum technique mais destiné aux contributions pour www.developpez.com |
![]() |
|
|
Outils de la discussion |
|
|
#1 (permalink) | |||
|
Expert Confirmé Sénior
![]() |
Bonjour à tous,
suite à plusieurs topics sur le sujet, je laisse ici mon code qui permet de manipuler les tables d'une base. Plusieurs approches, selon les choix de programmation des uns et des autres.. Ces fonctions retournent Vrai si elles ont bien fonctionné, elles fonctionnent dans la base en cours. Citation:
Code :
'***************************** 'fonction de récupération de la liste des tables d'une base par les propriétés VBA 'input = nom de la base 'output = booleen (debug.print) '***************************** Function ListeTablesBase(PathBase As String) As Boolean Dim Db As DAO.Database Dim tempo As TableDef Set Db = DBEngine.OpenDatabase(PathBase) Debug.Print "******LISTE DES TABLES DE LA BASE " & Db.Name & "******" For Each tempo In Db.TableDefs Debug.Print "---------------------------------------------------" Debug.Print tempo.Name Debug.Print tempo.connect Next Debug.Print "********* FIN LISTE *********" End Function Citation:
Code :
Function ViderTable(NomTable As String) As Boolean On Error GoTo fin CurrentDb.Execute "DELETE * FROM [" & NomTable & "];" ViderTable = True Exit Function fin: ViderTable = False End Function Citation:
Code :
Function DetruireTable2(NomTable As String) As Boolean On Error GoTo fin DoCmd.DeleteObject acTable, NomTable DetruireTable2 = True Exit Function fin: DetruireTable2 = False End Function Code :
Function DetruireTable(NomTable As String) As Boolean On Error GoTo fin CurrentDb.TableDefs.Delete NomTable DetruireTable = True Exit Function fin: DetruireTable = False End Function Code :
Function DetruireTable3(NomTable As String) As Boolean On Error GoTo fin CurrentDb.Execute "DROP TABLE [" & NomTable & "]" DetruireTable3 = True Exit Function fin: DetruireTable3 = False End Function
__________________
Piou-Piou Poussin Developpeur Pas de question technique par MP, je ne réponds pas ![]() Mon perso ? Une vraie brute Dernière modification par jpcheck ; 04/02/2008 à 17h42 |
|||
|
|
|
|
|
#3 (permalink) |
|
Expert Confirmé Sénior
![]() |
certes, certes...
On m'avait conseillé de l'ajouter dans la partie contribuez...
__________________
Piou-Piou Poussin Developpeur Pas de question technique par MP, je ne réponds pas ![]() Mon perso ? Une vraie brute |
|
|
|
|
|
#4 (permalink) |
|
Expert Confirmé
![]() Date d'inscription: avril 2006
Localisation: Perpignan
Âge: 36
Messages: 1 564
|
étant l'intiateur du conseille, je voudrais préciser qq point:
. poster ces codes (ceux de suppression) à chaques fois que qq'un avait besoin ne me paraissait pas utile. . d'après mes recherches, la faq contient que deux fonctions: Comment supprimer une table avec ADO ? Code :
Function SupprimerTable(NomTable As String) As Boolean On Error GoTo err Dim MCat As New ADOX.Catalog Set MCat.ActiveConnection = CurrentProject.Connection MCat.Tables.Delete (NomTable) SupprimerTable = True err: Set MCat = Nothing End Function Code :
Function Delete_Table(NomTable As String) As Boolean Dim db As DAO.Database Dim tbl As DAO.TableDef Delete_Table = False Set db = CurrentDb For Each tbl In db.TableDefs If tbl.Name = NomTable Then db.TableDefs.Delete (tbl.Name) Delete_Table = True Else Delete_Table = False End If Next tbl End Function . je trouvais l'idée d'énumérer les différentes possibilités de suppression intéressante mais ce que j'attendais surtout c'était d'expliquer leur différence qui aurait apporter ce + qui manque à la faq. |
|
|
|
|
|
#5 (permalink) | |
|
Membre Expert
![]() Date d'inscription: juin 2003
Localisation: Sénégal
Messages: 1 162
|
Citation:
Je proposes un code de suppression des enregistrements spécifiques dans n'importe quelle table Code :
Public Sub SupprimeEnreg(ByVal MaTable As String, ByVal MaCle1 As String, ByVal MaCle2 As String, _ ByVal MaValeur1 As Integer, ByVal MaValeur2 As Integer, Optional MaCle3 As String, Optional MaValeur3 As Integer) '-------------------------------------------------------------------------------------------- 'Objectif : Supprimer des enregistrements spécifiques dans une table 'Méthodologie : Construire une requête de suppression SQL dynamique sur une table passée en paramétre ' ainsi que les clés et valeurs de l'enregistrement à supprimer '-------------------------------------------------------------------------------------------- Dim msql As String If IsNull(MaCle2) Or MaCle2 = "" Then ' si le 2éme critère n'est pas renseigné msql = "Delete * From " & MaTable & " Where " & MaCle1 & " = " & MaValeur1 Else If IsNull(MaCle3) Or MaCle3 = "" Then ' si le 3éme critère n'est pas renseigné msql = "Delete * From " & MaTable & " Where " & MaCle1 & " = " & MaValeur1 & " and " & MaCle2 & " = " & MaValeur2 Else msql = "Delete * From " & MaTable & " Where " & MaCle1 & " = " & MaValeur1 & " and " & MaCle2 & " = " & MaValeur2 & " and " & MaCle3 & " = " & MaValeur3 End If End If DoCmd.SetWarnings False DoCmd.RunSQL (msql) DoCmd.SetWarnings True End Sub 1 - Supprimer la commande N°5 de la table T_Commande Code :
call SupprimeEnreg("T_Commande","NumCommande","",5,0,"",0)
Code :
call SupprimeEnreg("T_DetailCommande","NumCommande","CodeProduit",5,18,"",0)
__________________
Amicalement |
|
|
|
|
|
|
#6 (permalink) | |
![]() Date d'inscription: mars 2004
Messages: 618
|
Citation:
Question plus intéressante qu'il n'y paraît, mais qui, à mon avis, n'a pas sa place ICI, mais plutôt dans un débat, voire un micro-projet commun. Je m'explique : - ma 1ère réaction serait de dire : il n'y a aucune différence entre un 'Drop SQL' et un 'DAO.TableDefs.Delete' : le choix se fait d'abord en fonction des ta formation, de tes habitudes de développeur, et le résultat sera le même. - 2ème réaction : si la table appelée n'existe pas (déjà supprimée..., peu importe.), les erreurs déclenchées ne seront pas les mêmes. Donc, il y a quelques différences, même si aucune méthode n'est 'meilleure' ou 'moins bonne'. Pour les trouver et les lister, faut faire une recherche, des tests exhaustifs (tant que le sujet reste ouvert, d'autres pourront l'enrichir)... et pondre un petit résumé -> Faq, peut être un article... Je propose donc, (en me défilant avec une habileté déconcertante parce que je sais que je n'aurai pas le temps), que Vodiem qui cherche et DmBoup qui a plus de connaissances créent ensemble un mini-projet de 'méthodes comparées pour supprimer une table, etc.', dans le sous-forum dédié. Rappel : ne pas attendre que ça tombe tout cru. Il n'y a qu'en cherchant, en testant qu'on trouve les réponses. Bon courage, et miam-miam-merci de toutes contributions.
__________________
Les cours sont terminés. [Cours pt-05]Moteur de mise à jour de base de données [Cours pt-04]les bases du débogage [Cours pt-03]turbo-formulaire (les bases) [Cours pt-02][Débutants]Requête avec plusieurs sommes [Cours pt-01][Débutants]Analyse structure base de données simple + Commentaires sur les cours |
|
|
|
|
![]() |
![]() |
||
Les méthodes pour Lister / Vider / Supprimer les Tables
|
||
Offres d'
emploi informatique
sur Lesjeudis.com
|
| Outils de la discussion | |
|
|