table et requete sql
Utilisateur WDF
Inscrit:
25/10/2005 16:20
De Tours
Post(s): 74
j'ai une requete un peu compliquer dans une procedure locale

la requete
--------------------------------------------------------------
// Syntaxe :
//ProcedureRechercheManif ()
//
// Paramètres :
//	Aucun
// Valeur de retour :
// 	Aucune

// DateDebut DateFin ComboDateDefinie LieuManif TelResp CodePostalManif ResponManif RaisonSocial
PROCEDURE ProcedureRechercheManif()
   ReqListeOuiNon est une Source de Données
   HExécuteRequêteSQL(ReqListeOuiNon,hRequêteDéfaut,"select* from T_Manif,T_responsable,T_Commune")
   TexteRequete="Select * From T_MANIF,T_COMMUNE,T_RESPONSABLE where "
   //date debut et date fin
   SI DateDebut<>"" ET DateFin<>"" ALORS
      TexteRequete=TexteRequete + "jour_debut_manif between " + DateDebut + " and "  + DateFin +" and " + "jour_fin_manif between " + DateDebut + " and "  + DateFin +" and "
      ElementRequete=Vrai
   SINON SI DateDebut<>""
      TexteRequete=TexteRequete + "jour_debut_manif = " + DateDebut + " and "
      ElementRequete=Vrai 
   SINON SI DateFin <>""
      TexteRequete=TexteRequete + "jour_fin_manif = " + DateFin + " and "
      ElementRequete=Vrai	
   FIN
   //date definie
   SI ComboDateDefinie..ValeurAffichée="non" ALORS
      ElementRequete=Vrai
      TexteRequete=TexteRequete + "jour_debut_manif =01/01/**** and " 
   FIN
   //type d'exposant
   SI ComboTypeExposant <> "" ALORS
      TexteRequete=TexteRequete + "type_exposant_manif = " + ComboTypeExposant..ValeurAffichée +" and "
   FIN
   //commune de manifestation
   SI LieuManif<>"" ALORS
      ElementRequete=Vrai
      TexteRequete=TexteRequete + "libele_commune like *"+ LieuManif +"* and "
   FIN
   //tel du responsable
   SI TelResp<>"" ALORS
      ElementRequete=Vrai
      TexteRequete=TexteRequete + "tel_resp = " + TelResp  + " and " 
   FIN
   //code postal ville manif
   SI CodePostalManif<>"" ALORS
      ElementRequete=Vrai
      TexteRequete=TexteRequete + "code_cp_commune like *"+ CodePostalManif +"* and "
   FIN
   //nom du responsable
   SI ResponManif<>"" ALORS
      ElementRequete=Vrai
      TexteRequete=TexteRequete + "nom_resp like *"+ ResponManif +"* and "
   FIN
   //raison social
   SI RaisonSocial<>"" ALORS
      ElementRequete=Vrai
      TexteRequete=TexteRequete + "raison_social_resp like *"+ RaisonSocial +"* and "
   FIN

   //execution de la reqete
   SI ElementRequete=Vrai ALORS
      TexteRequete=TexteRequete + " T_MANIF.id_manif=T_COMMUNE.code_insee_commune and T_MANIF.id_resp_manif=T_RESPONSABLE.id_resp"
      HExécuteRequêteSQL(ReqRechercheManif,hRequêteDéfaut,TexteRequete)
      Info(TexteRequete)
      ElementRequete=Faux
   FIN

cette requete est utiliser pourfaire es recherche en fonctions des champs rempli et doit afficher les resultat dans un tableau

je voudrai savoir comment je peu lier le tableau a ma requete car j'ai beau chercher dans la description du tableau ma requete n'y es pas jene voi que des requete que j'ai faite via l'assistant de windev

merci de m'aider

Contribution le : 14/11/2005 16:12

Edité par R&B sur 14/11/2005 17:28:03
Créer un fichier PDF de la contribution Imprimer


Re: table et requete sql
Animateur WDF
Inscrit:
26/06/2002 16:24
De wdforge.org
Post(s): 2822
Bonjour

Votre requete telle quelle ne devrait fonctionner.

