Impression paramétrée par requête SQL [Résolu]

cs_eric7 15 Messages postés dimanche 5 janvier 2003Date d'inscription 5 avril 2005 Dernière intervention - 18 mars 2005 à 07:25 - Dernière réponse : cs_eric7 15 Messages postés dimanche 5 janvier 2003Date d'inscription 5 avril 2005 Dernière intervention
- 18 mars 2005 à 15:12
N'ayant pas encore eu de réponse, je tente de reposer ma question.

J'ai créé un DataReport (DR1) dépendant d'un DataEnvironment DE1. Sous ce DE1 est une connection (cn1) puis une commande (cmd1). Cette commande (cmd1) est paramétrée avec une requête sql (SELECT * FROM Creation WHERE Solde= false).

Le bouton imprimer de mon application éxécute :

Public Sub Imprimer (sql2, dtCreation)
DR1.printReport true
End Sub

sql2 est une requête SQL générée par un choix de l'utilsateur et dtCreation un recordset également généré par l'utilisateur (non utilisés pour l'instant).

L'impression se passe très bien, par contre ma requête SQL n'est pas forcément toujours la même.

Je voudrais que sql2 soit ma requête de l'objet cmd1 mais je n'arrive pas à le paramétrer par le programme.

Pour exemple j'avais essayé : DE1.cn1.cmd1.commandText = sql2 mais cela ne marche pas.

Visual Basic me donne le choix entre : DE1.cmd1 ou DE1.cn1.pas de CommandText ???

J'utilise un programme sous VB6 et un environnement ADO pour accéder à une base Access.

Je voudrais savoir si quelqu'un pourrais m'aider sur ce point car pour l'instant mon programme imprime une base mais mal paramétrée puisque la requête est toujours la même ?


Eric7
Afficher la suite 

7 réponses

Meilleure réponse
gaa179 361 Messages postés mercredi 21 mai 2003Date d'inscription 12 novembre 2009 Dernière intervention - 18 mars 2005 à 13:05
3
Merci
Les champs de ta requete doivent avoir le nom des champs utiliser dans ton datareport.


Si tu change uniquement le WHERE dans ta requete SQL, pas de problème. Si tu utlises d'autres champs, tu devras faire des alias.





A+

Merci gaa179 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 81 internautes ce mois-ci

gaa179 361 Messages postés mercredi 21 mai 2003Date d'inscription 12 novembre 2009 Dernière intervention - 18 mars 2005 à 08:37
0
Merci
Salut,

Le problème est le dataenvironment. C'est un ActiveX qui semble pouvoir t'aider, mais en réalité qui pose plus de problème qu'autre chose.

Voici une idée pour résoudre ton problème.
Dans ton sub place le code suivant:

Dim MyCn as ADODB.Connection
Dim MyRs as New ADODB.Recordset

'Verifie que la connection est ouverte
With DE1.Cn1
If .State = 0 Then .Open
End With
'Récupération de la connection
Set MyCn = DE1.Cn1

'Execution de ta requête
set MyRs= MyCn.Execute(SQL2)

'Affectation de ton recordset à ton Data Report
With DR1
set .DataSource= MyRs
.PrintReport True
End with

A+
gaa179 361 Messages postés mercredi 21 mai 2003Date d'inscription 12 novembre 2009 Dernière intervention - 18 mars 2005 à 08:40
0
Merci
J'ai oublié.
Vérifie si dans tes références du projet la libraire Microsoft ActiveX Data Object Library 2.1 est séléctionnée. La version peut être différente en fonction l'OS que tu utilises.
cs_eric7 15 Messages postés dimanche 5 janvier 2003Date d'inscription 5 avril 2005 Dernière intervention - 18 mars 2005 à 10:51
0
Merci
Merci gaa179 pour cette exellente réponse,

cependant il reste un petit problème :

le datareport est configuré pour tous les champs avec en dataMember : cmd1

est-ce que cmd1 correspond à MyRs ?


Eric7
cs_eric7 15 Messages postés dimanche 5 janvier 2003Date d'inscription 5 avril 2005 Dernière intervention - 18 mars 2005 à 11:38
0
Merci
j'ai oublié de préciser le message d'erreur que le prog m'envoie :

Les arguments sont de type incorrect, en dehors des limites autorisées ou en conflit les uns avec les autres.

Ceci doit être dù au propriété du DataReport qui a comme paramètre :
DataMember : cmd1
DataSource : DE1

Le dataSource doit être en conflit

Comment paramétrer le DataReport car toutes mes textes box ont comme dataMember cmd1 ?


Eric7
gaa179 361 Messages postés mercredi 21 mai 2003Date d'inscription 12 novembre 2009 Dernière intervention - 18 mars 2005 à 13:01
0
Merci
Oui,

Tu dois effacer toute les références à cmd1 et DE1.

A+
cs_eric7 15 Messages postés dimanche 5 janvier 2003Date d'inscription 5 avril 2005 Dernière intervention - 18 mars 2005 à 15:12
0
Merci
Merci ça marche d'enfer

encore merci gaa179.


Eric7

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.