Précédent   Forum des professionnels en informatique > Logiciels > Microsoft Office > Access
Access Forum d'entraide sur Microsoft Access. Avant de poster -> La F.A.Q Access
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 13/09/2011, 14h22   #1
Invité régulier
 
Homme Ludo HARRAULT
Technicien CAO
Inscription : janvier 2007
Messages : 13
Détails du profil
Informations personnelles :
Nom : Homme Ludo HARRAULT
Localisation : France, Maine et Loire (Pays de la Loire)

Informations professionnelles :
Activité : Technicien CAO
Secteur : Industrie

Informations forums :
Inscription : janvier 2007
Messages : 13
Points : 6
Points : 6
Par défaut Problème pour écraser un enregistrement d'une table

Bonjour,

Voilà : j'ai un formulaire ("Modification Enregistrement") avec plusieurs champs qui sont sauvegarder dans la table "Production". Je souhaite sauvegarder certains de ces champs dans la table "Code Export JDE". Mon problème c'est que je n'arrive pas à écraser un enregistrement déjà existant dans la table "Code Export JDE".
Je pensais faire une sorte de comparaison entre le champ "NumFab" du formulaire et le "Numfab" présent dans la table "Code Export JDE".
Je précise que je souhaite le faire en VBA car je ne sais pas trop utilisé les requêtes

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
Private Sub Commande274_Click()
 
Dim ThisDb As Database
Dim RnRs As Recordset
 
    Set ThisDb = DBEngine.Workspaces(0).Databases(0)
 
 
    DBEngine.Workspaces(0).BeginTrans
 
 
    Set RnRs = ThisDb.OpenRecordset("Code Export JDE", dbOpenDynaset)
    If Forms![Modification Enregistrement]![NumFab] = DLookup(Me.NumFab.Value, "Code Export JDE") Then
    RnRs.Delete
    RnRs.AddNew
    RnRs!Client = Me.Client
    RnRs!NomTechnicien = Me.NomTechnicien
    RnRs!Adresse = Me.Adresse
    RnRs!Adresse2 = Me.Adresse2
    RnRs!Adresse3 = Me.Adresse3
    RnRs!Adresse4 = Me.Adresse4
    RnRs!NumFab = Me.NumFab
    RnRs!Datedujour = Me.Datedujour
    RnRs!DateLivraison = Me.DateLivraison
    RnRs!NumCde = Me.NumCde
    RnRs!NomCarte = Me.NomCarte
    RnRs!NomCarte2 = Me.NomCarte2
    RnRs!NomCarte3 = Me.NomCarte3
    RnRs!NomCarte4 = Me.NomCarte4
    RnRs!Country = Me.Country
    RnRs!Currency = Me.Currency
    RnRs!DeliveryInvoice = Me.DeliveryInvoice
    RnRs!DeliveryInvoice2 = Me.DeliveryInvoice2
    RnRs!DeliveryInvoice3 = Me.DeliveryInvoice3
    RnRs!DeliveryInvoice4 = Me.DeliveryInvoice4
    RnRs!JDE = Me.JDE
    RnRs!City = Me.City
    RnRs!CityInvoice = Me.CityInvoice
    RnRs!ZipCode = Me.ZipCode
    RnRs!ZipCodeInvoice = Me.ZipCodeInvoice
    RnRs!DeliveryMethod = Me.DeliveryMethod
    RnRs!ItemAlpha = Me.ItemAlpha
    RnRs.Update
    RnRs.Close
 
    Else
    RnRs.AddNew
    RnRs!Client = Me.Client
    RnRs!NomTechnicien = Me.NomTechnicien
    RnRs!Adresse = Me.Adresse
    RnRs!Adresse2 = Me.Adresse2
    RnRs!Adresse3 = Me.Adresse3
    RnRs!Adresse4 = Me.Adresse4
    RnRs!NumFab = Me.NumFab
    RnRs!Datedujour = Me.Datedujour
    RnRs!DateLivraison = Me.DateLivraison
    RnRs!NumCde = Me.NumCde
    RnRs!NomCarte = Me.NomCarte
    RnRs!NomCarte2 = Me.NomCarte2
    RnRs!NomCarte3 = Me.NomCarte3
    RnRs!NomCarte4 = Me.NomCarte4
    RnRs!Country = Me.Country
    RnRs!Currency = Me.Currency
    RnRs!DeliveryInvoice = Me.DeliveryInvoice
    RnRs!DeliveryInvoice2 = Me.DeliveryInvoice2
    RnRs!DeliveryInvoice3 = Me.DeliveryInvoice3
    RnRs!DeliveryInvoice4 = Me.DeliveryInvoice4
    RnRs!JDE = Me.JDE
    RnRs!City = Me.City
    RnRs!CityInvoice = Me.CityInvoice
    RnRs!ZipCode = Me.ZipCode
    RnRs!ZipCodeInvoice = Me.ZipCodeInvoice
    RnRs!DeliveryMethod = Me.DeliveryMethod
    RnRs!ItemAlpha = Me.ItemAlpha
    RnRs.Update
    RnRs.Close
 
    DBEngine.Workspaces(0).CommitTrans
 
