| auteur : Maxence HUBICHE | Il faut créer le champ directement dans la table source. Donc si la table est une table d'une base Access, il est possible de passer par un autre workspace (ou une autre connexion, mais ça nécessiterait l'ajout des adox).
Dans ce Workspace, ouvrez la database en fonction de la propriété connect de la table (ou de la propriété qui donne la base d'origine) et là, vous pourrez ajouter votre champ.
|
| auteur : Team Access | Application. SetHiddenAttribute acTable, NomdeTaTable, True
|
|
| auteur : Gdal |
Si la table n'est pas trop grosse
on peut utiliser Dmax dans la propriété source contrôle du champ txt_1
Source contrôle.....=MaxDom("nombre";"[Chiffre]")
PS: Cette solution est moins rapide que la deuxième pour les tables contenant beaucoup d'enregistrements, car les fonctions domaine (Dmax,dlookup,dmin,etc... sont très lentes par rapport à un recordset)
On crée un recordset
Pour exécuter ce code il faut activer la référence : Microsoft DAO 3.x Object Library Dim rst As DAO. Recordset
Set rst = CurrentDb. OpenRecordset (" SELECT MAX([Nombre])AS Maximum FROM [Chiffre] " )
Me!txt_1 = rst!Maximum
rst. Close
|
|
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
Comme leurs noms l'indiquent, la première fonction ne permet de lier qu'une seule table avec un nom donné, alors que la seconde liera toutes les tables.
Vous devrez bien évidemment modifier ces codes afin qu'ils répondent parfaitement à votre attente.
Voici les variables et valeurs que vous aurez besoin de mettre à jour :
strMotPasse, strCheminBd, strNomTable
Sub lier ()
Dim strMotPasse As String
Dim strCheminBd As String
Dim strNomTable As String
Dim strConnect As String
Dim oDb As DAO. Database
Dim oTbl As DAO. TableDef
strMotPasse = " pass "
strCheminBd = " c:\test.mdb "
strNomTable = " Table1 "
Set oDb = CurrentDb
strConnect = " MS Access;pwd= " & strMotPasse & " ;DATABASE= " & strCheminBd
Set oTbl = oDb. CreateTableDef (strNomTable)
With oTbl
. Connect = strConnect
. SourceTableName = strNomTable
End With
oDb. TableDefs . Append oTbl: oDb. TableDefs . Refresh
End Sub
|
Sub lierToutes ()
Dim strMotPasse As String
Dim strCheminBd As String
Dim strConnect As String
Dim strNomsTables () As String
Dim strTemp As String
Dim i As Integer
Dim oDb As DAO. Database
Dim oDbSource As DAO. Database
Dim oTbl As DAO. TableDef
Dim oTblSource As DAO. TableDef
strMotPasse = " pass "
strCheminBd = " c:\test.mdb "
strConnect = " MS Access;pwd= " & strMotPasse & " ;DATABASE= " & strCheminBd
Set oDb = CurrentDb
Set oDbSource = DBEngine. OpenDatabase (strCheminBd, True , True , strConnect)
For Each oTblSource In oDbSource. TableDefs
If (oTblSource. Attributes And dbSystemObject) = 0 Then
strTemp = strTemp & oTblSource. Name & " | "
End If
Next
oDbSource. Close : Set oDbSource = Nothing
strNomsTables = Split (Left (strTemp, Len (strTemp) - 1 ), " | " )
For i = 0 To UBound (strNomsTables)
Set oTbl = oDb. CreateTableDef (strNomsTables (i))
oTbl. Connect = strConnect
oTbl. SourceTableName = strNomsTables (i)
oDb. TableDefs . Append oTbl
Next i
oDb. TableDefs . Refresh
End Sub
|
|
lien : Comment avec l'API GetOpenFileNameA ouvrir plusieurs fichiers à la fois ?
lien : Définition et manipulation de données avec DAO par Tofalu
lien : Comment déclarer une référence dans MS-Access ?
lien : Comment utiliser une application en mode multi-utilisateurs par Dolphy35
|
| auteur : Petogaz | Vous venez d'ajouter un enregistrement et vous voulez avoir le numéroauto qui vient de s'incrémenter. L'obtention de ce numéro est différent selon qu'il s'agisse de la méthode DAO ou ADO.
Sous DAO le numéro est disponible immédiatement après l'appel de AddNew.exemple (pour obtenir le code de la ville) :
Pour exécuter ce code il faut activer la référence : Microsoft DAO 3.x Object Library rst. AddNew
Debug. print rst (" Code Ville " )< - - -
rst (" Nom Ville " ) = " TEST "
rst (" Code postal " ) = " 57000 "
rst. Update
|
par contre avec la methode ADO le code est disponible après l'appel de Update. exemple :
Pour exécuter ce code il faut activer les références : Microsot ADO Ext 2.X for dll and security et Microsof ActiveX Data Object 2.X Library rst. AddNew
rst (" Nom Ville " ) = " TEST "
rst (" Code postal " ) = " 57000 "
rst. Update
Debug. Print rst (" Code ville " )
|
|
lien : Définition et manipulation de données avec DAO par Tofalu
lien : Comment déclarer une référence dans MS-Access ?
|
| auteur : User | Pour exécuter ce code il faut activer la référence : Microsoft DAO 3.x Object Library
Une table Table1 avec un champ num (clé primaire) de type Long Integer.
Un formulaire Form1 lié à la Table1 avec un contrôle Num (verrouillé) lié au champ Num de table1:
Et sur l'évènement BeforeInsert du form: Private Sub Form_BeforeInsert (Cancel As Integer)
Dim rs As DAO. Recordset
Set rs = CurrentDb. OpenRecordset (Me. RecordSource , dbOpenSnapshot)
If rs. EOF Then
Me!Num = 1
Else
rs. MoveLast
Me!Num = rs!Num + 1
End If
rs. Close
Set rs = Nothing
End Sub
|
et pour réinitialiser les numéroAuto : Public Function Init_numeroAuto ()
Dim rs As DAO. Recordset
Dim i As Long
On Error Resume Next
Set rs = CurrentDb. OpenRecordset (" Table1 " , dbOpenDynaset)
i = 1
While Not (rs. EOF )
rs. Edit
rs!Num = i
rs. Update
rs. MoveNext
i = i + 1
Wend
rs. Close
Set rs = Nothing
End Function
|
ATTENTION : Ces fonctions sont valables pour des applications monopostes. Attention en réseau aux accès concurrents et simultanés.
|
lien : Définition et manipulation de données avec DAO par Tofalu
lien : Comment déclarer une référence dans MS-Access ?
|
| auteur : Papy Turbo |
Il faut cocher l'option l'option : Outils > Options > onglet Général > Correction automatique de nom, Access fera la mise à jour dans la base en cours.
Ça veut dire hélas, que si vos tables sont dans une base séparée, seule cette base sera mise à jour, pas l'application. C'est un problème qu'on souhaite voir résolu dans une prochaine version d'Access.
Une alternative :
Dans le code, une recherche/remplacement globale permet de tout remplacer d'un coup, mais faut chercher dans chaque requête, formulaire, c'est un travail assez pénible.
|
| auteur : Frank |
Première solution, on cherche tout simplement le numéro auto le plus élevé :
Select Max (monchampsAuto) From matable;
|
Cette seconde solution ne fonctionnera qu'à partir d'Access 2000.
Select @@identity From maTable;
|
Info : La variable @@IDENTITY est une variable globale SQL qui permet de retrouver la dernière valeur utilisée pour un numéro automatique d'une table.
|
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.
|