Data environment et data report

Linda - 15 mai 2000 à 14:42
 CYD - 17 mai 2000 à 18:05
Bonjour,

Voici mon problème.
Dans mon data environement, j'utilise une requête du style :
select nom from client where idnom = ?
Dans l'onglet paramètre je peux donc définir ce "?" ex : 1.

Bon jusque là tout fonctionne.
Maintenant je voudrais mettre une variable à la place de cette valeure fixe.
Comment dois-je faire.

Merci beaucoup pour votre aide

Linda

3 réponses

Bonjour,

Nous pouvons seulement vous proposer un palliatif au problème.
Pour l'utilisation de l'onglet paramètre nous n'avons pas trouvé de moyens.

La solution est la suivante :

Dans le Data environnement, une commande "RPT_CLIENT" est crée avec une requête du style : "select nom from client where idnom = 1". Elle sera utilisée comme commandText.
Et un report "RptEDCLIENT" pour l'édition, avec la propriété dataMember = RPT_CLIENT

Attention, c'est parti !!
Nous saisissons la variable "CodId"dans une frame, un bouton CmdExecut lance le report ex :
Private Sub CmdExecut_Click()
DataEnvironment1.rsRPT_CLIENT.Requery DataEnvironment1.Commands("RPT_CLIENT").CommandText "SELECT NOM FROM CLIENT WHERE IDNOM" & CodId & " order by DPT"
DataEnvironment1.rsRPT_CLIENT.Close
DataEnvironment1.rsRPT_CLIENT.Open (DataEnvironment1.Commands("RPT_CLIENT").CommandText)
RptEDCLIENT.PrintReport 'si plusieurs éditions les unes derrière les autres,
'sinon RptEDCLIENT.show affiche la dernière édition.
End Sub

Cette astuce est utilisée dans le cas de votre exemple, report sans rupture, simple. Sinon, il y a mieux ! (humour)….La parade à un report avec ruptures et présentation de colonnes existants dans des tables différentes ou champs colonnes calculées, c'est de créer une table temporaire dans laquelle le tri et les colonnes sont préparées.
Ex :
Dans le Data environnement, une commande "RPT_CLIENT" est crée avec une requête du style : "select * from TEMPCLIENT". Elle sera utilisée comme commandText.
Et un report "RptEDCLIENT" pour l'édition, avec la propriété dataMember = RPT_CLIENT

Private Sub CmdExecut_Click()
Dim rs1 As Recordset

Case 0 'tous les clients
DataEnv.Connection1.Execute ("TRUNCATE TABLE TEMPCLIENT REUSE STORAGE")

Set rs1 = DataEnv.Connection1.Execute("select * from CLIENT, DEPT, MANAGER" _
& " where DTDEPART is null" _
& " and DPT = DEPT" _
& " and MANGR = MANAGER" _
& " order by CLIENT.NUMCLIENT")
While Not rs1.EOF
sql = "insert into TEMPCLIENT VALUES (…,….,..,..,..,..)"
DataEnv.Connection1.Execute sql
rs1.MoveNext
Wend
DataEnvironment1.rsRPT_CLIENT.Requery
RptEDCLIENT.Show

Case 1 'les clients d'une rue

….
….
Close #1

End Select

Voilà, si vous trouvez une meilleure technique merci de nous tenir au courant, et bon courage.

Daniel, Yann, Christine.
0
Merci de votre aide. Cela va pourvoir m'aider dans la conpréhension des data report.

NB: j'ai pu trouver une solution pour utiliser les paramètres "?".
Je vous explique.
Donc vous faites votre requête, et vous vous dites que vous ne connaissez pas encore la valeur du critère.

ex : select nom from client where idnom = ?

Après dans votre code il suffit juste de mettre une variable avec la valeur désirée.
ex : Supposons que la commande s'appelle commande1 alors :

dataenvironment.commande1(variable)
DrClient.show

Drclient (est le nom de mon report)
Et voilà

prenons par exemple variable = 1
alors la requête sera :
select nom from client where idnom = 1
et ainsi de suite...

J'espère que j'ai été claire :)))

Encore merci

Linda
0
Super !

Nous allons essayer dès que possible, c'est une bonne nouvelle.

Merci, Merci, Merci

PS : si vous avez besoin pour les choix d'éditions en paysage/portrait ou choisir l'imprimante : welcome !

Christine, Yann, Daniel
0
Rejoignez-nous