OVH Cloud OVH Cloud

Comment ajouter ou suppriemr un champ dans une base Access ?

5 réponses
Avatar
FG
Bonjour,

Je travaille en VB6 + SP5 sur une base Access
J'ai besoin d'ajouter/supprimer un champ (numérique, réel double, 2
décimales) par le code.

Please Help
FG

5 réponses

Avatar
Pascal B.
Salut,

Pour ajouter un champs, en supposant que la DB est déjà ouvert:

Dim Tbl as TableDef
Dim NewFld as Field

...
Set Tbl = DB.TableDefs("NomDeLaTable")
Set NewFld = Tbl.CreateField("NomDuChamps",dbDouble)
Tbl.Fields.Append NewFld

Attention: le nouveau champs n'est pas initialisé (contient Null), pour
cela:

DB.Execute "Update [NomDeLaTable] Set [NomDuChamps]=0;"

Pour Supprimer un champs:

Tbl.Fields.Delete "NomDuChamps"


Pascal



"FG" a écrit dans le message de
news:40177f2d$0$1155$
Bonjour,

Je travaille en VB6 + SP5 sur une base Access
J'ai besoin d'ajouter/supprimer un champ (numérique, réel double, 2
décimales) par le code.

Please Help
FG




Avatar
FG
merci pour ta réponse.
j'ai ajouté la référence ADO 3.6 à mon projet (j'utilises d'habitude ADO
2.8)...
J'ai une erreur de type incompatible sur la ligne : Set NewFld Tbl.CreateField("SOC1", dbDouble)


curieux, car quand j'execute le code ci-dessous (copie MSDN), tout
fonctionne bien :

Dim dbsNorthwind As Database
Dim tdfNew As TableDef
Dim fldLoop As Field
Dim prpLoop As Property

Set dbsNorthwind = OpenDatabase("Northwind.mdb")

Set tdfNew = dbsNorthwind.CreateTableDef("NewTableDef")

' Create and append new Field objects for the new
' TableDef object.
With tdfNew
' The CreateField method will set a default Size
' for a new Field object if one is not specified.
.Fields.Append .CreateField("TextField", dbText)
.Fields.Append .CreateField("IntegerField", dbInteger)
.Fields.Append .CreateField("DateField", dbDate)
End With

dbsNorthwind.TableDefs.Append tdfNew



"Pascal B." <pascbr[A.R.O.B.A.S.E]hotmail[P.O.I.N.T]com> a écrit dans le
message de news:
Salut,

Pour ajouter un champs, en supposant que la DB est déjà ouvert:

Dim Tbl as TableDef
Dim NewFld as Field

...
Set Tbl = DB.TableDefs("NomDeLaTable")
Set NewFld = Tbl.CreateField("NomDuChamps",dbDouble)
Tbl.Fields.Append NewFld

Attention: le nouveau champs n'est pas initialisé (contient Null), pour
cela:

DB.Execute "Update [NomDeLaTable] Set [NomDuChamps]=0;"

Pour Supprimer un champs:

Tbl.Fields.Delete "NomDuChamps"


Pascal



"FG" a écrit dans le message de
news:40177f2d$0$1155$
> Bonjour,
>
> Je travaille en VB6 + SP5 sur une base Access
> J'ai besoin d'ajouter/supprimer un champ (numérique, réel double, 2
> décimales) par le code.
>
> Please Help
> FG
>
>




Avatar
Pascal B.
Salut,

J'utilise la référence "Microsoft DAO 3.6 objet library" (DAO et non ADO)

Pour les types incompatibles, essaye de déclarer les variables ainsi:

Dim Tbl as DAO.TableDef
Dim NewFld as DAO.Field

Pascal

"FG" a écrit dans le message de
news:401793d5$0$1178$
merci pour ta réponse.
j'ai ajouté la référence ADO 3.6 à mon projet (j'utilises d'habitude ADO
2.8)...
J'ai une erreur de type incompatible sur la ligne : Set NewFld > Tbl.CreateField("SOC1", dbDouble)


curieux, car quand j'execute le code ci-dessous (copie MSDN), tout
fonctionne bien :

Dim dbsNorthwind As Database
Dim tdfNew As TableDef
Dim fldLoop As Field
Dim prpLoop As Property

Set dbsNorthwind = OpenDatabase("Northwind.mdb")

Set tdfNew = dbsNorthwind.CreateTableDef("NewTableDef")