En effet, votre utilisation des AND dans la clause Where n'est pas équilibrée.
Je vous invite à les ajouter en début de chaque sous condition si celle si est vide.

cSQL est une chaine = "SELECT ..... FROM ... WHERE "
cCondition est une chaine
SI <COND1> ALORS
   si cCondition <> "" ALORS cCondition+= " AND "
   cCondition += "La condition 1"
FIN
SI <COND2> ALORS
   si cCondition <> "" ALORS cCondition+= " AND "
   cCondition += "La condition 2"
FIN
...


A ce stade votre requete SQL texte est conforme.
Reste donc à l'exécuter à en remplir votre champ table.
Deux choix :
- une table fichier alimentée par ConstruitTableFichier à partir de la source de donnée résultante de l'exécution dela requête. Attention les noms des colonnes sont fixées automatiquement par la fonction : COL_1 COL_2...

- Une table mémoire remplie via FichierVersTableMémoire mais comme il est notifié dans l'aide : Cette opération peut être très longue et saturer la mémoire si le fichier est volumineux.


De mon coté, je préfère la première solution (plus rapide).
Il est toujours possible d'affecter les libellés des colonnes de la table obtenue en les énumérant (TableEnumèreColonne) et les affectant des libellés des colonnes correspondants des fichiers. Une petite liste (invisible) permet aussi d'assurer cette affectation trés rapidement.

Contribution le : 14/11/2005 17:41
_________________
R&B
Contact, CV.
Créer un fichier PDF de la contribution Imprimer


Re: table et requete sql
Utilisateur WDF
Inscrit:
25/10/2005 16:20
De Tours
Post(s): 74
merci pour la correction de la requete justement windev venai de me dire qu'elle n'etait pas bonne

peu tu m'expliquer simplement si choisi la 1ére solution esque je vai pouvoir passer facilement champs ( si il sont modifier a nouveaux dans les tables d'ou es faite la requete

ps voila une partie du code corriger comme sugérer pouvez vous me dire si cela vous parrait correcte

//date debut et date fin	
SI DateDebut<>"" ET DateFin<>"" ALORS
	TexteRequete+="jour_debut_manif between "
	TexteRequete+=DateDebut 
	TexteRequete+= " AND "  
	TexteRequete+=DateFin 
	TexteRequete+=" AND " 
	TexteRequete+="jour_fin_manif between " 
	TexteRequete+=DateDebut
	TexteRequete+=" AND "
	TexteRequete+=DateFin
	TexteRequete+=" AND "
	ElementRequete=Vrai

Contribution le : 14/11/2005 18:01
Créer un fichier PDF de la contribution Imprimer


Re: table et requete sql
Animateur WDF
Inscrit:
26/06/2002 16:24
De wdforge.org
Post(s): 2822
Bonjour
Il faut encadrer les valeurs par des simple quote dans les requetes. Et merci d'utiliser une chaine cCondition pourr votre condition et ne construire les AND que si nécessaire

//date debut et date fin	
SI DateDebut<>"" ET DateFin<>"" ALORS
	SI cCondition<>"" alors cCondition+= " AND "
	cCondition+="jour_debut_manif between '"
	cCondition+="jour_debut_manif between '"
	cCondition+=DateDebut 
	cCondition+= "' AND '"  
	cCondition+=DateFin 
	cCondition+="' AND " 
	cCondition+="jour_fin_manif between '" 
	cCondition+=DateDebut
	cCondition+="' AND '"
	cCondition+=DateFin
	cCondition+="'" // le AND suivant sera ajouté par la prochaine condition
	ElementRequete=Vrai
FIN
... autres tests et conditions...

SI cCondition<>"" ALORS TexteReQuete+=cCondition

Contribution le : 15/11/2005 07:48
_________________
R&B
Contact, CV.
Créer un fichier PDF de la contribution Imprimer


Re: table et requete sql
Utilisateur WDF
Inscrit:
25/10/2005 16:20
De Tours
Post(s): 74
merci de cette aide pour le moment ma requete est

