jeanmi2403 a écrit :Ça ne peut pas se faire tout seul
Mais ça j'en suis conscient mais je ne sais pas comment faire, d'où ce sujet.
Édit 18 heures
J'ai ressorti une base Access. La requête exécutée dans la procédure est celle-ci :
Code : Tout sélectionner
INSERT INTO T_PARTS_A (PAR_A_LIB, PAR_A_TAUX)
SELECT T_SAISIE.SAI_ID, T_PARTS_A_VD.PAR_A_VD_LIB, T_PARTS_A_VD.PAR_A_VD_TAUX
FROM T_SAISIE, T_PARTS_A_VD
WHERE (((T_SAISIE.SAI_ID) In (SELECT Max(SAI_ID) FROM T_SAISIE)));
Mais LO n'en veut pas, il me renvoit ce message d'erreur que je ne comprends pas :
copie2.png
jeanmi2403 a écrit :Ceci dit, je ne compreds pas pourquoi recopier tous les enregistrements de la table pour chaque enregistrement de la table saisie.
Cas pratique : un bulletin de paie. Les tables T_PARTS_A et T_PARTS_B pourraient contenir les cotisations salariales et patronales. À chaque génération d'une fiche, ces cotisations, dont les valeurs sont stockées dans T_PARTS_A_VD et T_PARTS_B_VD, sont incorporées dans ces deux tables (les intitulés ne le sont pas en dur) avec leur taux, leur montant, etc.
Édit 19 heures 10
J'avais oublié une colonne dans le script :
Code : Tout sélectionner
INSERT INTO T_PARTS_A (SAI_ID, PAR_A_LIB, PAR_A_TAUX)
SELECT T_SAISIE.SAI_ID, T_PARTS_A_VD.PAR_A_VD_LIB, T_PARTS_A_VD.PAR_A_VD_TAUX
FROM T_SAISIE, T_PARTS_A_VD
WHERE (((T_SAISIE.SAI_ID) In (SELECT Max(SAI_ID) FROM T_SAISIE)));
Là, oups ! Les données sont copiées dans le dernier enregistrement !
Dernier édit
J'avais oublié de reporter la ligne
Execute. Là je pense que c'est bon :
Code : Tout sélectionner
Sub InsertSaisie
Dim Context As Object
Dim Database As Object
Dim Connection As Object
Dim Statement As Object
Dim strSQL As String
Dim oForm As Object
Dim ODate As Object
Context = CreateUnoService("com.sun.star.sdb.DatabaseContext")
Database = Context.GetByName("mdlSaisie")
Connection = Database.GetConnection("","")
Statement = Connection.CreateStatement()
strSQL = "INSERT INTO T_SAISIE (SAI_ANNEE, SAI_MOIS) SELECT SAI_VD_ANNEE, SAI_VD_MOIS FROM T_SAISIE_VD"
Statement.ExecuteUpdate(strSQL)
strSQL = "INSERT INTO T_PARTS_A (SAI_ID, PAR_A_LIB, PAR_A_TAUX) SELECT T_SAISIE.SAI_ID, T_PARTS_A_VD.PAR_A_VD_LIB, T_PARTS_A_VD.PAR_A_VD_TAUX FROM T_SAISIE, T_PARTS_A_VD WHERE (((T_SAISIE.SAI_ID) In (SELECT Max(SAI_ID) FROM T_SAISIE)));"
Statement.ExecuteUpdate(strSQL)
strSQL = "INSERT INTO T_PARTS_B (SAI_ID, PAR_B_LIB, PAR_B_TAUX) SELECT T_SAISIE.SAI_ID, T_PARTS_B_VD.PAR_B_VD_LIB, T_PARTS_B_VD.PAR_B_VD_TAUX FROM T_SAISIE, T_PARTS_B_VD WHERE (((T_SAISIE.SAI_ID) In (SELECT Max(SAI_ID) FROM T_SAISIE)));"
Statement.ExecuteUpdate(strSQL)
Connection.Close()
oForm = ThisComponent.DrawPage.Forms.GetByName("frmSaisie")
oForm.Reload()
oForm.Last()
oDate = oForm.GetByName("datSaiDate")
oDate.Date = CDateToUnoDate(Date())
oDate.Commit
End Sub
J'attends un peu pour clôturer, après quelques tests...
Vous ne pouvez pas consulter les pièces jointes insérées à ce message.