Base de données ACCESS

Résolu
Signaler
Messages postés
11
Date d'inscription
vendredi 24 octobre 2003
Statut
Membre
Dernière intervention
22 décembre 2009
-
Messages postés
11
Date d'inscription
vendredi 24 octobre 2003
Statut
Membre
Dernière intervention
22 décembre 2009
-
Bonjour à tous,
Seriez-vous comment rajouter dynamiquement (en VB2005 - ADO)  un nouveau champ (de type image) dans une table Access déjà existante ?
Merci d'avance,

6 réponses

Messages postés
17287
Date d'inscription
mercredi 2 janvier 2002
Statut
Modérateur
Dernière intervention
27 septembre 2021
73
tu pourrais executer une requete ALTER TABLE

Renfield
Admin CodeS-SourceS- MVP Visual Basic
Messages postés
17287
Date d'inscription
mercredi 2 janvier 2002
Statut
Modérateur
Dernière intervention
27 septembre 2021
73
Comme ceci :

    Private Sub BDD_ADD_NEW_FIELD(ByVal chemin_base$, ByVal nom_table$)
        Dim strConn As String, chaine_SQL$
        Dim ObjetConnection As OleDbConnection
        Dim ObjetCommand As OleDbCommand

        strConn = "Provider=Microsoft.Jet.OLEDB.4.0; Data Source=" & chemin_base$ & ";User ID=Admin;Password=; "
        chaine_SQL$ = "SELECT * FROM [" & nom_table$ & "]"
        ObjetConnection = New OleDbConnection

        ObjetConnection.ConnectionString = strConn
        ObjetConnection.Open()

        ObjetCommand = New OleDbCommand("ALTER TABLE " & nom_table & " ADD PHOTOW Int", ObjetConnection)

        Try
            ObjetCommand.ExecuteNonQuery()
        Finally
            ObjetConnection.Close()
        End Try
    End Sub

Renfield
Admin CodeS-SourceS- MVP Visual Basic
Messages postés
17287
Date d'inscription
mercredi 2 janvier 2002
Statut
Modérateur
Dernière intervention
27 septembre 2021
73
*"sauriez"

je pense que ce que tu cherches, c'est la méthode Fields.Append...

Renfield
Admin CodeS-SourceS- MVP Visual Basic
Messages postés
1642
Date d'inscription
samedi 6 novembre 2004
Statut
Modérateur
Dernière intervention
28 avril 2011
3
Question redirigé de "CodeS-SourceS > Le Bar > Discussions libres" vers "VB 2005 > Base de données > Access".

<hr width="100%" size="2" />Nurgle (Antoine)
Messages postés
11
Date d'inscription
vendredi 24 octobre 2003
Statut
Membre
Dernière intervention
22 décembre 2009

Bonjour à tous,

Je ne pense pas que cela soit la méthode Fields.Append...
J'ai cherché sur MSDN et j'ai trouvé qu'il fallait utiliser les membres "Column" de la table à modifier pour ensuite ajouter ce nouveau champ. (voir ci-dessous le bout de code).
Cela semble fonctionner (pas d'erreur de compilation) mais au final, le champ PHOTOW  n'est pas crée dans la table....
Auriez-vous une idée ?

Sub

BDD_ADD_NEW_FIELD(
ByVal chemin_base$,
ByVal nom_table$)

Dim strConn
As
String, chaine_SQL$

Dim ObjetConnection
As OleDbConnection

Dim ObjetCommand
As OleDbCommand

Dim ObjetDataAdapter
As OleDbDataAdapter

Dim ObjetDataSet
As
New DataSet

Dim ObjetDataTable
As DataTablestrConn =

"Provider=Microsoft.Jet.OLEDB.4.0; Data Source=" & chemin_base$ &
";User ID=Admin;Password=; "chaine_SQL$ =

"SELECT * FROM [" & nom_table$ & "]"ObjetConnection New OleDbConnectionObjetConnection.ConnectionString strConn

ObjetConnection.Open()
ObjetCommand New OleDbCommand(chaine_SQL$)ObjetDataAdapter

New OleDbDataAdapter(ObjetCommand)ObjetCommand.Connection() = ObjetConnection

ObjetDataAdapter.Fill(ObjetDataSet, nom_table$)

'----------------------------------------------------------

'Mettre dans un Objet DataTable une table du DataSet

'----------------------------------------------------------ObjetDataTable = ObjetDataSet.Tables(nom_table$)

'----------------------------------------------------------

'Création d'un nouveau champ

'----------------------------------------------------------

Dim workCol
As DataColumn = ObjetDataTable.Columns.Add(
"PHOTOW", Type.GetType("System.Int32"))workCol.AllowDBNull TrueworkCol.Unique

False

'----------------------------------------------------------

Dim CmdBuild As OleDbCommandBuilderCmdBuild New OleDb.OleDbCommandBuilder(ObjetDataAdapter)ObjetDataAdapter.InsertCommand CmdBuild.GetInsertCommand

ObjetDataAdapter.Update(ObjetDataSet, nom_table$)

ObjetConnection.Close()

End
Sub
Messages postés
11
Date d'inscription
vendredi 24 octobre 2003
Statut
Membre
Dernière intervention
22 décembre 2009

Bonjour à tous,
J'ai testé avec succès la proposition de Renfield... 
Merci beaucoup de votre aide.