Bonjour,
j'ai un problème compliqué, auquel je n'ai pas réussi à trouver de solution qui fonctionne.
On va commencer par le tout début:
j'ai une table ("catalog") dans laquelle je voudrais faire des insertions en masse.
Pour cela, j'ai créé un formulaire avec des champs indépendants, et un sous-formulaire basé sur une requête sur la table ("catalog_temp")
(select * from catalog_temp).
j'utilise la table catalog_temp (qui est une copie conforme de la structure de catalog) pour stocker les données avant de les transférer dans la table catalog (oui je sais j'aurais pu faire mieux mais j'ai cherché et j'ai pas réussi... ça marche pas et ça me met des erreurs --> je suis preneuse si vous avez des idées)
les champs indépendants du formulaire servent à écrire des données correspondant aux champs de la table catalog_temp.
j'ai programmé un bouton qui, lorsqu'on clique dessus, insère le contenu des champs dans la table catalog_temp.
après rafraichissement, je vois apparaitre les champs que je voulais insérer dans le sous-formulaire.
cette méthode me permet en cliquant plusieurs fois d'affilée d'insérer plein de fois la même chose, puis de modifier chaque champ si nécessaire (ça m'évite de saisir 15 fois les même données, et je trouve l'interface attractive).
bon, alors pour l'insertion j'ai fait un gros code tout caca:
Caca hein ? mais ça fonctionne (idées d'améliorations bienvenues)
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23 'On vérifie qu'il y a au moins un champ qui a été saisi dans le formulaire If (Me.code = "" Or IsNull(Me.code)) And (Me.buisnessdivision_id = "" Or IsNull(Me.buisnessdivision_id)) And (Me.product_id = "" Or IsNull(Me.product_id)) And (Me.designation = "" Or IsNull(Me.designation)) And (Me.activities = "" Or IsNull(Me.activities)) And (Me.technologies = "" Or IsNull(Me.technologies)) And (Me.volume = "" Or IsNull(Me.volume)) And (Me.type = "" Or IsNull(Me.type)) And (Me.competences = "" Or IsNull(Me.competences)) And (Me.version = "" Or IsNull(Me.version)) And (Me.pc = "" Or IsNull(Me.pc)) And (Me.alea = "" Or IsNull(Me.alea)) Then MsgBox "Vous n'avez saisi aucune donnée à insérer." + Chr(13) + "Vous devez saisir des données avant d'insérer des lignes.", 64, "Attention !!!" Else 'Sinon 'On désactive les warnings DoCmd.SetWarnings False 'Construction de la requête d'insertion If (Me.code <> "" Or Not IsNull(Me.code)) Then If req1 = "" Then req1 = req1 + "code" Else req1 = req1 + ", code" End If End If 'encore plein de If........puis: REQUETE = "INSERT INTO catalog_sbu_temp (" + req1 + ") VALUES (" + req1 + ");" 'voilà, on exécute la requête SQL puis c parti !
Bon, une fois tout ça inséré, c'est là qu'arrive mon problème:
ne sachant pas me servir d'un recordset (je ne sais même pas ce que c'est, pourtant j'ai lu tout ce que j'ai pu mais j'ai pas compris), mais j'ai quand même utilisé le recordset:
et là, erreur... incompatibilité de type.........
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18 Dim rst As Variant 'oui variant, sinon ça marchait pas pour le movenext Dim db As DAO.Database Set db = CurrentDb() Set rst = db.OpenRecordset("r_catalog_sbu_temp", DB_OPEN_DYNASET) Dim TempCode, TempDes, TempProd, TempBD, ReqInsert As String Dim Increment As Integer Do Until Count = Increment TempCode = ("code") TempBD = ("buisnessdivision_id") TempProd = ("product_id") TempDes = ("designation") ReqInsert = "INSERT INTO catalog (code, buisnessdivision_id, product_id, designation VALUES (" + TempCode + "," + TempBD + "," + TempProd + "," + TempDes +");" rst.MoveNext Increment = Increment + 1 Loop
HELLLLP !
Thanx
Partager