[Résolu][Base] Sélection d'enregistrement

Discussions et questions sur tout ce qui concerne la programmation tous langages et tous modules confondus.

Modérateur : Vilains modOOs

Règles du forum
:alerte: Balisage obligatoire dans cette section !
Aidez-nous à vous aider au mieux en balisant correctement votre question : reportez-vous sur les règles de cette section avant de poster !
belleva
Membre OOrganisé
Membre OOrganisé
Messages : 87
Inscription : 16 déc. 2008 14:54

[Résolu][Base] Sélection d'enregistrement

Message par belleva »

Bonjour à tout le monde.

Je viens à vous car ça va faire deux jours que je bloque dessus sans trouver de solution. Je vous explique donc ce qu'il m'arrive (ça va être un peu long).

Je vais faire une base de donnée de gestion commerciale. Pour l'exemple ci-dessous je n'ai pas joint toutes les tables ni toutes les macros concernées, ce serait bien trop lourd.

Je me suis inspirée de l’excellent tutoriel https://forum.openoffice.org/fr/forum/v ... 662#p81394, pour le faire mais visiblement la bidouille que j'y ai ajouté ne fonctionne pas.

Donc, dans cette base de donnée, je vais avoir un formulaire de Recherche et Modification de la table Client qui se nome "F_RechercheEtModifClient".
Sur ce formulaire il y a la table des clients qui est affichée, et ou on pourra faire les modifications, ainsi qu'une zone de texte pour écrire sa recherche.
La recherche s'effectuera sur plusieurs colonnes de la table client. je n'ai pas crée plusieurs zones de texte volontairement.

Malheureusement, lorsque j'écris un nom qui n'existe pas, ça me modifie les instructions SQL qui se trouvent dans les données du formulaire en ajoutant devant le "%" la première lettre que j'ai tapé dans ma recherche.

Bien évidement la modification ne s'enregistre pas, il me suffirait donc de fermer le formulaire et de l'ouvrir à nouveau. Mais j'aimerai m'éviter cette manipulation, car si j'ai plusieurs recherches infructueuses à la suite, cela va me faire faire beaucoup de manipulation d'ouverture et fermeture du formulaire.

Je pense donc que j'ai mal modifié les instructions SQL, ainsi que celles de la macro, mais je ne trouve pas mon erreur.

J'ai testé une autre solution qui serait de mettre un bouton sur ce formulaire, en masquant la zone de texte, et le bouton aurait comme "Action" de rafraichir le document. Si je fais ça une boite de dialogue s'ouvre à l'ouverture du document, et je pourrais choisir sur quelle critère se base ma recherche.
Malheureusement là encore une fois j'ai un soucis d'esthétique car les critères de recherche qui s'affichent ont le nom que je leur ai donné lors de la création de la table du coup je me retrouve avec des " TelFixe" ou des "NumIsbnBanque" en choix de critère qui ne sont pas très beau. Si il y a un moyen d'afficher ça autrement, cette solution me conviendrait très bien.

Je vous joint la base de donnée, merci d'avance.

Pitite note pour les modérateurs. Ça va faire un sacré bout de temps que je ne suis pas venue, donc si j'ai oublié de clôturer des sujets je m'en excuse par avance, mais normalement ça devrait être à jour.
Vous ne pouvez pas consulter les pièces jointes insérées à ce message.
Dernière modification par belleva le 25 avr. 2015 15:04, modifié 2 fois.
Open Office 4.1 sous Windows sept
Piaf
GourOOu
GourOOu
Messages : 5622
Inscription : 25 nov. 2011 18:07
Localisation : Guyane

Re: [Base] Sélection d'enregistrement

Message par Piaf »

Bonsoir
A tester

Code : Tout sélectionner

Sub PysRechercheClient(PysEvt as object)
Dim PysTexte as object, PysForm as object
Dim PysSQL as string, PysChoix as string
	PysTexte = PysEvt.source
	PysChoix = PysTexte.text
	PysForm = PysTexte.model.Parent
	PysSQL = "SELECT * FROM ""T_Client""  WHERE ""ID_Client""  LIKE '" & pysChoix & "%' OR ""Nom"" LIKE '" & pysChoix & "%' OR ""Prénom"" LIKE '" & pysChoix & "%' OR ""Société"" LIKE '" & pysChoix & "%' OR ""Ville"" LIKE '" & pysChoix & "%'"
	PysForm.command = PysSQL
	PysForm.Reload
	If pysForm.RowCount = 0 then
		PysSQL = "SELECT * FROM ""T_Client"" WHERE ( ""ID_Client"" LIKE '%' OR ""Nom"" LIKE '%' OR ""Prénom"" LIKE '%' OR ""Société"" LIKE '%' OR ""Ville"" LIKE '%' )"
		PysForm.command = PysSQL
		PysForm.Reload
	End If	
End Sub
A+
Libre Office Version: 6.1.6 et Apache OpenOffice 4.1.6 Sur Xubuntu 18.04 AMD64
belleva
Membre OOrganisé
Membre OOrganisé
Messages : 87
Inscription : 16 déc. 2008 14:54

Re: [Base] Sélection d'enregistrement

Message par belleva »

Oula. Alors je viens de l'installer visiblement ça fonctionne. Maintenant faut que je comprenne afin d'arriver à le reproduire pour d'autre table, pis histoire aussi de comprendre ce que je manipule... ça servirait à rien sinon :D


Je laisse donc pour le moment le post ouvert pour le cas ou j'oserais encore une fois te déranger cher piaf.

Un grand merci à toi en tout cas. :super: :bravo:
Open Office 4.1 sous Windows sept
Piaf
GourOOu
GourOOu
Messages : 5622
Inscription : 25 nov. 2011 18:07
Localisation : Guyane

Re: [Base] Sélection d'enregistrement

Message par Piaf »

Bonjour
belleva a écrit :Maintenant faut que je comprenne
Le principe est simple, tu enregistres ton formulaire avec l'instruction SQL

Code : Tout sélectionner

SELECT * FROM "T_Client" WHERE ( "ID_Client" LIKE '%' OR "Nom" LIKE '%' OR "Prénom" LIKE '%' OR "Société" LIKE '%' OR "Ville" LIKE '%' OR "Ville" LIKE '%' )
Donc sans critère.
A l'utilisation du formulaire, il affiche les enregistrements correspondant au critère tapé. s'il ne trouve pas d'enregistrement, rien n'est affiché, donc pas de ligne

Code : Tout sélectionner

If pysForm.RowCount = 0 then
Dans ce cas, on redéfini l'instruction SQL du formulaire.
Tu peux éventuellement ajouter une boite de message derrière l'instruction If pour prévenir qu'aucun enregistrement correspond au critère saisi.
A+
Libre Office Version: 6.1.6 et Apache OpenOffice 4.1.6 Sur Xubuntu 18.04 AMD64