End If
 
    DoCmd.Close acForm, "Modification Enregistrement", acSaveYes
 
 
End Sub
Pouvez-vous m'aider svp, merci.
mumuludo est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 13/09/2011, 19h26   #2
Rédacteur/Modérateur

 
Avatar de loufab
 
Homme Fabrice CONSTANS
Ingénieur développement logiciels
Inscription : avril 2005
Messages : 7 089
Détails du profil
Informations personnelles :
Nom : Homme Fabrice CONSTANS
Localisation : France, Haute Garonne (Midi Pyrénées)

Informations professionnelles :
Activité : Ingénieur développement logiciels

Informations forums :
Inscription : avril 2005
Messages : 7 089
Points : 11 622
Points : 11 622
Bonjour,

Visiblement tu as également un peu de mal avec DAO.
Le commitrans doit être placé après le endif.
Au lieu de faire un dlookup utilise un findfirst.
Si les affectation sont identiques pourquoi les répéter alors que seul le delete est conditionné ?

Code :
1
2
3
4
5
6
7
8
9
10
11
12
 
    Set RnRs = ThisDb.OpenRecordset("Code Export JDE", dbOpenDynaset)
    rnrs.findfirst "NumFab=" & forms.[Modification Enregistrement]![NumFab]    
    If not rnrs.nomatch then 
       RnRs.Delete
    endif    
    RnRs.AddNew
    rnrs.fields("...") = me.....
    ...
    rnrs.update
    rnrs.close
    set rnrs = nothing
Note que la syntaxe de ton dlookup n'est pas correcte. Il existe un tuto pour les fonction de domaine et pour DAO.
Note également qu'un écrasement ne nécessite pas forcément un delete, puisque tu écrases des valeurs existantes.

Je te conseille de les lire tout les 2.

Cordialement,
__________________
Classe MELA(CRUD) Opérateur IN et zone de liste
MsGraph et VBA - 1e Partie 2e partie
Entête d'états-Opérateur LIKE-Evénements formulaires-Cours 2010
Complément :Générateur de msgbox
Visitez mon Blog
Les questions techniques par MP ne sont pas lues et je ne pratique pas l'extispicine
loufab est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 14/09/2011, 08h39   #3
Invité régulier
 
Homme Ludo HARRAULT
Technicien CAO
Inscription : janvier 2007
Messages : 13
Détails du profil
Informations personnelles :
Nom : Homme Ludo HARRAULT
Localisation : France, Maine et Loire (Pays de la Loire)

Informations professionnelles :
Activité : Technicien CAO
Secteur : Industrie

Informations forums :
Inscription : janvier 2007
Messages : 13
Points : 6
Points : 6
Merci Loufab pour les infos.

J'ai toujours eu des problèmes avec DAO, syntaxe, ...

Je vais regarder cela de plus près car je risque d'en avoir encore besoin pour ma base.
mumuludo est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 00h19.


 
 
 
 
Partenaires

Hébergement Web