Page 1 sur 1

[Base] Enchaînement de deux formulaires

Publié : 11 déc. 2008 11:32
par kiki.ri
Bonjour,

Je programme depuis peu en ooBasic, et je dois développer une application des gestions des courriers.
Mes données sont dans un database MYSQL.
J'ai besoin de rechercher et d'afficher les courriers selon 8 critères. Aussi, j'ai créé un formulaire de saisie des critères "recherche" lié par macro à un deuxième formulaire qui affiche le résultat.
Tous se passent bien, MAIS UN SEULE FOIS.
Dès que le résultat est affiché "il est BON", je ne peux plus lancer le formulaire "recherche" et je suis obligé de sortir avec un CTRL+Alt+Suppr de ma base.

Un GRAND MERCI à celui ou celle qui pourrais m'expliquer pourquoi il plante ?

Ci-joint la base de données et le code de ma macro

Code : Tout sélectionner

Sub onClickOuvrirFormulaireRecherche(oEvent as variant) 
OuvrirFormulaire(OEvent.Source.Model.Parent.ActiveConnection.Parent.DatabaseDocument.FormDocuments, OEvent.Source.Model.Parent.ActiveConnection, "recherche courriers existants", "idAnnee","idChrono", "idDGST", "idArrive", "idExpe","idCommune","idLieu", "id Affaire" ) 
end sub 

Sub OuvrirFormulaire(lesFormulaires as Variant, laConnection as variant, nomFormulaireCible as String, an as string, Chrono as string, DGST as string, arrive as string, expe as string, commune as string, lieu as string, affaire as string  ) as variant
   Dim formulaireEnCours as Object
   Dim interfaceFormulaireEnCours as Object
	'Numéro Chrono
   Dim controleId as Object
   Dim idCompteur as String
   	'Année sélectionnez
   Dim controleAn as Object
   Dim AnEnCours as String
   'Num DGST
   Dim controleDGST as Object
   Dim DGSTEnCours as String   
   'date arrivée
   Dim controlearrive as Object
   Dim ArriveEnCours as String   
   ' expéditeur
   Dim controleExpe as Object
   Dim ExpeEnCours as String 
   ' communes
   Dim controleComm as Object
   Dim CommEnCours as String 
   ' lieu
   Dim controleLieu as Object
   Dim LieuEnCours as String         
   ' affaire traitée par
   Dim controleAffaire as Object
   Dim AffaireEnCours as String   
   
   Dim anCible as String
   Dim optFichier(1) As New com.sun.star.beans.PropertyValue
   Dim formulaireCible As Object
   Dim interfaceFormulaireCible as Object
   
   '1 On recupere l'identifiant de l'enregistrement en cours de visualisation
   formulaireEnCours = ThisComponent
   interfaceFormulaireEnCours = formulaireEnCours.DrawPage.Forms.getByName("MainForm")
   controleId = interfaceFormulaireEnCours.GetByName("idChrono")
   idCompteur = controleId.CurrentValue

   controleAn = interfaceFormulaireEnCours.GetByName("idAnnee")
   anEnCours = controleAn.CurrentValue

   controleDGST = interfaceFormulaireEnCours.GetByName("idDGST")
   DGSTEnCours = controleDGST.CurrentValue
   controleArrive = interfaceFormulaireEnCours.GetByName("idArrive")
   ArriveEnCours = controleArrive.CurrentValue
   controleExpe = interfaceFormulaireEnCours.GetByName("idExpe")
   ExpeEnCours = controleExpe.CurrentValue         
   controleComm = interfaceFormulaireEnCours.GetByName("idComm")
   CommEnCours = controleComm.CurrentValue   
   controleLieu = interfaceFormulaireEnCours.GetByName("idLieu")
   LieuEnCours = controleLieu.CurrentValue   
   controleAffaire = interfaceFormulaireEnCours.GetByName("idAffaire")
   AffaireEnCours = controleAffaire.CurrentValue
   
	' ferme le formulaire en cours
   fermer_formulaire
      
   '2 On ouvre le formulaire cible
   optFichier(0).Name = "ActiveConnection"
   optFichier(0).Value = laConnection
   
   formulaireCible = lesFormulaires.loadComponentFromURL(nomFormulaireCible,"_blank",0, optFichier())
   interfaceFormulaireCible = formulaireCible.DrawPage.Forms.getByName("MainForm")
   
   '3 On exécute la requête qui sélectionne les résultats en fonction de notre paramètre
   interfaceFormulaireCible.Command = "SELECT * FROM ""courriers"" WHERE ""chrono"" = '"& idCompteur & "' and ""ANNEE"" = '"& anEnCours & "'   "

   anCible = anEnCours

