Probleme urgent svp : ouverture de plusieurs fichiers impossible...et rafraichis [Résolu]

calimeria 30 Messages postés mercredi 2 juillet 2008Date d'inscription 11 août 2009 Dernière intervention - 29 juil. 2008 à 09:29 - Dernière réponse : bonjourcheval 228 Messages postés mercredi 13 décembre 2000Date d'inscription 8 août 2011 Dernière intervention
- 30 juil. 2008 à 16:21
Boonjour à tous

je réalise une application qui lit des fichiers, récupère les données qu'ils contiennent et les met en page pour les imprimer. Il faudrait que l'utilisateur puisse selectionner plusieurs fichiers en une fois (les fichiers contiennent les temps de cycle d'une machine et il y a 1000 cycles, donc il ne peut pas les imprimer un à un). J'utilise un objet Common Dialog que j'ai mis sur ma feuille avec un bouton.

1)  Le premier probleme, c'est que quand dans mon code j'écrit : 

      >Private Sub btn_continue_Click( )
      >...
      >...
      >CommonDialog1.Flags = cdlOFNAllowMultiselect AND cdlOFNExplorer
      >CommonDialog1.ShowOpen
      >fichier = CommonDialog1.FileName
      >....
      >...

et que j'exécute, la boite ouvrir s'ouvre bien mais je ne peux toujours prendre qu'un seul fichier, je ne peux pas utiliser Shift ou Ctrl pour en sélectionner plusieurs.
Si quelqu'un sait pourquoi je ne peux pas le faire ...

Merci d'avance

PS : j'ai ajouté cdlOFNExplorer car je ne voulais pas de l'autre interface car elle n'affiche pas les fichiers présents dans le répertoire et donc l'utilisateur est obligé de taper le nom des 30 fichiers séparés d'un espace, enfin je crois.

2)  Le second probleme : j'utilise crystal report XI pour le rapport que j'imprime (celui où je viens mettre les données récupérées). Lors de l'exécution du programme, tout va bien : j'utilise une feuille sur laquelle j'ai mis un objet CrystalActiveXReportViewer pour avoir un aperçu (pour mes tests quand je ne prend qu'un seul fichier). L'aperçu du rapport s'ouvre ensuite je le ferme pour en ouvrir un autre et les données se rafraichissent bien. Mais quand je réalise l'empaquetage avec le fichier d'installation etc., et que j'installe l'appli sur l'ordi, les données ne se rafraichissent plus, j'ai beau fermer la feuille d'aperçu les données ne changent pas. J'ai même l'impression que le rapport a gardé les données qui datent d'avant l'installation. J'explique :
         - j'ai créé un rapport avec crystal report, je lui ai lié la base de données que j'utilise (celle dans laquelle je recopie les données que contiennent les fichiers). je l'ai enregistré dans le répertoire de travail du projet VB6. 
         - dans le code de la feuille d'aperçu, je déclare :

                        >Dim rap As New CRAXDDRT.Report
                        >Dim appli As New CRAXDDRT.Application
                        >...
                        >Set rap = appli.OpenReport(App.Path & "\rapport1.rpt")
                        >CrystalActiveXReportViewer1.ReportSource = rap
                        >CrystalActiveXReportViewer1.Refresh
                        >CrystalActiveXReportViewer1.ViewReport

         - dans le code du même bouton que tout à l'heure, je fais : 
                        >Form9.Show
         - et au tout début du code de ce même bouton je fais :
                        >Unload Form9
         pour être sûre que les données soient mises à jour

