| auteur : Team Access |
DAO
Sub DAOOpenRecordset ()
Dim db As DAO. Database , rst As DAO. Recordset , fld As DAO. Field
Dim sSQL As String
Set db = DBEngine. OpenDatabase (" .\Comptoir.mdb " )
sSQL = " Select * From CLIENTS Where Région= \'WA\' "
Set rst = db. OpenRecordset (sSQL, dbOpenForwardOnly, dbReadOnly)
rst. Close
End Sub
|
Notes :
-> Il est important d'écrire "DAO." lors de la déclaration.
-> Pensez également à cocher la référence Microsoft DAO 3.6 Object Library ( Dans un module faites Outils / références )
ADO
Sub ADOOpenRecordset ()
Dim cnn As New ADODB. connection , rst As New ADODB. Recordset , fld As ADODB. Field
cnn. Open " Provider=Microsoft.Jet.OLEDB.4.0; " & " Data Source=.\Comptoir.mdb; "
rst. Open " SELECT * FROM Clients WHERE Région =\'WA\' " , cnn, adOpenForwardOnly , adLockReadOnly
rst. Close
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 : FRED.G | Pour un DAO.Recordset :
Pour exécuter ce code il faut activer la référence : Microsoft DAO 3.x Object Library
- Si le recordset est de type Table (dbOpenTable) : utilisez la méthode Seek.
La méhode Seek requiert l'utilisation d'une table indexée (voir l'aide pour plus de d'infos).
Lorsque vous utilisez la méthode OpenRecordset, si vous ne précisez pas l'argument type, vba créera par défaut un recordset de type Table si celui-ci est basé sur une table.
- Pour les autres types de recordset : utilisez les méthodes FindFirst / FindLast / FindNext / FindPrevious.
Pour un ADODB.Recordset :
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
utilisez la méthode Find
|
lien : Définition et manipulation de données avec DAO par Tofalu
lien : Comment déclarer une référence dans MS-Access ?
|
| auteur : Team Access | On ne peut effacer la clé primaire sans effacer les clés étrangères correspondantes :
L'intégrité référentielle est un mécanisme de vérification qui s'assure à chaque ajout, modification, suppression d'une clé (étrangère ou primaire) qu'il y aura toujours la clé primaire correspondant à la clé étrangère.
Cependant il est parfaitement possible de supprimer des clés étrangères.
|
| auteur : Drosera | Vous essayez de supprimer une table sans succès en utilisant une requête de type "DROP TABLE" ou en utilisant la commande DeleteObject ?
Cela provient certainement d'un RecordSet chargé avec les données de la table. Cette dernière est alors considérée comme "verrouillée" et donc impossible à supprimer.
Il suffit de fermer le RecordSet pour déverrouiller la table :
Cette ligne doit bien sûr être placée avant la suppression.
|
| auteur : Team Access | Voici comment effacer le contenu d'une table :
dim SQL as string
SQL = " Delete * From TABLE "
Docmd. RunSQL SQL
|
Il suffit de réitérer l'action pour chaque table.
On peut aussi imaginer récupérer le nom de toutes les tables dans un tableau, et pour chaque table exécuter la suppression.
|
lien : Comment effacer tout le contenu d'une table ?
|
| auteur : Team Access | DAO
Pour exécuter ce code il faut activer la référence : Microsoft DAO 3.x Object Library Sub DAOExecuteBulkOpQuery ()
Dim db As DAO. Database
Set db = DBEngine. OpenDatabase (" .\Comptoir.mdb " )
db. Execute " Update CLIENTS Set PAYS = \'États-Unis\' Where PAYS = \'USA\' "
Debug. Print " Records Affected = " & db. RecordsAffected
db. Close
End Sub
|
ADO
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 Sub ADOExecuteBulkOpQuery ()
Dim cnn As New ADODB. connection , iAffected As Integer
Dim sSQL As String
cnn. Open " Provider=Microsoft.Jet.OLEDB.4.0; " & " Data Source=.\Comptoir.mdb; "
sSQL = " Update CLIENTS Set PAYS = \'États-Unis\' Where PAYS = \'USA\' "
cnn. Execute sSQL, iAffected, adExecuteNoRecords
Debug. Print " Records Affected = " & iAffected
cnn. Close
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 : FRED.G | Tout d'abord, vérifiez que l'option d'avertissement n'est pas déselectionnée dans access :
Menu Outils, Options, Modifier/Rechercher, Confirmer => Requête Action = Oui
Ensuite, si vous utilisez la méthode Docmd.SetWarnings, assurez-vous que le dernier appel avant l'exécution de votre requête active les messages.
Enfin vous devez utiliser la méthode Docmd.RunSql car la méthode Execute d'un objet Database ne déclenche jamais les messages d'avertissement access. Docmd. SetWarnings True
Docmd. RunSql " " Update MATABLE Set MATABLE. [MONCHAMP] = " " DVP. COM " " ;"
|
|
| auteur : Team Access | Il faut faire ceci : Dim val As String
val = " l\'exemple "
CurrentDb. Execute " Insert Into TEST Values( " " " & val & " " " ) "
|
|
| auteur : Tofalu | Voici une solution :
Pour exécuter ce code il faut activer la référence : Microsoft DAO 3.x Object Library
Sub supp ()
Dim oDb As DAO. Database
Dim oQdf As DAO. QueryDef
Dim strReqName As String
Set oDb = CurrentDb
strReqName = " R1 "
For Each oQdf In oDb. QueryDefs
With oQdf
If . Name = strReqName Then
oDb. QueryDefs . Delete strReqName
Exit For
End If
End With
Next oQdf
End Sub
|
Le même code avec une gestion d'erreur : Sub supp ()
On Error GoTo err
Dim oDb As DAO. Database
Dim oQdf As DAO. QueryDef
Dim strReqName As String
Set oDb = CurrentDb
strReqName = " R2 "
oDb. QueryDefs . Delete strReqName
MsgBox " La requête " & strReqName & " a été supprimée "
fin :
Set oDb = Nothing
Exit Sub
err :
Select Case err . Number
Case 3265 : MsgBox " La requête n'existe pas "
Case Else : MsgBox " Erreur critique inconnue "
End Select
Resume fin
End Sub
|
|
lien : Comment savoir si une table existe ?
lien : Comment supprimer une table si elle existe ?
lien : Définition et manipulation de données avec DAO par Tofalu
lien : Comment déclarer une référence dans MS-Access ?
|
| auteur : Maxence HUBICHE | Il faut utiliser des marqueurs différents suivant le type de valeur utilisé :
Numérique (aucun délimiteur)
SQL & " And roulage!numéro = " & Me. cmbRechNumero
|
Texte ( Chr(34) crée des ")
SQL = SQL & " And roulage!repère = " & chr (34 ) & Me. cmbRechRepere & chr (34 )
|
Date (Délimiteur # et format mm/dd/yyyy)
SQL & " And roulage!LADATE= # " & format (Me. txtRechDateDebut ," mm/dd/yyyy " ) & " # "
|
|
| auteur : Maxence HUBICHE | Testé sous Access 2000 :
Sub Sauvegarder ()
Dim myRS1 As New ADODB. Recordset
Dim myRS2 As New ADODB. Recordset
myRS1. Open " Table1 " , CurrentProject. Connection , adOpenDynamic , adLockOptimistic
myRS2. Open " Table2 " , CurrentProject. Connection , adOpenDynamic , adLockOptimistic
Do Until myRS2. EOF
With myRS1
. AddNew Array (" Champ1 " , " Champ2 " , " Champ3 " ), _
Array (myRS2 (" Alpha " ), myRS2 (" Beta " ), myRS2 (" Gamma " ))
. Update
End With
myRS2. Delete
myRS2. MoveNext
Loop
myRS1. Close
myRS2. Close
Set myRS1 = Nothing
Set myRS2 = Nothing
End Sub
|
|
| auteur : Cafeine | Select TABLE. CHAMP1 , Sum (TABLE. CHAMP2 ) AS CHAMP2 Into NOUVELLETABLE
From TABLE
Group By TABLE. CHAMP1 ,
Order By TABLE. CHAMP1 ,
|
Où Champs1 est le champ comportant les doublons à supprimer.
|
| auteur : Maxence HUBICHE | Dim cn as ADODB. Connection
Dim cmd as ADODB. Command
Dim insQuery as String
Set cn = New ADODB. Connection
Set cmd = New ADODB. Command
cn. ConnectionString = " Provider=Microsoft.Jet.OLEDB.4.0; " & _
" Data Source=D:\CS527\P1\bd1_archive.mdb;Persist Security Info=False; " & _
" Jet OLEDB:System database=c:\LePath\LeFichier.mdw "
insQuery = " INSERT INTO purchasearchive VALUES ( " & Chr (34 ) _
& PUID & Chr (34 ) & " , " & Chr (34 ) _
& cardNum & Chr (34 ) & " , " & Chr (34 ) _
& cardType & Chr (34 ) & " , " & Chr (34 ) _
& productID & Chr (34 ) & " ,# " _
& date & " #, " _
& number & " ); "
cn. Open
cmd. ActiveConnection = cn
cmd. CommandText = insQuery
cmd. Execute
|
Pour se connecter à une bbs sécurisée au niveau utilisateur :
dans la chaîne de connexion, ajoute ceci :
Password= LeMotDePasse;User ID= LeUser
|
en mettant le bon mot de passe et le bon User
|
| auteur : Maxence HUBICHE | Si la requête utilise des critères basés sur des champs indexés, alors mieux vaut passer par une requete et OpenQuery.
Docmd.Runsql ne fait qu'exécuter une instruction sql tandis que OpenQuery exécute une requête enregistrée (bénéficiant de la technologie Rushmore).
Cette technologie est notamment basée sur l'usage des index pour la recherche d'un enregistrement.
Ces index sont stockés dans une structure cachée.
Lorsque la requête s'exécute, si les critères sont posés sur des champs indexés, la requête peut être optimisée car la recherche se fait sur la structure des index et non directement sur la table.
|
| auteur : Lucifer | Nous avons une requête du type :
Parameters TON_PARAM Text;
Insert Into TABLE1 Select CHAMP1 From TABLE2 Where CHAMP2 = [TON_PARAM];
|
Voici un exemple de code :
Set qdf= CurrentDb. QueryDefs (" TAREQUETE " )
With qdf
. Parameters (" TON_PARAM " ) = TaVariable
. Execute
End With
|
|
| auteur : Team Access | Par exemple ici, on tente d'enregistrer dans une table un nom qui existe déjà. Or le champ Nom n'accepte pas les doublons.
Sub Form_Error (DataErr As Integer, Response As Integer)
Const ERR_DOUBLON = 3022
Select Case DataErr
Case ERR_DOUBLON
MsgBox " Ce nom existe déjà. " , vbExclamation , " Attention "
[Client]. SetFocus
Response = acDataErrContinue
End Select
End Sub
|
|
lien : Comment personnaliser les messages d'erreur ?
|
| auteur : Petogaz | requete = " Select * From carnet Where Prénom Like \'* " & prenom & " *\' "
|
Dans ce cas, prénom est une variable ou un contrôle contenant la chaîne que nous cherchons.
|
| auteur : Cafeine | L'utilisation d'un Recordset rend le traitement plus rapide.
Ce code de Caféine vous permettra de constatez vous même la différence.
Pour exécuter ce code il faut activer la référence : Microsoft DAO 3.x Object Library
Function BenchmarkIt ()
Dim t0 As Single, t1 As Single
Dim rst As DAO. Recordset
Dim i As Long
t0 = Timer
For i = 1 To 5000
CurrentDb. Execute " INSERT INTO [tblINSERT] VALUES ( " & Format (i, " 000000 " ) & " ); "
Next i
t1 = Timer
Debug. Print " Exécution par INSERT : " & Format (t1 - t0, " 0.000 " ) & " s "
t0 = Timer
Set rst = CurrentDb. OpenRecordset (" tblRecordset " )
For i = 1 To 5000
rst. AddNew
rst!dum = Format (i, " 000000 " )
rst. Update
Next i
rst. Close
set rst = Nothing
t1 = Timer
Debug. Print " Exécution par RECORDSET : " & Format (t1 - t0, " 0.000 " ) & " s "
End Function
|
Ce code donne :
benchmarkit
Exécution par INSERT : 5,328 s
Exécution par RECORDSET : 0,141 s
Il est possible que la différence soit due au fait que le recordset travaille avec la mémoire avant d'écrire sur le disque, alors que n requêtes provoquent n accès disque.
|
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.
|