Renommer des tables ds BD Access avec VB2010

belhocines Messages postés 3 Date d'inscription mercredi 3 février 2010 Statut Membre Dernière intervention 14 juin 2011 - 13 juin 2011 à 18:57
belhocines Messages postés 3 Date d'inscription mercredi 3 février 2010 Statut Membre Dernière intervention 14 juin 2011 - 14 juin 2011 à 15:30
Bonjour à tous

Svp, j'ai besoins d'aide après avoir perdu espoir de régler mon problème tout seul. J'ai vraiment galéré.
Voila donc mon problème.
Je dois transférer certaine données d'une BD vers une autre (gros volume), en prenant soin de renommer certaines tables qui seront remplacées par de nouvelles autres (pour garder trace de l'ancienne activité).
Dans ADO.Net je n'arrive pas à utiliser des instructions SQL "RENAME TABLE AncNomDeTable TO NouvNomDeTable;". Je reçois toujours un message comme quoi instruction UPDATE, SELECT, INSERT ... sont attendues.
Merci à tous ceux qui apporteront une aide quelconque.

2 réponses

lolokun Messages postés 1241 Date d'inscription mardi 10 octobre 2006 Statut Membre Dernière intervention 27 août 2013 7
14 juin 2011 à 13:20
Bonjour,

Et si tu postais tout le bout de code qui pose problème ?


L'expérience, c'est une connerie par jour, mais jamais la même..
0
belhocines Messages postés 3 Date d'inscription mercredi 3 février 2010 Statut Membre Dernière intervention 14 juin 2011
14 juin 2011 à 15:30
Bonjour,

ADO et ADO.NET ne permettant que des instructions SQL SELECT, UPDATE, DELETE, DROP TABLE, INSERT...

J'ai essayé plusieurs approches, et même un bout de code utilisant ADOX récupéré sur un forum...
Ceci est le code ADOX.

Private Function RenameTable(ByVal strOldTableName As String, ByVal strNewTableName As String) As String
Dim con As New ADODB.Connection, cat As Catalog = New Catalog
Dim tblOld As ADOX.Table = New ADOX.Table
Dim tblNew As ADOX.Table = New ADOX.Table
Dim strError As String = ""

Try
With con
.Provider = "Microsoft.Jet.OLEDB.4.0;"
'.Properties("Jet OLEDB: System database") = ""
.Open("Data Source=" & OpenFileDialog1.FileName & ";" & _
"Password=Ultimate")
End With
cat.ActiveConnection = con

tblOld = cat.Tables(strOldTableName)
If tblOld Is Nothing Then
strError = "Old Table does not exist!"
GoTo EndRenameProcessing
End If
Try
tblNew = cat.Tables(strNewTableName)
If Not tblNew Is Nothing Then
strError = "New Table name already exists!"
GoTo EndRenameProcessing

End If
Catch
End Try

tblOld.Name = strNewTableName
strError = ""
Catch ex As Exception
strError = ex.Message
GoTo EndRenameProcessing

End Try

EndRenameProcessing:
RenameTable = strError

End Function

Je ne sais pas si la logique est correcte mais la function signale toujours une exception et ne fait donc rien du tout.

J'ai essayé énormément d'autres possibilités, rien. J'ai aussi cherché dans l'aide MSDN, mais j'ai désespéré. J'avoue que c'est devenu beaucoup trop complexe pour moi pour y comprendre quelque chose ou trouver une information concise et efficace.

Merci pour ton intérêt lolokun
0
Rejoignez-nous