Je cherche à réaliser un formulaire où je pourrai faire une recherche suivant un client et les dates liées à ce client.
Pour faire les listes liées, je me suis inspirée de ce fil :https://forum.openoffice.org/fr/forum/v ... 29&t=14662
Pour faire la recherche, je me suis inspirée de ce fil : https://forum.openoffice.org/fr/forum/v ... =8&t=49886
Cependant, dans mon essai, la recherche ne fonctionne pas. A priori, je pense à une difficulté avec la date... mais je ne sais pas ce qui cloche. Voici mon code :
Code : Tout sélectionner
sub PysRefresh
ThisComponent.DrawPage.Forms.getByName("Standard").getByName("ReqClient").refresh
end sub
'************************************************************************************************
sub PysMajListe
'************************************************************************************************
'Lancée sur modification de la liste des marques pour mettre à jour la liste des modèles
'************************************************************************************************
DIM var_id_client as integer
'Recupere les composants liste
PysLstClient = ThisComponent.DrawPage.Forms.getByName("Standard").getByName("ReqClient")
PysLstDate = ThisComponent.DrawPage.Forms.getByName("Standard").getByName("ReqDate")
'Recupere l'id de la marque selectionnée
'Syntaxe si le champ n'est pas lié à un champ de la base
'var_id_marque = PysLstMarque.SelectedItems(0)
'Syntaxe si le champ est lié à un champ de la base
var_id_client = PysLstClient.valueItemList(PysLstClient.SelectedItems(0))
'Modifie la requete SQL de la liste des voitures :
PysLstDate.ListSource() = array("SELECT Date_arrivée_P, Client_P FROM Particuliers WHERE Client_P =" & var_id_client & " ORDER BY Date_arrivée_P DESC")
PysLstDate.refresh
end sub
Sub Filter(oEv as Object)
Dim oForm as Object, fDate as Object, fArmes as Object
Dim strSQL as String, maDate
'Le formulaire
oForm = oEv.Source.Model.Parent
'La liste déroulante des dates de séances de tir
fDate = oForm.getByName("ReqDate")
'La liste déroulante des armes
fClient = oForm.getByName("ReqClient")
'l'instruction SQL affichant tout
strSQL = "SELECT * FROM Particuliers"
'Sélection du bouton sur lequel on a cliqué
Select Case oEv.Source.Model.Name
'Si c'est le bouton afficher tout
Case "cmdAfficher"
'On défini l'instruction à l'affichage de tous les enregistrements
strSql = strSQL
'on supprime les sélections éventuelles dans les listes déroulantes
fDate.SelectedItems = Array()
fClient.SelectedItems = Array()
'Si c'est le bouton filtrer
Case Else
'S'il y a une sélection dans la liste des dates
If fDate.CurrentValue <> "" Then
'On applique un filtre sur le champ date de l'instruction SQL
strSQL = strSQL & " WHERE ""Particuliers"".""Date_arrivée_P"" = " & DateUS(cDate(fDate.CurrentValue)) & ""
End If
'S'il y a une sélection dans la listes des clients
If fClient.CurrentValue <> "" Then
'On applique un filtre sur le champ client
strSQL = strSQL & " AND ""Particuliers"".""Client_P"" =" & Apos(fClient.CurrentValue) & ""
End If
End Select
'On défini la commande du formulaire à l'instruction SQL
oForm.Command = strSQL
'On recharge le formulaire
oForm.Reload
End Sub
Function Apos(ByVal chaine As String) As String
Apos = "'" & join(split(chaine, "'"), "''") & "'"
End Function
Function DateUS(dte as Date) as String
DateUS = "{D '" & Format(dte,"YYYY-MM-DD") & "' }"
End Function
Ajout : Désolée !! J'avais mis deux fois le même lien. Quelle bleue J'ai rectifié |