' Create and append new Field objects for the new
' TableDef object.
With tdfNew
' The CreateField method will set a default Size
' for a new Field object if one is not specified.
.Fields.Append .CreateField("TextField", dbText)
.Fields.Append .CreateField("IntegerField", dbInteger)
.Fields.Append .CreateField("DateField", dbDate)
End With

dbsNorthwind.TableDefs.Append tdfNew



"Pascal B." <pascbr[A.R.O.B.A.S.E]hotmail[P.O.I.N.T]com> a écrit dans le
message de news:
> Salut,
>
> Pour ajouter un champs, en supposant que la DB est déjà ouvert:
>
> Dim Tbl as TableDef
> Dim NewFld as Field
>
> ...
> Set Tbl = DB.TableDefs("NomDeLaTable")
> Set NewFld = Tbl.CreateField("NomDuChamps",dbDouble)
> Tbl.Fields.Append NewFld
>
> Attention: le nouveau champs n'est pas initialisé (contient Null), pour
> cela:
>
> DB.Execute "Update [NomDeLaTable] Set [NomDuChamps]=0;"
>
> Pour Supprimer un champs:
>
> Tbl.Fields.Delete "NomDuChamps"
>
>
> Pascal
>
>
>
> "FG" a écrit dans le message de
> news:40177f2d$0$1155$
> > Bonjour,
> >
> > Je travaille en VB6 + SP5 sur une base Access
> > J'ai besoin d'ajouter/supprimer un champ (numérique, réel double, 2
> > décimales) par le code.
> >
> > Please Help
> > FG
> >
> >
>
>




Avatar
FG
comme ça c'est OK.
encore merci.

Private Sub Command1_Click()

Dim Ws As Workspace
Dim db As Database
Dim s As String
s = App.Path & "Data.mdb"
Set Ws = CreateWorkspace("", "admin", "", dbUseJet)
Set db = Ws.OpenDatabase(s, False, False)


Dim Tbl As TableDef
Dim NewFld As Field

Set Tbl = db.TableDefs("CLES")
Tbl.Fields.Append Tbl.CreateField("SOC1", dbDouble)
db.Execute "Update CLES Set SOC1=0"


db.Close

End Sub


"Pascal B." <pascbr[A.R.O.B.A.S.E]hotmail[P.O.I.N.T]com> a écrit dans le
message de news:e%
Salut,

J'utilise la référence "Microsoft DAO 3.6 objet library" (DAO et non ADO)

Pour les types incompatibles, essaye de déclarer les variables ainsi:

Dim Tbl as DAO.TableDef
Dim NewFld as DAO.Field

Pascal

"FG" a écrit dans le message de
news:401793d5$0$1178$
> merci pour ta réponse.
> j'ai ajouté la référence ADO 3.6 à mon projet (j'utilises d'habitude ADO
> 2.8)...
> J'ai une erreur de type incompatible sur la ligne : Set NewFld > > Tbl.CreateField("SOC1", dbDouble)
>
>
> curieux, car quand j'execute le code ci-dessous (copie MSDN), tout
> fonctionne bien :
>
> Dim dbsNorthwind As Database
> Dim tdfNew As TableDef
> Dim fldLoop As Field
> Dim prpLoop As Property
>
> Set dbsNorthwind = OpenDatabase("Northwind.mdb")
>
> Set tdfNew = dbsNorthwind.CreateTableDef("NewTableDef")
>
> ' Create and append new Field objects for the new
> ' TableDef object.
> With tdfNew
> ' The CreateField method will set a default Size
> ' for a new Field object if one is not specified.
> .Fields.Append .CreateField("TextField", dbText)
> .Fields.Append .CreateField("IntegerField", dbInteger)
> .Fields.Append .CreateField("DateField", dbDate)
> End With
>
> dbsNorthwind.TableDefs.Append tdfNew
>
>
>
> "Pascal B." <pascbr[A.R.O.B.A.S.E]hotmail[P.O.I.N.T]com> a écrit dans le
> message de news:
> > Salut,
> >
> > Pour ajouter un champs, en supposant que la DB est déjà ouvert:
> >
> > Dim Tbl as TableDef
> > Dim NewFld as Field
> >
> > ...
> > Set Tbl = DB.TableDefs("NomDeLaTable")
> > Set NewFld = Tbl.CreateField("NomDuChamps",dbDouble)
> > Tbl.Fields.Append NewFld
> >
> > Attention: le nouveau champs n'est pas initialisé (contient Null),


