Bonjour à toutes et à tous
Dans une base de données que je suis en train de réaliser, je veux calculer la somme de plusieurs colonnes et la mettre dans une colonne; et ceci ligne par ligne. lorsque j'effectue la requête SQL cela fonctionne parfaitement. En revanche lorsque je l'insère dans une macro j'obtiens des 0 sur la dernière ligne.
Requête SQL:
Code : Tout sélectionner
-- Mise à jour de colonnes dans une table
UPDATE T_PLAN
SET "nbCroquisFisc"="nbCroquisFisc_T"+"nbCroquisFisc_O"+"nbCroquisFisc_DA"
UPDATE T_PLAN
SET "joursCroquisFisc"="joursCroquisFisc_T"+"joursCroquisFisc_O"+"joursCroquisFisc_DA"
Dans la macro j'ai 3 fonctions aux noms explicites: ConnecterSources(), DeconnecterSource() et miseAJour() ainsi qu'une fonction principale 'main' qui fait appel à ces 3 fonctions
Code : Tout sélectionner
REM ***** CALCUL DE SOMMES *****
'Option Explicit
'-----------------------------------Sub Calcul_Totaux_PLAN--------------------------------
'Lancé par l'évènement :
'Calcul le nombre total de croquis et le nombre total de jours de croquis
'Champs pour le calcul : nbCroquisFisc_T,nbCroquisFisc_O,nbCroquisFisc_DA
' joursCroquisFisc_T,joursCroquisFisc_O,joursCroquisFisc_DA
'Champs modifiés : nbCroquisFisc & joursCroquisFisc
'Lance ensuite le Calcul des totaux
'-----------------------------------------------------------------------------------------
dim maConnexion as Object
' **** Fonction de connexion de la BDD ****
function ConnecterSource()
dim nomSource As String
dim login as variant
dim password as variant
dim maSource as Object
dim maDataBaseContext as Object
' Création du contexte
nomSource="TAG"
maDataBaseContext=CreateUnoService("com.sun.star.sdb.DatabaseContext")
maSource=maDataBaseContext.getByName(nomSource)
' Les paramètres de connexion éventuels
login = ""
password = ""
maConnexion = maSource.getConnection(login, password)
if IsNull(maConnexion) then
MsgBox("Connexion impossible", 16)
Stop
end if '/
end function
' **** fonction de mise à jour de l'enregistrement ****
function miseAJour()
dim maRequete as object
dim resultat as object
dim miseAJourSQL as string
miseAJourSQL = " UPDATE T_PLAN SET ""nbCroquisFisc""=""nbCroquisFisc_T""+""nbCroquisFisc_O""+""nbCroquisFisc_DA"" "
maRequete=maConnexion.createStatement()
resultat=maRequete.executeQuery(miseAJourSQL)
' MsgBox(resultat,0)
MsgBox "Ok insertion effectuée !"
end function
' **** Fonction de déconnexion de la BDD ****
function DeconnecterSource()
maConnexion.close
' maConnexion.dispose
MsgBox "Ok déconnexionn effectuée !"
end function
' **** Fonction principale ****
sub main
ConnecterSource
miseAJour
'DeconnecterSource
end sub
Le contrôle qui active la macro est le remplissage des champs dans le formulaire
Je ne peux pas joindre La base de données (825 ko compressé)