Quand j'empaquette, je mets le fichier de la base de données avec les fichiers d'installation ainsi que le rapport.
.....
En fait, je suis désolée mais tout en écrivant je suis en train de me rendre compte que le rapport ne se rafraichit pas car la base de données à laquelle il est relié n'a pas changé !!!!  En effet, j'ai dû mettre le chemin entier amenant au fichier de la base et du coup il n'est pas relié à celle que j'ai ajouté aux fichiers d'installation puisqu'elle n'est plus au même endroit.
Ce qui m'amène à un autre problème : comment pourrais-je faire pour le rattacher "dynamiquement".
Avec un dataenvironnement, je pouvais donner le chemin sous cette forme : App.Path & "\mabase.mdb"
Mais là avec le crystal je ne peux pas le faire.
Donc j'en arrive à la fin de ma longue histoire (désolée ) : le probleme 2 c'est que je n'arrive pas à rafraichir mon rapport car je n'arrive pas à le rattacher "dynamiquement" à la base (lui dire par exemple d'aller voir dans le répertoire de travail ou un truc comme ça)

Je vous remercie d'avance et m'excuse de la longueur du texte mais je voulais être comprise.

PS : cette application sera installée sur des ordinateurs ne possèdant ni VB ni CrystalReport. Encore merci d'avance
Afficher la suite 

Votre réponse

22 réponses

Meilleure réponse
PCPT 13368 Messages postés lundi 13 décembre 2004Date d'inscription 3 février 2018 Dernière intervention - 29 juil. 2008 à 13:01
3
Merci
salut,

1 -> on "additionne" pas des flags avec AND
.Flags = cdlOFNAllowMultiselect Or cdlOFNExplorer

2 -> désolé je n'utilise pas crystal...

++
Prenez un instant pour répondre à [infomsg_SONDAGE-POP3-POUR-CS_769706.aspx ce sondage] svp  

Merci PCPT 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 93 internautes ce mois-ci

Commenter la réponse de PCPT
Meilleure réponse
bonjourcheval 228 Messages postés mercredi 13 décembre 2000Date d'inscription 8 août 2011 Dernière intervention - 30 juil. 2008 à 16:08
3
Merci
Je crois que tu devrais te faire un nouveau post!
C'est tres loin du probleme de départ...
Tu auras plus de chances d'avoir une réponse si tu en fait un nouveau.

Et j'ai trouvé ceci :

http://it.toolbox.com/wiki/index.php/Solve_the_%22Invalid_TLV_Record%22_error_in_running_Crystal_Report

Walla

"C'est pas parce qu'ils sont nombreux à avoir tort qu'ils ont raison!"
(Coluche / 1944-1986 / Pensées et anecdotes)

Je brise la règle 1 et 2. Je

Merci bonjourcheval 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 93 internautes ce mois-ci

Commenter la réponse de bonjourcheval
Meilleure réponse
bonjourcheval 228 Messages postés mercredi 13 décembre 2000Date d'inscription 8 août 2011 Dernière intervention - 30 juil. 2008 à 16:09
3
Merci
Voir aussi :

https://boc.sdn.sap.com/node/243

"C'est pas parce qu'ils sont nombreux à avoir tort qu'ils ont raison!"
(Coluche / 1944-1986 / Pensées et anecdotes)

Je brise la règle 1 et 2. Je

Merci bonjourcheval 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 93 internautes ce mois-ci

Commenter la réponse de bonjourcheval
Meilleure réponse
PCPT 13368 Messages postés lundi 13 décembre 2004Date d'inscription 3 février 2018 Dernière intervention - 30 juil. 2008 à 16:09
3
Merci
TLV..., je dirais TreeListView
possible un problème de licence, CR est payant

mais tu ferais mieux d'ouvrir un nouveau topic
Visual Basic 6 / WINDOWS / ActiveX / COM

++
Prenez un instant pour répondre à [infomsg_SONDAGE-POP3-POUR-CS_769706.aspx ce sondage] svp  

Merci PCPT 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 93 internautes ce mois-ci

Commenter la réponse de PCPT
gillardg 3288 Messages postés jeudi 3 avril 2008Date d'inscription 14 septembre 2014 Dernière intervention - 29 juil. 2008 à 10:57
0
Merci
a&h ben c'est urgent ?
bof c'est les vacances

Il y a (4.5 \ 1.5) sortes de gens, ceux qui comprennent le vb et les autres ,je fais partie des autres/FONT>
Commenter la réponse de gillardg
calimeria 30 Messages postés mercredi 2 juillet 2008Date d'inscription 11 août 2009 Dernière intervention - 29 juil. 2008 à 11:28
0
Merci
eh bien non, pas pour tout le monde
moi je bosse.
et oui c'est vraiment urgent, je cherche de mon côté mais je ne trouve personne qui n'arrive pas à utiliser cdlOFNAllowMultiselect
Commenter la réponse de calimeria
calimeria 30 Messages postés mercredi 2 juillet 2008Date d'inscription 11 août 2009 Dernière intervention - 29 juil. 2008 à 13:44
0
Merci
Salut
merci beaucoup
je vais essayer et je vous dis quoi

@++
Commenter la réponse de calimeria
calimeria 30 Messages postés mercredi 2 juillet 2008Date d'inscription 11 août 2009 Dernière intervention - 29 juil. 2008 à 13:49
0
Merci
re

ça marche !
Merci beaucoup PCPT ça me débloque pas mal !

en fait j'avais vu sur un autre forum qu'il fallait utilisé des AND et je n'avais pas pensé à utiliser des OR

en tout cas merci

pour crystal report mon probleme se pose mais merci quand même
de toute manière si jamais je trouve entre deux je donnerai de mes nouvelles mais si qqn a la solution ou ne serait-ce qu'un petit indice...
Merci d'avance
@++
Commenter la réponse de calimeria
bonjourcheval 228 Messages postés mercredi 13 décembre 2000Date d'inscription 8 août 2011 Dernière intervention - 29 juil. 2008 à 14:30
0
Merci
Bonjour,

moi j'ai utiliser data dynamic et j'avais eu un problème semblable.

En fait, au lieu de faire un refresh, set tout tes obets = nothing, puis réassigne les.
Moi, ça avait règlé mon problème!

J'espère que ça va fonctionner pour toi aussi.

Walla

"C'est pas parce qu'ils sont nombreux à avoir tort qu'ils ont raison!"
(Coluche / 1944-1986 / Pensées et anecdotes)

Je brise la règle 1 et 2. Je /b/
Commenter la réponse de bonjourcheval
calimeria 30 Messages postés mercredi 2 juillet 2008Date d'inscription 11 août 2009 Dernière intervention - 29 juil. 2008 à 14:56
0
Merci
merci mais
en fait je me suis mal exprimée, désolée

comme je referme la feuille à chaque appui sur le bouton, alors ça se rafraichit

en fait j'aurais dû dire que le probleme vient de la liaison avec la base de données : quand j'utilisais DataEnvironment j'allais dans le code à la fonction WillConnect ( ) 
et je mettais :
   >Connection1.ConnectionString = App.path & "\mabase.mdb"

et du coup "peu importe le PC" (ou presque ?!) sur lequel j'installais l'appli ça tournait puisque je mettais le fichier de la base avec les fichiers d'installation. Mais j'ai laissé tomber le datareport et donc le dataenvironment, et je suis passé à crystal report pour avoir plus de libertés (et encore). Mais je n'inclus pas un crystal report comme on le ferais avec un datareport car il ne se rafraichissait pas. Et donc quand j'ai créé le rapport avec le logiciel crystal report, j'ai mis le chemin complet du fichier de la base, du coup c'est fixe ! je voulais savoir s'il n'y avait pas un moyen de lier dynamiquement (comme je liait le dataenvironment) la base au rapport.

Merci d'avance

PS : c'est quoi data dynamic ? Merci
Commenter la réponse de calimeria
calimeria 30 Messages postés mercredi 2 juillet 2008Date d'inscription 11 août 2009 Dernière intervention - 29 juil. 2008 à 14:59
0
Merci
Je voulais dire aussi que la réponse de PCPT (merci) avait reglé mon premier probleme mais que je ne cliquais pas sur Réponse acceptée car sinon il y aura la petite coche verte et on croira que tout est réglé mais il reste toujours mon second probleme

@++
Commenter la réponse de calimeria
bonjourcheval 228 Messages postés mercredi 13 décembre 2000Date d'inscription 8 août 2011 Dernière intervention - 29 juil. 2008 à 15:13
0
Merci
Si tu mets ton rapport dans les fichiers d'installation, tu peux toujours utiliser app.Path.

Mais je ne comprends toujours pas pourquoi tu ne mettrais pas ta BD et ton report dans tes fichiers d'installation. C'est ce que je fais avec mes rapports, même si j'utilises le logiciel DataDynamic.

Sinon, si tu n'as aucune idée de l'emplacement de ton fichier, met un commondialog control et demande à l'usager d'aller chercher le fichier manuellement, puis sauvegarde le chemin dans le fichier ressource.

Ensuite, à l'ouverture, tu vérifies si le fichier est bien à l'endroit qu'il avait pointé à la derniere utilisation. S'il est là tu l'ouvres, sinon, tu redemandes de montrer ou est le fichier avec le commondialog.

Toutefois, ça te demanderas de faire des recherches sur les fichiers ressources.
Je les ai utilisé la premiere fois il y a quelques semaines et ce n'est pas trop pénible à utiliser. Quelques heures de recherches et de pratique et hop, je sais les utiliser.

Et Datadynamic est un logiciel de report pour VB6, mais il n'est pas gratuit. Je ne sais pas s'il est meilleur que CR, mais je sais que leur soutient technique est incroyablement rapide. (Ce que CR n'a probablement pas)

En tout cas, ce n'est qu'une suggestion.

Walla

"C'est pas parce qu'ils sont nombreux à avoir tort qu'ils ont raison!"
(Coluche / 1944-1986 / Pensées et anecdotes)

Je brise la règle 1 et 2. Je
Commenter la réponse de bonjourcheval
calimeria 30 Messages postés mercredi 2 juillet 2008Date d'inscription 11 août 2009 Dernière intervention - 29 juil. 2008 à 15:30
0
Merci
salut
mais j'ajoute deja mon rapport et ma base dans les fichiers d'installation.
Et mon programme ecrit bien dans ma base. seulement quand j'ai créé le report avec CR j'ai spécifié que c'etait une base de données access et j'ai entré le chemin complet. du coup une fois installée, l'application écrit toujours dans la base de données mais ce n'est plus la même que celle avec je faisais mes tests.
je crois que je ne suis pas claire, désolée je m'exprime mal :

- quand j'en étais encore à mon projet VB6, j'utilisais une base dont le fichier se trouvais dans le répertoire de travail du projet. => Base A
- quand j'installe l'application sur l'ordi, le fichier de base de données est copié dans le répertoire de travail de m'application(C:\Program Files\Appli\) =>Base B
- du coup le rapport va chercher les infos dans la base A qui n'est pas modifiée par l'appli puisque cette dernier va ecrire dans la base B et donc le rapport n'est pas modifié

j'ai pensé que je pourrais forcer l'installation dans C:\Application
du coup je n'aurais qu'à changer le chemin de la base dans le rapport juste avant de faire le fichier d'installation (apres être sûre que tout fonctionne) et mettre "C:\Application\mabase.mdb" ainsi il irait chercher les données de la base B car je serai sûre du chemin.
Mais je voulais savoir si ce n'etait pas possible de faire comme le dataenvironment ou alors peut-être que je cherche trop ?

En tout cas merci de vous intéresser à mon cas. Désolée j'ai encore écrit un roman mais jespere qu'on m'aura comprise

Merci d'avance
Commenter la réponse de calimeria
gillardg 3288 Messages postés jeudi 3 avril 2008Date d'inscription 14 septembre 2014 Dernière intervention - 29 juil. 2008 à 15:41
0
Merci
pourquoi ne pas forcer ton appli à utiliser la base B ??
dim Bpatrh as string= app.path & "\mabase.mdb"
une fois pour toutes dans la section générale de ta feuille ainsi tu n'as pas de path en dur

Il y a (4.5 \ 1.5) sortes de gens, ceux qui comprennent le vb et les autres ,je fais partie des autres/FONT>
Commenter la réponse de gillardg
calimeria 30 Messages postés mercredi 2 juillet 2008Date d'inscription 11 août 2009 Dernière intervention - 29 juil. 2008 à 15:52
0
Merci
c'est deja ce que je fais
ce n'est pas mon appli le probleme mais le report qui n'utilise pas la bonne base
en fait je crois que je me complique la vie et je complique la votre à tous du même coup
je crois que je vais juste avant de créer le fichier d'installation, changer le chemin dans les propriétés du rapport et installer l'application non pas dans un truc comme program files mais directement dans C:\MonAppli
comme ça je crois que je n'aurais plus de probleme

enfin j'espère

je vais le faire (ça va prendre un peu (pas trop) de temps car je m'initie au code de InnoSetup) et entre temps si quelqu'un a un moyen...

Merci beaucoup à tous de m'avoir répondu
et merci d'avance à tous ceux qui me repondront encore
Commenter la réponse de calimeria
calimeria 30 Messages postés mercredi 2 juillet 2008Date d'inscription 11 août 2009 Dernière intervention - 29 juil. 2008 à 16:54
0
Merci
C'est de nouveau moi

Alors j'ai essayé vite fait d'empaqueter les fichiers de mon projet avec l'assistant VB (qui n'est pas recommendé !)
Une fois que j'étais sûre que tout fonctionnait, j'ai créé un répertoire (dans Program Files) que j'ai appelé recuperation et dans lequel j'ai copié le fichier de la base de données.
Ensuite, j'ai ouvert mon rapport avec CR, je suis allée dans l'expert base de données et j'ai fait une nouvelle connection : j'ai entré le chemin complet du nouveau fichier, à savoir C:\Program Files\recuperation
Puis j'ai utilisé l'assistant : là j'ai demandé à ce que l'appli s'installe dans un fichier recuperation de Program Files

J'ai installé mon appli et là le rapport s'actualise très bien !

Mais bon j'ai tout de même utilisé une drôle de technique ! Systeme D !
(j'ai copié le fichier de la base de données car CR vérifie le chemin du fichier tout de suite après que vous l'ayez entré et appuyé sur entrée)

Si qqn a une autre solution...

Voila
Merci à tous
Commenter la réponse de calimeria
bonjourcheval 228 Messages postés mercredi 13 décembre 2000Date d'inscription 8 août 2011 Dernière intervention - 29 juil. 2008 à 17:04
0
Merci
Ok... Je ne comprends pas pourquoi tu cherches une solution miracle...

Tu peux changer la BD de ton rapport  par programmation.

Moi, j'utilisais ceci pour dire quel était ma BD

Private Sub ActiveReport_ReportStart()

'Met l'emplacement de la database dans  le data connection
'Ajuste les marges

dcScen.DatabaseName = App.path & "\Assignation\Assignation.mdb"
Me.PageSettings.LeftMargin = 325
Me.PageSettings.RightMargin = 325

End Sub

Mon appli s'installe dans Programme Files/MaSuperApp

Ma BD mdbAssignation se touve dans un dossier appelé Assignation qui se cré avec l'installation et mon report va la chercher sans probleme.

Donc toi, dans ton reportstart, met la meme chose, mais pour ta BD. Je ne sais pas si c'est exactement la meme propriété avec CR mais ça devrait se ressembler.

PS: dcScen est mon dataControl

Walla

"C'est pas parce qu'ils sont nombreux à avoir tort qu'ils ont raison!"
(Coluche / 1944-1986 / Pensées et anecdotes)

Je brise la règle 1 et 2. Je /b/
Commenter la réponse de bonjourcheval
calimeria 30 Messages postés mercredi 2 juillet 2008Date d'inscription 11 août 2009 Dernière intervention - 30 juil. 2008 à 15:49
0
Merci
bonjour
bon je suis partie de ce que m'a dit bonjourcheval et j'ai fait des recherches
et j'ai trouvé le manuel de référence de CR XI en anglais (c'est un lien)

j'ai regardé et j'ai vu que je n'utilisais pas le bon objet.
j'ai ecrit mon code et ça fonctionne, le rapport se rafraichit bien et il est lié à la bonne base.

voici le code que j'ai ecrit (le l'ai mis dans le code d'une feuille où j'avais mis un crystal report viewer)