pour
> > cela:
> >
> > DB.Execute "Update [NomDeLaTable] Set [NomDuChamps]=0;"
> >
> > Pour Supprimer un champs:
> >
> > Tbl.Fields.Delete "NomDuChamps"
> >
> >
> > Pascal
> >
> >
> >
> > "FG" a écrit dans le message de
> > news:40177f2d$0$1155$
> > > Bonjour,
> > >
> > > Je travaille en VB6 + SP5 sur une base Access
> > > J'ai besoin d'ajouter/supprimer un champ (numérique, réel double, 2
> > > décimales) par le code.
> > >
> > > Please Help
> > > FG
> > >
> > >
> >
> >
>
>




Avatar
FG
J'ai un code qui fonctionne en DAO, mais la partie ADO bloque.....

please help



Private Sub CmdDAO_Click()

Dim ws As Workspace
Dim db As Database
Dim s As String
s = App.Path & "Data.mdb"
Set ws = CreateWorkspace("", "admin", "", dbUseJet)
Set db = ws.OpenDatabase(s, False, False)

Dim tbl As TableDef
Dim newfld As Field

Set tbl = db.TableDefs("CLES")
tbl.Fields.Append tbl.CreateField("SOC1", dbDouble)
db.Execute "Update CLES Set SOC1=0"

db.Close

End Sub


Private Sub CmdADO_Click()

Dim cn As ADODB.Connection
Dim s As String
Dim rs As ADODB.Recordset
Dim flds As ADODB.Fields

Set cn = New ADODB.Connection
s = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & App.Path & "Data.mdb"
cn.Open s

Set rs = New ADODB.Recordset
rs.Open "CLES", cn

Set flds = rs.Fields
flds.Append "SOC2", adDouble

cn.Execute "Update CLES Set SOC2=0"

rs.Close
cn.Close

End Sub



"Pascal B." <pascbr[A.R.O.B.A.S.E]hotmail[P.O.I.N.T]com> a écrit dans le
message de news:e%
Salut,

J'utilise la référence "Microsoft DAO 3.6 objet library" (DAO et non ADO)

Pour les types incompatibles, essaye de déclarer les variables ainsi:

Dim Tbl as DAO.TableDef
Dim NewFld as DAO.Field

Pascal

"FG" a écrit dans le message de
news:401793d5$0$1178$
> merci pour ta réponse.
> j'ai ajouté la référence ADO 3.6 à mon projet (j'utilises d'habitude ADO
> 2.8)...
> J'ai une erreur de type incompatible sur la ligne : Set NewFld > > Tbl.CreateField("SOC1", dbDouble)
>
>
> curieux, car quand j'execute le code ci-dessous (copie MSDN), tout
> fonctionne bien :
>
> Dim dbsNorthwind As Database
> Dim tdfNew As TableDef
> Dim fldLoop As Field
> Dim prpLoop As Property
>
> Set dbsNorthwind = OpenDatabase("Northwind.mdb")
>
> Set tdfNew = dbsNorthwind.CreateTableDef("NewTableDef")
>
> ' Create and append new Field objects for the new
> ' TableDef object.
> With tdfNew
> ' The CreateField method will set a default Size
> ' for a new Field object if one is not specified.
> .Fields.Append .CreateField("TextField", dbText)
> .Fields.Append .CreateField("IntegerField", dbInteger)
> .Fields.Append .CreateField("DateField", dbDate)
> End With
>
> dbsNorthwind.TableDefs.Append tdfNew
>
>
>
> "Pascal B." <pascbr[A.R.O.B.A.S.E]hotmail[P.O.I.N.T]com> a écrit dans le
> message de news:
> > Salut,
> >
> > Pour ajouter un champs, en supposant que la DB est déjà ouvert:
> >
> > Dim Tbl as TableDef
> > Dim NewFld as Field
> >
> > ...
> > Set Tbl = DB.TableDefs("NomDeLaTable")
> > Set NewFld = Tbl.CreateField("NomDuChamps",dbDouble)
> > Tbl.Fields.Append NewFld
> >
> > Attention: le nouveau champs n'est pas initialisé (contient Null),


pour
> > cela:
> >
> > DB.Execute "Update [NomDeLaTable] Set [NomDuChamps]=0;"
> >
> > Pour Supprimer un champs:
> >
> > Tbl.Fields.Delete "NomDuChamps"
> >
> >
> > Pascal
> >
> >
> >
> > "FG" a écrit dans le message de
> > news:40177f2d$0$1155$
> > > Bonjour,
> > >
> > > Je travaille en VB6 + SP5 sur une base Access
> > > J'ai besoin d'ajouter/supprimer un champ (numérique, réel double, 2
> > > décimales) par le code.
> > >
> > > Please Help
> > > FG
> > >
> > >
> >
> >
>
>