[Résolu]Pb de manipulation d’un champs date dans une macro

Bonjour,
je cherche à créer un enregistrement dans la table (T_agenda) à partir d’ un formulaire (f_orch_evt) grace à un bouton (mise à jour) qui lance la macro (Majagenda). Sur les 3 champs récupérer du formulaire le champs dt_prev me pose soucis, si je mets un valeur en dur le calcul se fait bien. De plus je ne sais pas si cela provoque un problème dans la requete SQL insert into
Je joins la base
Par avance merciDB_orchidee.odb

Bonjour
j’ai résolu une partie du champs date, donc le soucis de la requête SQL insert into doit venir de champs ID qui est en incrémentation auto
cordialement

Bonjour
je pensais avoir résolu le pb du champs date, j’ai corrigé une erreur dans le SQL mais cela ne fonctionne pas je joins le code de la macro
merci d’avance pour l’aide

Sub Majagenda()

dim oform as Object
dim oDBContext As Object
dim oDB As Object
dim oBase As Object
dim oStatement As Object
dim oRequete As Object
dim oSubForm as object
dim temps as integer
dim dt_cal as variant
dim dt_prev as date

'*****************************************************************************
'*** recuperation des informations de la table controle du formulaire ***
'*****************************************************************************

oForm = thiscomponent.DrawPage.Forms.getByName("Selection")
oSubForm = oForm.getByName("Affichage")
IDcol = oSubForm.getByName("Aff_evt").getByName("ID")
IDValue = IDCol.CurrentValue    ' recuperation de la clé
IDcol = oSubForm.getByName("Aff_evt").getByName("type")
typeValue = IDCol.CurrentValue 
IDcol = oSubForm.getByName("Aff_evt").getByName("dt_prev")
dt_cal = IDCol.CurrentValue

’ dt_prev = dateValue(“2021-03-15”) 'calcul ok
dt_prev = date(dt_cal)

'********************************************************************
'*** Connection à la base ***
'********************************************************************
oDBContext = CreateUnoService(“com.sun.star.sdb.DatabaseContext”)
oDB = oDBContext.getByName(ThisDatabaseDocument.URL)
oBase = oDB.getConnection("","")
oStatement = oBase.createStatement()

'****************************************************************************
'**** recuperation du code de la rempotage dans la table param ***
'************************************************************** *************

strSQL = "select ““valeur2"” from T_param where code=1”
oRequete = oStatement.executeQuery( strSQL )
oRequete.next
code_remp = oRequete.getstring(1)

'****** Traitement dans le cas d’un rempotage

IF code_remp = 	typeValue then

'***************************************************************
’ *** recuperation du temps entre rempotage pour l’orchidée ***
'****************************************************************

	strSQL = "SELECT ""tp_remp"" FROM T_orchidee where (""ID_orch"" = '" & IDValue &"')"
	oRequete = oStatement.executeQuery( strSQL )
	oRequete.next	
	temps = oRequete.getint(1)

'****** Traitement dans le cas ou le temps est supérieur à 0 et la date renseignée

		  IF temps > 0 then 
			  	IF dt_prev> 0 then
		  	
		  			dt_ag = DateADD("m", temps, dt_prev)
		  			
		  
					msgbox(" date= "  & dt_ag ,16,"debug")
				
					strSQL  = "INSERT INTO ""T_agenda"" (""ID_orch"",""even"",""dt_prevu"") VALUES ('" & IDValue & "' , '" & typeValue & "' , '" & dt_ag & "')"
 					oRequete = oStatement.executeUpdate( strSQL )
 				          
				END IF
			END IF
END IF

End Sub

Merci beaucoup
Tout fonctionne
Cordialement

Bonjour @jafa60

Remplacer

dt_cal = IDCol.CurrentValue
dt_prev = dt_cal

Par

dt_cal = IDCol.CurrentValue
dt_prev = CDateFromUnoDate(dt_cal)

En effet CurrentValue renvoie dans ce cas une structure

Remplacer

strSQL  = "INSERT INTO T_agenda (""ID_orch"",""even"",""dt_prevu"") VALUES ('" & IDValue & "' , '" & typeValue & "' , '" & dt_ag & "');"

Par

strSQL  = "INSERT INTO ""T_agenda"" (""ID_orch"",""even"",""dt_prevu"") VALUES (" & IDValue & ", '" & typeValue & "' , '" & year(dt_ag) & "-" & month(dt_ag) & "-" & day(dt_ag) & "');"

Noter:

  • les guillemets pour le nom de table
  • la décomposition en année, mois, jour avec séparateur

Cordialement