//selection des champs a afficher
cCondition="Select T_COMMUNE.code_cp_commune AS code_postal , T_COMMUNE.libelle_commune AS ville , T_RESPONSABLE.raison_social_resp AS raison_social ,T_MANIF.jour_debut_manif AS jour_debut"
cCondition+=" , T_MANIF.jour_fin_manif AS jour_fin ,T_RESPONSABLE.tel_resp AS tel_resp , T_COMMUNE.tel_commune AS tel_commune , T_MANIF.type_exposant_manif AS type_exposant "
cCondition+=", T_MANIF.date_ante_manif AS date_ante FROM T_MANIF,T_COMMUNE,T_RESPONSABLE WHERE "
//date debut et date fin	
SI DateDebut<>"" ET DateFin<>"" ALORS
	cCondition+="jour_debut_manif between '"
	cCondition+=DateDebut 
	cCondition+= "' AND '"  
	cCondition+=DateFin 
	cCondition+="' AND " 
	cCondition+="jour_fin_manif between '" 
	cCondition+=DateDebut
	cCondition+="' AND '"
	cCondition+=DateFin
	cCondition+="'"
	ElementRequete=Vrai
SINON SI DateDebut<>""
	cCondition+="jour_debut_manif ='"
	cCondition+=DateDebut
	cCondition+="'"
	ElementRequete=Vrai 
SINON SI DateFin <>""
	cCondition+="jour_fin_manif = "
	cCondition+=DateFin
	cCondition+="'"
	ElementRequete=Vrai	
FIN
//date definie
SI ComboDateDefinie..ValeurAffichée="non" ALORS
	ElementRequete=Vrai
	SI cCondition<>"" ALORS cCondition+= " AND "
	cCondition+="jour_debut_manif ='01/01/****'" 
FIN

//type d'exposant
SI ComboTypeExposant <> "" ALORS
	SI cCondition<>"" ALORS cCondition+= " AND "
	cCondition+="type_exposant_manif ='"
	cCondition+=ComboTypeExposant..ValeurAffichée
	cCondition+="'"
FIN
//commune de manifestation
SI LieuManif<>"" ALORS
	SI cCondition<>"" ALORS cCondition+= " AND "
	ElementRequete=Vrai
	cCondition+="libele_commune LIKE '*"
	cCondition+=LieuManif
	cCondition+="'"
FIN
//tel du responsable
SI TelResp<>"" ALORS
	SI cCondition<>"" ALORS cCondition+= " AND "
	ElementRequete=Vrai
	cCondition+="tel_resp ='"
	cCondition+=TelResp
	cCondition+="'"  
FIN
//code postal ville manif
SI CodePostalManif<>"" ALORS
	SI cCondition<>"" ALORS cCondition+= " AND "
	ElementRequete=Vrai
	cCondition+="code_cp_commune like '*"
	cCondition+=CodePostalManif
	cCondition+="'"
FIN
//nom du responsable
SI ResponManif<>"" ALORS
	SI cCondition<>"" ALORS cCondition+= " AND "
	ElementRequete=Vrai
	cCondition+="nom_resp like '*"
	cCondition+=ResponManif
	cCondition+="*'"
FIN
//raison social
SI RaisonSocial<>"" ALORS
	SI cCondition<>"" ALORS cCondition+= " AND "
	ElementRequete=Vrai
	cCondition+="raison_social_resp like '*"
	cCondition+=RaisonSocial
	cCondition+="*'"
FIN
//execution de la reqete
SI ElementRequete=Vrai ALORS
	SI cCondition<>"" ALORS cCondition+= " AND "
	cCondition+="T_MANIF.id_manif=T_COMMUNE.code_insee_commune AND T_MANIF.id_resp_manif=T_RESPONSABLE.id_resp"
	HExécuteRequêteSQL(ReqRechercheManif,hRequêteDéfaut,cCondition)
	ElementRequete=Faux
FIN


j'ai affiner ma recherche en metant les champs que je cherchait au lieu de l'étoile

merci de ton aide

Contribution le : 15/11/2005 08:58
Créer un fichier PDF de la contribution Imprimer


Re: table et requete sql
Utilisateur WDF
Inscrit:
25/10/2005 16:20
De Tours
Post(s): 74
Bonjour je voudrai savoir comment passer de ma requete sql a ma table sans passer par une base de donnée ,car il faut que l'utilisateur puisse modifier dirrectement les données dans cette page.

