Meilleur auteur de réponses
Renseigner la zone Propriété d'une table ACCESS lors de la création de cette table en Visual Studio

Question
-
Bonjour
Je cherche à renseigner la zone propriété des tables d'une base ACCESS lors de la création de cette table avec une instruction CREATE TABLE dans un programme écrit en Visual Studio.
Je ne trouve pas vraiment de documentation sur cette procédure.
Est ce que quelqu'un a une idée la dessus.
Merci d'avance
Alain
Réponses
-
Bonjour,
Il n'est pas possible de définir des propriétés Access directement dans une requête CREATE TABLE.
Vous devez utiliser le moteur DAO de Access pour manipuler votre base de données (http://msdn.microsoft.com/en-us/library/office/ee291983(v=office.12).aspx).
Voici un exemple d'utilisation :
Dim d As DBEngine = New Dao.DBEngine() Dim database As Database = d.OpenDatabase("MonDatabase1.accdb") database.TableDefs("MaTable").Properties("NomPropriété").Value = "MaValeur"
Cordialement
Gilles TOURREAU - MVP C#
Architecte logiciel/Consultant/Formateur Freelance
Blog : http://gilles.tourreau.fr
- MCPD : Enterprise Developper / Windows Developper 3.5 / ASP .NET 3.5/4.0
- MCITP : SQL Server 2008 Developper
- MCTS : ADO .NET 3.5 / SQL Server 2008 Developper / Windows Forms 3.5 / ASP .NET 3.5/4.0- Proposé comme réponse Lyamine jeudi 18 octobre 2012 17:11
- Marqué comme réponse Aurel Bera lundi 22 octobre 2012 06:37
-
C’est vrai
Le code est
Dim prop As Microsoft.Office.Interop.Access.Dao.Property prop = database.TableDefs("Table2").CreateProperty("Description", Microsoft.Office.Interop.Access.Dao.DataTypeEnum.dbText, "Test Description") database.TableDefs("Table2").Properties.Append(prop)
Cordialement,
- Marqué comme réponse alain farret mardi 23 octobre 2012 07:53
Toutes les réponses
-
Bonjour,
Il n'est pas possible de définir des propriétés Access directement dans une requête CREATE TABLE.
Vous devez utiliser le moteur DAO de Access pour manipuler votre base de données (http://msdn.microsoft.com/en-us/library/office/ee291983(v=office.12).aspx).
Voici un exemple d'utilisation :
Dim d As DBEngine = New Dao.DBEngine() Dim database As Database = d.OpenDatabase("MonDatabase1.accdb") database.TableDefs("MaTable").Properties("NomPropriété").Value = "MaValeur"
Cordialement
Gilles TOURREAU - MVP C#
Architecte logiciel/Consultant/Formateur Freelance
Blog : http://gilles.tourreau.fr
- MCPD : Enterprise Developper / Windows Developper 3.5 / ASP .NET 3.5/4.0
- MCITP : SQL Server 2008 Developper
- MCTS : ADO .NET 3.5 / SQL Server 2008 Developper / Windows Forms 3.5 / ASP .NET 3.5/4.0- Proposé comme réponse Lyamine jeudi 18 octobre 2012 17:11
- Marqué comme réponse Aurel Bera lundi 22 octobre 2012 06:37
-
Bonjour,
Est-ce que vous avez testé les solutions proposées ? Merci de partager avec nous les résultats, afin que d'autres personnes avec le même problème puissent profiter de cette solution.
Cordialement,
Aurel
-
Bonjour,
Pouvons-nous considérer que vous avez résolu votre problème avec les scénarios proposés ? Dans l'affirmative, pourriez-vous partager avec nous la solution, afin que d'autres personnes avec le même problème puissent profiter de cette solution ?
Désormais, nous marquons les solutions proposées. N'hésitez pas à revenir et supprimer la réponse marquée si la solution n’est pas correcte. Merci !
Cordialement,
Aurel
- Modifié Aurel Bera lundi 22 octobre 2012 06:36
-
Merci pour le retour,
J'ai juste un problème de mise en oeuvre dans la définiton "("NomPropriété")." car je ne trouve à aucun endroit le nom de la propriété description de la table que je viens de créer (Bouton de droite sur la table, menu propriété, Zone Description)
Merci d'avance
Alain
Alain Farret
-
Bonjour
Ce que vous avez besoin c'est
database.TableDefs("MaTable").Properties("Description").Value = "MaValeur"
J’ai teste et ça marche bien (Office Anglais).
Cordialement,
-
Bonjour
Cela n'alimente pas le champ mémo décrit dans le sous menu propriété de la table (Dans ACCESS, Bouton de droiite de la souris, menuy contextuel propriétés de la table).
Dans Access ce champ a beaucoup de caractères (Plus de 3 lignes permettant de bien documenter la table), La propriété description est limitée dans le nombre de caractères, et n'apparait pas dans le champ cité ci dessus.
Je ne sais pas ce qui est alimentée par cette execution
Cordialement
Alain
Alain Farret
-
Bonjour
La description dans l'image a été mise en place avec le code suivant (Tstee avec Access 2013):
DBEngine d = new Microsoft.Office.Interop.Access.Dao.DBEngine();
Database database = d.OpenDatabase("d:\\Work\\Database31.accdb");
database.TableDefs["Table1"].Properties["Description"].Value = @"La quatrième saison des Simpson est diffusée pour la première fois aux États-Unis par la Fox entre le 24 septembre 1992 et le 13 mai 1993. En France, elle est diffusée du 4 septembre 1993 au 29 janvier 1994. Les show runners de cette saison sont Al Jean et Mike Reiss. Mis à part les deux premiers épisodes, Les Jolies Colonies de vacances et Un tramway nommé Marge, issus de la production de la saison précédente, cette saison est la première à être animée par la Film Roman.
Suite à de nombreuses disputes avec Matt Groening, le créateur de la série, et James L. Brooks, l'un des producteurs, Sam Simon quitte l'équipe des Simpson à la fin de cette saison. Dans le même temps, Al Jean et Mike Reiss créent Profession : critique, emmenant avec eux plusieurs des scénaristes de la série.
La saison est proposée pour deux Emmy Awards et Dan Castellaneta emporte celui du meilleur doublage pour le rôle de Homer dans l'épisode Monsieur Chasse-neige. Le coffret DVD de la saison est sorti en région 1 le 15 juin 2004, en région 2 le 2 août de la même année, le 25 août en région 4 et en région 5 le 25 mars 2010.";
N’est pas ça ce que vous voulez?
Cordialement,
- Modifié Aurel Bera lundi 22 octobre 2012 12:50
-
Bonjour
Je suis désolé d'être embettant mais voila mon code :
Dim DB As DBEngine = New Microsoft.Office.Interop.Access.Dao.DBEngine
Dim database As Database = DB.OpenDatabase(w_str_pathm_bdd & "\afimat.ACCDB")
database.TableDefs("MNF").Properties("Description").Value = "nnnnnnnnnnnn"
et je récupère une erreur 3270 Propriété non trouvée, Par contre c'est bien cela que je cherche à obtenir (comme sur votre exemple)
Cordialement
Alain
Alain Farret
-
Bonjour
Je vois 2 possibles raisons pour que ça ne marche pas :
- Access en Français (Je l’ai installée en anglais).
- Version différente d’Office (je utilise 2013).
Pour voir, essayez de parcourir toutes les propriétés de la table, pour "deviner" la bonne :
For Each prop As Microsoft.Office.Interop.Access.Dao.Property In database.TableDefs("Table1").Properties Console.WriteLine(prop.Name) Next
Cordialement,
-
Bonjour Aurel Bera,
Je crois que tu omets une 3ème possibilité : il faut que la propriété existe avant de lui attribuer une valeur. Cette propriété 'Description' n'est pas créée par défaut. Si tu la renseignes sous Access,elle est accessible et modifiable sous VB.Net avec le code que tu as indiqué, sinon erreur 3270.
Il est probable, je crois, qu'il faille utiliser la méthode CreateProperty, ici en VBA, et je ne suis pas assez pointu pour l'adapter à VB.Net, quelque chose du genre :
Dim p As ????? p = database.TableDefs("Table1").CreateProperty("Description", ?????, "Toto") database.TableDefs("Table1").Properties.Append(p)
Cordialement, Jacques
-
Avec ce code :
Imports Microsoft.Office.Interop.Access.Dao Imports DAO.DataTypeEnum Public Class Form1 Dim DB As DBEngine = New Microsoft.Office.Interop.Access.Dao.DBEngine Private Sub Button1_Click(sender As System.Object, e As System.EventArgs) Handles Button1.Click Dim database As Database = DB.OpenDatabase("D:\Users\Jacques\Documents" & "\Database1.ACCDB") Dim p As DAO.Property p = database.TableDefs("Table3").CreateProperty("Description", dbText, "Ma table à moi") database.TableDefs("Table3").Properties.Append(p) MessageBox.Show(database.TableDefs("Table3").Properties("Description").Value) End Sub End Class
cela semble fonctionner après avoir ajouter un référence COM à 'Microsoft DAO 3.6 Object Library'
Cordialement, Jacques
-
C’est vrai
Le code est
Dim prop As Microsoft.Office.Interop.Access.Dao.Property prop = database.TableDefs("Table2").CreateProperty("Description", Microsoft.Office.Interop.Access.Dao.DataTypeEnum.dbText, "Test Description") database.TableDefs("Table2").Properties.Append(prop)
Cordialement,
- Marqué comme réponse alain farret mardi 23 octobre 2012 07:53
-