End Sub

Re: [Base] Enchaînement de deux formulaires

Publié : 11 déc. 2008 13:32
par Bidouille
Bonjour,

Cette section a des règles très précises que vous devez obligatoirement suivre pour obtenir de l'aide. C'est indiqué dans le cadre rouge en haut de la page.

Il est demandé aux auteurs de faire précéder le titre de leur question d'une balise adéquate. Ce balisage est extrêmement important car il permet d'avoir une base de connaissance optimum en cas de recherche.

Lisez ce fil pour savoir quelle balise utiliser :
http://user.services.openoffice.org/fr/ ... html#27295

N'oubliez pas que le terme "Macro" ou "OpenOffice" ne doit pas être employé car il est implicite. Essayer de synthétiser au mieux ce que vous cherchez à faire.

Un titre accrocheur vous permettra d'une part d'être aidé plus rapidement et d'autre part, d'enrichir notre base de connaissances.

Nous l'avons fait pour vous cette fois-ci mais lors de votre prochaine question, nous vous remercions de le faire vous-même sous peine de voir votre sujet verrouillé.

Merci de votre collaboration.

Re: [Base] Enchaînement de deux formulaires

Publié : 19 déc. 2008 16:40
par Dude
Salut,
kiki.ri a écrit :Mes données sont dans un database MYSQL.
Afin d'écarter une mauvaise gestion du pilote MySQL (qu'il faudrait d'ailleurs que tu précises : ODBC ou JDBC), fais un test en utilisant le même code sur une base HSQL intégrée.

:?:

Re: [Base] Enchaînement de deux formulaires

Publié : 26 janv. 2009 16:15
par jujucorbi
Bonjour,

je suis à la recherche d'une solution pour le probleme suivant:

je voudrais ouvrir un sous formulaire via un bouton sachant qu il m est impossible de rentrer dans le concepteur de relations. ( j ai donc du efectuer ma relation grace a une requete)

voici mon code

Code : Tout sélectionner

REM  *****  BASIC  *****

Option Explicit

Sub onClickOuvrirFormulaire(oEvent as variant )
   OuvrirFormulaire(OEvent.Source.Model.Parent.ActiveConnection.Parent.DatabaseDocument.FormDocuments, OEvent.Source.Model.Parent.ActiveConnection, OEvent.Source.Model.Name)
end sub

Sub OuvrirFormulaire(lesFormulaires as Variant, laConnection as variant, nomFormulaireCible as String) as variant

	Dim formulaireEnCours as Object
	Dim interfaceFormulaireEnCours as Object
	Dim controleId as Object
	Dim idEnCours as String
	

	Dim optFichier(1) As New com.sun.star.beans.PropertyValue 
	Dim formulaireCible As Object 
	Dim interfaceFormulaireCible as Object
	
	'1 On recupere l'identifiant de l'enregistrement en cours de visualisation
	formulaireEnCours = ThisComponent
	interfaceFormulaireEnCours = formulaireEnCours.DrawPage.Forms.getByName("MainForm")   
	controleId = interfaceFormulaireEnCours.GetByName("fmtid_chantier_projet")
	idEnCours = controleId.CurrentValue 
	

	'2 On ouvre le formulaire cible
	optFichier(0).Name = "ActiveConnection"
	optFichier(0).Value = laConnection

	formulaireCible= lesFormulaires.loadComponentFromURL(CHANTIER_DU_PROJET,"_blank",0, optFichier()) 
	interfaceFormulaireCible = formulaireCible.DrawPage.Forms.getByName("MainForm")

	
	'3 On exécute la requête qui sélectionne les résultats en fonction de notre paramètre
   	interfaceFormulaireCible.Command = "SELECT id_projet_chantier FROM ""projets"" WHERE ""id_projet_chantier"" = '"& idEnCours & "'"
	interfaceFormulaireCible.reload() 
	
End Sub
je voudrais savoir d ou viennent mes erreurs et quelles sont les solution svp!

c'est extremement urgent
merci d avance

a+
ju