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

Messages postés
15
Date d'inscription
dimanche 5 janvier 2003
Dernière intervention
5 avril 2005
- 18 mars 2005 à 07:25 - Dernière réponse :
Messages postés
15
Date d'inscription
dimanche 5 janvier 2003
Dernière intervention
5 avril 2005
- 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
Messages postés
361
Date d'inscription
mercredi 21 mai 2003
Dernière intervention
12 novembre 2009
- 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é 90 internautes ce mois-ci

Messages postés
361
Date d'inscription
mercredi 21 mai 2003
Dernière intervention
12 novembre 2009
- 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+
Messages postés
361
Date d'inscription
mercredi 21 mai 2003
Dernière intervention
12 novembre 2009
- 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.
Messages postés
15
Date d'inscription
dimanche 5 janvier 2003
Dernière intervention
5 avril 2005
- 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
Messages postés
15
Date d'inscription
dimanche 5 janvier 2003
Dernière intervention
5 avril 2005
- 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
Messages postés
361
Date d'inscription
mercredi 21 mai 2003
Dernière intervention
12 novembre 2009
- 18 mars 2005 à 13:01
0
Merci
Oui,

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

A+
Messages postés
15
Date d'inscription
dimanche 5 janvier 2003
Dernière intervention
5 avril 2005
- 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.