[Vba Access] Drop ou rename d'une table sur BdD Distante
Bjr, nouveau sur le fil, mais lecteur assidu des FAQs
Mon problème est le suivant
je dois, depuis une BdD, gérer des actions sur des tables dans une autre BdD (accessible sur mon réseau)
je sais copier des tables, les lier, faire des updates, exporter des tables mais si je veux faire un alter table, un drop table ou un rename je bloque.
Est ce possible à faire, et si oui comment.
Denis
Réponse fourni par 3 stone (MVP)
Regarde ceci :
http://access.fr.free.fr/articles.php?lng=fr&pg=42
légèrement modifiée pour passer la BdD et la table en paramètre
Code:
1 2 3 4 5 6
| Public Function DeleteTableExt(ByVal strDb As String, ByVal strTbl As String)
Dim db As Database
Set db = OpenDatabase(strDb)
db.TableDefs.Delete strTbl
db.Close: Set db = Nothing
End Function |
Solution diverses rename, drop, Nbre de champ, déplacement
' pour renommer une champ sur une table distante
'-----
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
| Public Sub RenommerChampDAO(ByVal strBase As String, ByVal strTbl As String, ByVal NchOld As String, ByVal NchNew As String)
On Error GoTo err:
Dim db As DAO.Database
Dim tabb As DAO.TableDef
Dim chp As DAO.Field
Set db = OpenDatabase(strBase)
Set tabb = db.TableDefs(strTbl)
Set chp = tabb.Fields(NchOld)
chp.Name = NchNew
Set chp = Nothing
Set tabb = Nothing
Set db = Nothing
Exit Sub
err:
MsgBox "L'action renommer le champ a échouée"
End Sub |
'----
'lancement par
Code:
Call RenommerChampDAO(n_BdD, n_tabl, n_ch_old, n_ch_new)
'-----
'pour supprimer une table dans une BdD distante
'-----
Code:
1 2 3 4 5 6
| Public Function DeleteTableExt(ByVal strDb As String, ByVal strTbl As String)
Dim db As Database
Set db = OpenDatabase(strDb)
db.TableDefs.Delete strTbl
db.Close: Set db = Nothing
End Function |
'-----
' pour lancer la suppression
Code:
Call DeleteTableExt(n_BdD, n_tabl)
'----
'pour compter le nbre de champ d'une table distante
'----
Code:
1 2 3 4 5 6 7 8 9
| Function NbDeChamp2(ByVal strDb As String, ByVal strTbl As String) As Integer
On Error GoTo err
Dim db As DAO.Database
Dim tabb As DAO.TableDef
Set db = OpenDatabase(strDb)
Set tabb = db.TableDefs(strTbl )
NbDeChamp2 = tabb .Fields.Count
err:
End Function |
'-----
' pour lancer le comptage
Code:
MsgBox NbDeChamp2(n_BdD, n_tabl)
'-----
'pour déplacer un champ dans une BdD distante
'----
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14
| Sub deplace_ch_OK(ByVal strBase As String, ByVal strTbl As String, ByVal NchOld As String, ByVal pos As Integer)
' attention le compte commence à 0
On Error GoTo err:
Dim db As DAO.Database
Dim tabb As DAO.TableDef
Dim chp As DAO.Field
Set db = OpenDatabase(strBase)
Set tabb = db.TableDefs(strTbl)
Set chp = tabb.Fields(NchOld)
chp.OrdinalPosition = (pos)
Exit Sub
err:
MsgBox "L'action déplacer le champ a échouée"
End Sub |
'----
'pour lancer le déplacement
'----
Code:
Call deplace_ch_OK(n_BdD, n_tabl, n_chp, pos)
'----
Bon usage