Merci de votre aide

Contribution le : 17/11/2005 10:11
Créer un fichier PDF de la contribution Imprimer


Re: table et requete sql
Animateur WDF
Inscrit:
17/05/2004 14:21
Post(s): 382
Utiliser une requête de type UPDATE ??

Contribution le : 17/11/2005 12:08
_________________
Mbsl
Créer un fichier PDF de la contribution Imprimer


Re: table et requete sql
Utilisateur WDF
Inscrit:
25/10/2005 16:20
De Tours
Post(s): 74
Non c'est une requete du type Select elle est préciser dans les post au dessus.

j'ai essayer avec HexecuteRequêtesql() et hlitpremier mais il met l'erreur suivante

Erreur à la ligne 99 du traitement Procédure locale ProcedureRechercheManif.
Vous avez appelé la fonction HLitPremier.
Fichier <ReqRechercheManif> inconnu dans l'analyse <C:\Mes Projets\maquette access\maquette.wdd>, ou requête ou vue non initialisée.

La ligne 99 correspndant avec la ligne du hlitpremier

Contribution le : 17/11/2005 13:51
Créer un fichier PDF de la contribution Imprimer


Re: table et requete sql
Animateur WDF
Inscrit:
17/05/2004 14:21
Post(s): 382
Vous devez déclarer ReqRechercheManif comme source de données

ReqRechercheManif est une source de données

SI PAS HExécuteRequeteSQL (ReqRechercheManif,TexteRequete) ALORS
  Erreur ( "Erreur d' initialisation de la requête" + RC + HErreurInfo ())
  RETOUR
FIN

// lecture du premier enregistrement de la requête
HLitPremier (ReqRechercheManif)
TANTQUE PAS HEnDehors ()
   

   HLitSuivant (ReqRechercheManif ) 
FIN 

HAnnuleDeclaration(ReqRechercheManif)

Contribution le : 17/11/2005 14:06
_________________
Mbsl
Créer un fichier PDF de la contribution Imprimer


Re: table et requete sql
Utilisateur WDF
Inscrit:
25/10/2005 16:20
De Tours
Post(s): 74
Merci de ton aide mais j'ai essayer ta solution mais elle ne fonctionne pas elle ne modifie pas ma table.

La situation est tel:

Ma source de donnée est déclarer dans la page et déclaration globale de la page

Ma requete te la commande pour l'executer sont dans une procédure

Le code de ma requete est situer plus haut.

Voici le code de l'affichage

SI ElementRequete=Vrai ALORS
	SI cCondition<>"" ALORS cCondition+= " AND "
	cCondition+="T_MANIF.id_manif=T_COMMUNE.code_insee_commune AND T_MANIF.id_resp_manif=T_RESPONSABLE.raison_social_resp"
	SI PAS HExécuteRequêteSQL (ReqRechercheManif,cCondition) ALORS
	 Erreur ( "Erreur d' initialisation de la requête" + RC + HErreurInfo ())
	FIN
	Info(cCondition)
		RETOUR
	
	// lecture du premier enregistrement de la requête
	HLitPremier (ReqRechercheManif)
	TANTQUE PAS HEnDehors ()
		TableAjouteLigne(TableManif,ReqRechercheManif.code_postal,ReqRechercheManif.ville,ReqRechercheManif.raison_social,ReqRechercheManif.jour_debut,ReqRechercheManif.jour_fin,ReqRechercheManif.tel_resp,ReqRechercheManif.tel_commune,ReqRechercheManif.type_exposant,ReqRechercheManif.date_ante)
		HLitSuivant (ReqRechercheManif ) 
	FIN 
	HAnnuleDéclaration(ReqRechercheManif)
	ElementRequete=Faux
FIN


Suite a des test je sais que la procédure va jusqu au tantque mais ne fait pas le Tableajouteligne()

merci de votre aide

Contribution le : 17/11/2005 14:21
Créer un fichier PDF de la contribution Imprimer


Re: table et requete sql
Animateur WDF
Inscrit:
05/06/2003 14:23
De Québec
Post(s): 511
Salut,

Ok donc si ta requete est bien executee, tu as deux solutions pour remplir ta table.

