Problème de modification de tables via un formulaire
Bonjour je viens solliciter votre attention car j'ai remarqué quelques mauvais points dans mon projet aux-quels je ne trouve pas de réponses, je dois mettre à jour une table en fonction des champs de mon formulaire( Une zone de texte, une liste et un bouton).
Voici mon code:
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
|
Dim rst As DAO.Recordset
Dim rst2 As DAO.Recordset
Dim plan As String
Dim zone As String
Dim str1 As String
Dim str2 As String
Dim SQL As String
zone = Texte312.Value
plan = Modifiable297.Value
'Ici on selectionne l'ID correspondant au nom de plan dans la table DRAWINGLIST
Set rst = CurrentDb.OpenRecordset( _
"SELECT [DRAWINGID] FROM [DRAWINGLIST] WHERE [NAME] = 'PLP1305143-A1'", _
dbOpenSnapshot) ' Problème n°1 ici
str1 = rst("DRAWINGID")
MsgBox "L'ID est " & str1
rst.Close
Set rst = Nothing
'Ici on selectionne les ID correspondant au numéro de plan sélectionné précédement
Set rst2 = CurrentDb.OpenRecordset( _
"SELECT [ID] FROM [COMPONENTS] WHERE [DRAWINGID] = " & CStr(str1) & "", _
dbOpenSnapshot)
str2 = rst2("ID")
MsgBox "L'ID est " & str2
With rst2 'Faire des actions sur le recordset
' Trouver première occurrence
Do While Not .NoMatch 'Probleme n°2 ici
SQL = "UPDATE SOLODATA SET SOLODATA.TAG1=zone where SOLODATA.SOLODATALINK=str2"
DoCmd.RunSQL SQL
Loop
End With
'str2 = rst2("ID")
MsgBox "L'ID est " & str2
rst2.Close
Set rst2 = Nothing |
Voici les quelques points qui me pose problème:
1- Dans mon premier recorset je suis obligé de rentrer une valeur en dur ('PLP1305143-A1') sinon une erreur survient: "Type de données incompatible dans l'expression du critère".
2- Probleme majeur: je ne sais pas vraiment comment modifier tout les champs concerné par mon 2eme recorset, actuellement il modifie juste le premier champs concerné.
3- Lors de l'éxécution une fenetre s'ouvre redemandant la valeur de ma variable "zone" et de "str2" ce qui est embetant à remplir pour des milliers de champs concerné.
merci d'avance, cordialement