| auteur : Team Access | Il faut utiliser un champ de type mémo, celui-ci accepte jusqu'à 65 535 caractères.
|
| auteur : xp | Vous voulez un numéro automatique de format 00001 par exemple ?
Dans la structure de tables, il faut taper dans la propriété format du numéro auto : 00000.
|
| auteur : Maxence HUBICHE | Cette question est étrange en elle-même, car cela ne convient pas, dans une base de données.
Lorsqu'on crée une clé primaire en NuméroAuto, c'est pour éviter d'avoir à créer des identifiants.
- Ces identifiants sont créés automatiquement ;
- Ils ne sont pas "porteurs d'information" ;
- Il ne s'agit pas d'un compteur.
"Combler les trous dans un numéroAuto" est tout simplement une aberration.
Pour exécuter ce code il faut activer la référence : Microsoft DAO 3.x Object Library
Maintenant, si vous avez un champ numérique, vous pouvez combler les trous dans la numérotation en récupérant le premier numéro libre grâce à la fonction suivante : Function NextID (LeChamp As String , LaTable As String ) As Long
Dim sSQL As String
Dim rs As DAO. Recordset
Dim n As Long
sSQL = " Select Min([ " & LECHAMP & " ]-1) As NextID From " & LATABLE & " As T1 "
sSQL = sSQL & " Where ((([ " & LECHAMP & " ]-1)>0) And (((Select [ " & LECHAMP & " ] "
sSQL = sSQL & " From " & LATABLE & " T2 "
sSQL = sSQL & " Where T2.[ " & LECHAMP & " ]=T1.[ " & LECHAMP & " ]-1)) Is Null)); "
Set rs = CurrentDb. OpenRecordset (sSQL, dbOpenSnapshot)
n = DCount (" [ " & LeChamp & " ] " , " [ " & LaTable & " ] " )
If n = 0 Then
NextID = 1
ElseIf IsNull (rs (0 )) Then
NextID = DMax (" [ " & LeChamp & " ] " , " [ " & LaTable & " ] " ) + 1
Else
NextID = rs (0 )
End If
End Function
|
|
lien : Comment réinitialiser un champ de type numéro Auto ?
lien : Définition et manipulation de données avec DAO par Tofalu
lien : Comment déclarer une référence dans MS-Access ?
|
| auteur : FRED.G | Il faut créer dans la table un index multichamp et définir sa propriété unique à "oui".
Pour créer l'index :
1) Afficher la table en mode création
2) Menu Affichage >> Index
3) Sélectionner dans la colonne "Nom du champ", tous les champs concernés en laissant vides les champs de la colonne "Nom de l'index", sauf le premier champ, celui où commence la liste car il faut y inscrire le nom de l'index multichamp.)
|
| auteur : Drosera | Function ModifTable ()
On Error GoTo GestionErreur
DoCmd. Echo False
DoCmd. OpenTable " maTable " , acViewDesign
CurrentDb. TableDefs (" maTable " )(" colonne2 " ). Properties (" caption " ). Value = " nouvelle légende "
DoCmd. Close acTable, " maTable " , acSaveYes
Exit_function :
DoCmd. Echo True
Exit Function
GestionErreur :
MsgBox Err . Description
Resume Exit_function
End Function
|
|
| auteur : Team Access | Il vous faut utiliser ALTER en SQL.
Alter Table [TABLE] Alter Column [NOMCHAMP] [Type];
|
|
| auteur : Tofalu | Tout d'abord ajouter les références suivantes dans votre projet :
Microsot ADO Ext 2.X for dll and security
Microsof ActiveX Data Object 2.X Library
Puis dans un module, écrire le code suivant :
Function RenommerChamp (NomTable As String , Ancien As String , Nouveau As String ) As Boolean
On Error GoTo err :
Dim MCat As New ADOX. Catalog
Dim MTable As ADOX. Table
Dim MField As ADOX. Column
Set MCat. ActiveConnection = CurrentProject. Connection
Set MTable = MCat. Tables (NomTable)
Set MField = MTable. Columns (Ancien)
MField. Name = Nouveau
RenommerChamp = True
err :
Set MCat = Nothing
Set MTable = Nothing
Set MField = Nothing
End Function
|
Utilisation :
MsgBox RenommerChamp (" produit2 " , " stock " , " Stock1 " )
|
Renomme le champ stock de la table produit en stock1 et affiche true si l'opération a réussie, false sinon.
|
lien : Tutoriel de JM Rabilloud sur ADOX
|
| auteur : Tofalu | Pour exécuter ce code il faut activer la référence : Microsoft DAO 3.x Object Library
Dans un module placer le code suivant : Public sub RenommerChamp (PTable as string ,POld as string ,PNew as String )
On error goto err :
Dim VTable as DAO. Tabledef
Dim VField as DAO. Field
set VTable= currentDb. TableDefs (PTable)
set VField= VTable. Fields (POld)
VField. Name = PNew
set VField= Nothing
set VTable= Nothing
exit sub
err :
msgbox " L\'action renommer le champ a échouée "
End Sub
|
Voici comment renommer le champ test de la table MaTable en essai RenommerChamp " MaTable " ," test " ," essai "
|
|
lien : Comment renommer un champ en SQL ?
lien : Définition et manipulation de données avec DAO par Tofalu
lien : Comment déclarer une référence dans MS-Access ?
|
| auteur : Tofalu | Tout d'abord ajouter les références suivantes dans votre projet :
Microsot ADO Ext 2.X for dll and security
Microsof ActiveX Data Object 2.X Library
Puis dans un module, écrire le code suivant : Function SupprimerChamp (NomTable As String , NomChamp) As String
On Error GoTo err
Dim MCat As New ADOX. Catalog
Set MCat. ActiveConnection = CurrentProject. Connection
MCat. Tables (NomTable). Columns . Delete (NomChamp)
SupprimerChamp = True
err :
Set MCat = Nothing
End Function
|
Utilisation :
MsgBox SupprimerChamp (" Produit " , " C1 " )
|
Ceci affiche true si le champ C1 a été corectement supprimé de la table Produit.
|
lien : Tutoriel de JM Rabilloud sur ADOX
|
| auteur : Lucifer | En règle générale on utilise du numérique lorsqu'on a des calculs à faire dessus (quantité, prix, compteur, ...), sinon on utilise du texte.
Donc ici, le code postal se mettra au format texte.
|
| auteur : Tofalu | Tout d'abord ajouter les références suivantes dans votre projet :
Microsot ADO Ext 2.X for dll and security
Microsof ActiveX Data Object 2.X Library
Function ExisteChamp (NomTable As String , NomChamp As String ) As Boolean
On Error GoTo err :
Dim MCat As New ADOX. Catalog
Dim MTable As ADOX. Table
Dim MField As ADOX. Column
Set MCat. ActiveConnection = CurrentProject. Connection
Set MTable = MCat. Tables (NomTable)
Set MField = MTable. Columns (NomChamp)
ExisteChamp = True
err :
Set MCat = Nothing
Set MTable = Nothing
Set MField = Nothing
End Function
|
Utilisation : Debug. print ExisteChamp (" Produit " , " stock " )
|
Affiche dans la fenêtre de debogage True si le champ existe dans la table Produit , false sinon.
|
lien : Tutoriel de JM Rabilloud sur ADOX
|
| auteur : Drosera | Il faut utiliser la propriété InputMask du champ, exemple :
Forms!MonFormulaire!Téléphone. InputMask = " ##-##-##-##-## "
|
|
| auteur : Maxence HUBICHE | Vous ne pouvez pas mettre de champs calculé dans une table Access.
La maintenance de ces derniers n'est pas toujours efficace.
Vous devez donc faire une requête.
Dans cette requête, prenez tous les champs de la table et faites un champ calculé (ex : Select Champ1 + Champ2 From ...). Utilisez également la fonction vraifaux() si besoin est (afin de ne pas diviser par 0 par exemple).
|
| auteur : FRED.G | Pour exécuter ce code il faut activer la référence : Microsoft DAO 3.x Object Library
Dim db As DAO. Database , tdf As DAO. TableDef , fld As DAO. Field
Dim strDescription As String
Set db = CurrentDb
On Error GoTo GestionErreur
For Each tdf In db. TableDefs
For Each fld In tdf. Fields
strDescription = fld. Properties (" Description " )
If MsgBox (" Nom : " & fld. Name & vbCrLf & vbCrLf & _
" Description : " & strDescription, _
vbOKCancel , _
" Champs de la table : " & tdf. Name ) = vbCancel Then Exit Sub
Next fld
Next tdf
Set fld = Nothing
Set tdf = Nothing
Set db = Nothing
Exit Sub
GestionErreur :
Select Case Err . Number
Case 3270
strDescription = " "
Resume Next
Case Else
MsgBox " Erreur inconnue. " , vbCritical
Set fld = Nothing
Set tdf = Nothing
Set db = Nothing
exit sub
End Select
|
|
lien : Définition et manipulation de données avec DAO par Tofalu
lien : Comment déclarer une référence dans MS-Access ?
|
| auteur : Tofalu | Pour exécuter ce code il faut activer la référence : Microsoft DAO 3.x Object Library
Ben le soucis c'est que une clé primaire peut être composée.
Sinon, si tu souhaites connaitre le nom de la clé primaire, je doit bien avoir ça quelque part...
Puis dans un module :
Public Function NomClePrimaire (NomTable As String ) As String
On Error GoTo err
Dim oInd As DAO. Index
Dim oDb As DAO. database
Dim oTbl As DAO. tabledef
Dim oFld As DAO. Field
Set oDb = CurrentDb
Set oTbl = oDb. TableDefs (NomTable)
For Each oInd In oTbl. Indexes
If oInd. Primary Then
For Each oFld In oInd. Fields
NomClePrimaire = NomClePrimaire & oFld. Name & " , "
Next oFld
Exit For
End If
Next oInd
NomClePrimaire = Left (NomClePrimaire, Len (NomClePrimaire) - 1 )
Exit Function
err :
End Function
|
Utilisation :
Msgbox NomClePrimaire (" MaTable " )
|
Dans le cas de clés primaires composées, cela retourne le nom des champs séparés par des virgules.
|
lien : Définition et manipulation de données avec DAO par Tofalu
lien : Comment déclarer une référence dans MS-Access ?
|
| auteur : fdraven |
Dans la table, quand vous sélectionnez le champ qui doit être numérique, vous devez avoir :
- taille du champ : réel simple
- Format : standard
- Décimal : 3
Ainsi, si le nombre stocké est 16, il sera affiché : 16.000.
|
| auteur : cakeke |
ALTER TABLE < table1> ALTER COLUMN < champ1> < typeChamp1> DEFAULT < valeurParDéfaut>
|
|
| auteur : Tofalu |
Il faut ajouter la référence Microsoft ADO Ext. For DDL and Security à votre projet puis travailler avec les objets ADOX.Key.
Exemple :
Sub PrimaryKeyADO ()
Dim oCat As ADOX. Catalog
Dim oTbl As ADOX. Table
Dim oKey As ADOX. Key
Set oCat = New ADOX. Catalog
Set oCat. ActiveConnection = CurrentProject. Connection
Set oTbl = oCat. Tables (" MaTable " )
Set oKey = New ADOX. Key
With oKey
. Name = " PK_MaTable "
. Type = adKeyPrimary
With . Columns
. Append " champ1 "
. Append " champ2 "
. Append " champ3 "
End With
End With
oTbl. Keys . Append oKey
End Sub
|
|
| auteur : Tofalu | Pour exécuter ce code il faut activer la référence : Microsoft DAO 3.x Object Library puis travailler avec les objets DAO.Index.
Exemple :
Sub PrimaryKey ()
Dim oDb As DAO. Database
Dim oTbl As DAO. TableDef
Dim oIdx As DAO. Index
Set oDb = CurrentDb
Set oTbl = oDb. TableDefs (" MaTable " )
Set oIdx = oTbl. CreateIndex (" PK_MaTable " )
With oIdx
. Fields . Append . CreateField (" Champ1 " )
. Fields . Append . CreateField (" Champ2 " )
. Fields . Append . CreateField (" Champ3 " )
. Primary = True
. Required = True
End With
oTbl. Indexes . Append oIdx
End Sub
|
|
lien : Définition et manipulation de données avec DAO par Tofalu
lien : Comment déclarer une référence dans MS-Access ?
|
| auteur : Tofalu |
Si votre champ est de type numérique entier long, vous pouvez utiliser une méthode peu documentée du moteur Jet : la fonction GenUniqueId
Créer votre champ, définissez son type et fixer sa valeur par défaut à :
=GenUniqueId()
|
| auteur : loufab | La propiété Valeur par défaut directement dans les propriétés du champ, dans la structure de la table.
|
| auteur : Cafeine | Il n'est pas possible de créer un champ de type hypertexte via un SQL ALTER, puisqu'à ma connaissance les possibilités sont "réduites" à cela : Texte : VARCHAR (255 caractères), CHAR(n) ou TEXT(n) (n caractères), LONGTEXT (mémo, 32K max.) ;
Fichier binaire : LONGBINARY (Objet OLE) ;
Compteur : COUNTER (NuméroAuto).Booléen : BIT ;
Nombre entier : SHORT (entier), SMALLINT (entier), LONG (entier long), INTEGER (entier long), BYTE (octet) ;
Nombre réel : SINGLE (réel simple), DOUBLE (réel double), NUMERIC (réel double) ;
Monétaire : CURRENCY, MONEY ;
Date/Heure : DATE, TIME, DATETIME ;
|
Pour faire cela je vous renvoi vers le tuto DAO de Tofalu dans la partie 4 au paragraphe 4.4.2.
|
lien : Définition et manipulation de données avec DAO par Tofalu
|
| auteur : Tofalu | c'est une des impossibilités avec DAO.
seul remède : ADO
Pour ce code il est nécéssaire de mettre les références => Microsot ADO Ext 2.X for dll and security et Microsoft ActiveX Data Object 2.X Library CurrentProject. Connection . Execute " ALTER TABLE TABLE1 ADD COLUMN ESSAI3 DECIMAL(18,0) "
|
|
| auteur : Meduse | l'erreur 3314 nous indique qu'on essaie de remplir un enregistrement alors
qu'un des champs (voir plusieurs) de la table ne peut être null.
En VBA ça correspond à la propriété Required de l'objet Field :
si Required = True, le champ ne peut pas accepter de Null. Sub NoNull ()
Dim db As DAO. Database , tdf As DAO. TableDef , fld As DAO. Field
Dim strDescription As String
Set db = CurrentDb
Set tdf = db. TableDefs (" maTABLE " )
For Each fld In tdf. Fields
If fld. Required = True Then
If IsNull (Me. Controls (fld. Name )) Then MsgBox " REMPLISSEZ MOI LE CHAMP " & fld. Name
End If
Next fld
Set fld = Nothing
Set tdf = Nothing
Set db = Nothing
Exit Sub
|
|
| auteur : Tofalu | Quand vous disposez d'une grande table, il est parfois nécessaire de trier les champs par ordre alphabétique pour s'y retrouver facilement.
Cela peut être fait en VBA avec DAO en attribuant la même propriété OrdinalPosition à tous les champs.
Pour exécuter ce code il faut activer la référence : Microsoft DAO 3.x Object Library Sub ranger ()
Dim db As DAO. Database
Dim fld As DAO. Field
Dim tbl As DAO. TableDef
Set db = CurrentDb
Set tbl = db. TableDefs (" essai " )
For Each fld In tbl. Fields
fld. OrdinalPosition = 1
Next
End Sub
|
En utilisant plusieurs valeurs de OrdinalPosition, il est possible de créer des groupes. Exemple pour afficher les clés primaires en haut de la liste des champs : Sub ranger ()
Dim db As DAO. Database
Dim fld As DAO. Field
Dim tbl As DAO. TableDef
Set db = CurrentDb
Set tbl = db. TableDefs (" essai " )
For Each fld In tbl. Fields
If IsPrimary (fld, tbl) Then
fld. OrdinalPosition = 1
Else
fld. OrdinalPosition = 2
End If
Next
End Sub
Function IsPrimary (fld As DAO. Field , tbl As DAO. TableDef ) As Boolean
On Error GoTo err
Dim ind As DAO. Index
Dim tfld As DAO. Field
For Each ind In tbl. Indexes
If ind. Primary Then
Set tfld = ind. Fields (fld. Name )
IsPrimary = True
End If
Next ind
err :
End Function
|
|
lien : Définition et manipulation de données avec DAO par Tofalu
lien : Comment déclarer une référence dans MS-Access ?
|
Consultez les autres F.A.Q's
Les sources présentés sur cette pages sont libre de droits,
et vous pouvez les utiliser à votre convenance. Par contre cette page de présentation de ces sources constitue une oeuvre intellectuelle protégée par les droits d'auteurs.
Copyright ©2004
Developpez LLC. Tout droits réservés Developpez LLC.
Aucune reproduction, même partielle, ne peut être faite de ce site et de
l'ensemble de son contenu : textes, documents et images sans l'autorisation
expresse de Developpez LLC. Sinon vous encourez selon la loi jusqu'à 3 ans
de prison et jusqu'à 300 000 E de dommages et intérets.
Cette page est déposée à la SACD.
|