La premiere celle que l'on t'a donne c'est de parcourir ta requete avec un hlitpremier puis apres, tantque pas hendehors hlistuivant et de ce faite remplir ta table avec des tableajouteligne(nomtable,nomrequete.nomrubrique,...)

hrexecuterequetesql(Sourcededonnee,hRequêteDéfaut,Tarequete)
hlitpremier(sourcedonnee)

tantque pas hendehors(sourcedonnee)
Tableajouteligne(nomtable,sourcedonnee.Nomrubrique,...)
hlitsuivant(sourcedonnee)
fin

La deuxieme solution plus rapide c'est de faire un fichierverstablememoire(NomTable,Nomrequete) et ta table se remplira d'elle meme.

Si tu as des erreurs au niveau de ta requete c'est a dire qu'elle ne s'est pas executee c'est qu'il y a une erreur. Soit une virgule de trop, ou une ' de trop, ou une rubrique inconnue ou mal saisie, dans ce cas faut bien verifier la requete.

a+++

Contribution le : 17/11/2005 14:40
Créer un fichier PDF de la contribution Imprimer


Re: table et requete sql
Utilisateur WDF
Inscrit:
25/10/2005 16:20
De Tours
Post(s): 74
La table Mémoir permet t'el de modifier La table d'ou est extraite la table ?

( Je me suis tomper le procéssus ne rentre pas dans le tantque désolé pour la mauvaise information)

Contribution le : 17/11/2005 14:44
Créer un fichier PDF de la contribution Imprimer


Re: table et requete sql
Animateur WDF
Inscrit:
05/06/2003 14:23
De Québec
Post(s): 511
Salut,

Euhhhhhh une table memoire non, ca fait juste afficher en memoire comme son nom l'indique. Mais une table fichier oui mais a ce moment la ce n'est plus fichiervertablememoire mais plutot construittablefichier.

Mais je comprends pas trop ou tu veux en venir....

Tu fais une requete sql que tu veux mettre dans une table et pouvoir modifier directement et que ca mette a jour le fichier associe a la requete c'est bien ca ??

J'avoue que c'est pas tres clair...

a+++

Contribution le : 17/11/2005 15:00
Créer un fichier PDF de la contribution Imprimer


Re: table et requete sql
Utilisateur WDF
Inscrit:
25/10/2005 16:20
De Tours
Post(s): 74
Je fait une requete sql qui affiche des informations dans une table.
Exemple:
table client
Nom_client
Prenom_client
tel_client
.....

Ma requete doit afficher dans la table ses informations de plusieur client correspondant au même critére de selection.

Exemple département, code postal....

Et je veux pouvoir modifier ses informations directement dans la table.

Pour le moment ma requete s'execute mais le hlit premier ne fonctionne pas hnumenr dans le debugger m'indique -1.

Contribution le : 17/11/2005 15:07
Créer un fichier PDF de la contribution Imprimer


Re: table et requete sql
Utilisateur WDF
Inscrit:
25/10/2005 16:20
De Tours
Post(s): 74
Le probleme était que mon format de donnée n'est pas le même que celui de ma base de donnée merci de votre aide.

Contribution le : 17/11/2005 15:42
Créer un fichier PDF de la contribution Imprimer



 Haut   Précédent   Suivant




Enregistrer votre réponse
CompteNom   Mot de passe   Authentification
Message:


Vous ne pouvez pas débuter de nouveaux sujets.
Vous pouvez voir les sujets.
Vous ne pouvez pas répondre aux contributions.
Vous ne pouvez pas éditer vos contributions.
Vous ne pouvez pas effacez vos contributions.
Vous ne pouvez pas ajouter de nouveaux sondages.
Vous ne pouvez pas voter en sondage.
Vous ne pouvez pas attacher des fichiers à vos contributions.
Vous ne pouvez pas poster sans approbation.

[Recherche avancée]


Connexion
Menu
Chercher WDForge
Chercher Web
Partenaires
Visualiser tous les Partenaires...
WinDev, WebDev, WinDev Mobile et HyperFile sont des marques déposées par PCSoft. |  Voter |  Legal |  Contact |   XOOPS 2.0.13.2