>Dim connection as new ADODB.connection
>Dim rs as New ADODB.recordset
>Dim query as String
>Dim crxreport As New CRAXDRT.Report
>Dim crxAppli As New CRAXDRT.Application
>Dim crxdatabase As CRAXDRT.Database
>
>Set crxreport=crxappli.OpenReport(App.Path & "\rapport1.rpt")
>Set crxdatabase = crxreport.Database
>'''''''''''''''configuration de la connection
>connection.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;" _
                                                + "Persist Security Info=False;" _
            + "Data Source=" & App.Path & "\mabase.mdb;Mode=Read"
>
>connection.Open
>'''''''''creation de la requete
>query = "Select * FROM datacycle"
>
>rs.Open query, connection, adOpenDynamic, adLockPessimistic
>crxdatabase.SetDataSource rs
>'''''''''''''''''affichage dans un objet CrystalActivexreportviewer
>CrystalActiveXReportViewer1.ReportSource = crxreport
>CrystalActiveXReportViewer1.Refresh
>CrystalActiveXReportViewer1.ViewReport
>
>End Sub

Voila pour ceux que cela intéresse
j'ai essayé l'installation sur l'ordi sur lequel je travaille et cela fonctionne
Mais quand je l'ai essayée sur un ordi qui n'avait pas crystal report, j'ai rencontré des problemes.
Je ne sais pas si je peux l'exposer ici car cela concerne l'installation de l'appli.
ce n'est plus le même type de probleme
Commenter la réponse de calimeria
calimeria 30 Messages postés mercredi 2 juillet 2008Date d'inscription 11 août 2009 Dernière intervention - 30 juil. 2008 à 16:01
0
Merci
Bon je n'ai pas vu de theme VB6/Installation ou un truc dans le genre
Donc je vais quand même exposer mon probleme (mais dîtes moi si je me trompe)

Quand je fais l'installation sur un pc qui n'a pas CR, il m'a d'abord dit qu'il ne trouvait pas une DLL (cslibu-2-0-0.dll), donc je l'ai ajoutée.
L'installation se fait sans souci alors.
Mais quand je lance le programme, et qu'il en arrive au moment où il doit afficher le rapport, il me met une erreur bizarre que je ne comprend pas :

"Erreur d'exécution -2147206429
   Invalid TLV Record"

Si c'est déjà arrivé à qqn ce genre d'erreur...

Merci d'avance
et Merci à tous ceux (et celles ?) qui m'ont aidée à résoudre mes deux autres problemes.

@++
Commenter la réponse de calimeria
calimeria 30 Messages postés mercredi 2 juillet 2008Date d'inscription 11 août 2009 Dernière intervention - 30 juil. 2008 à 16:11
0
Merci
Merci beaucoup à vous deux !

et je vais suivre votre conseil et aller ouvrir un autre topic

Encore merci !
@+++
Commenter la réponse de calimeria

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.