peltchag Posté(e) le 23 mai 2005 Partager Posté(e) le 23 mai 2005 Bonjour, je fais une petite appli en VB pour gerer une liste de declarations stockées dans une BD Access. J'ai un petit probleme qui me laisse reellement perplexe : ma requete pour afficher toutes les declarations marche bien sous Access, mais pas sous VB :ouch: Description de mes tables : ZONE(Num_Zone, Nom) avec cle primaire : Num_Zone IMPORTANCE(Num_Importance, Importance) avec cle primaire : Num_Importance DECLARATION(Num_Declaration, Lieu, Date, Declarant, Risque, Date_Debut, Date_Fin, Delai, Action, Num_Zone, Num_Importance) avec cle primaire : Num_Declaration et cles secondaires : Num_Zone et Num_Importance sur mon Formulaire VB, j'ai mis une Datagrid dont la source est la requete en question : SELECT DECLARATION.Num_Declaration, DECLARATION.Lieu, DECLARATION.Date, DECLARATION.Declarant, DECLARATION.Risque, DECLARATION.Date_Debut, DECLARATION.Date_Fin, DECLARATION.Delai, DECLARATION.Action, DECLARATION.Num_Zone, ZONE.Nom, DECLARATION.Num_Importance, IMPORTANCE.Importance FROM DECLARATION, IMPORTANCE, ZONE WHERE ZONE.Num_Zone = DECLARATION.Num_Zone AND IMPORTANCE.Num_Importance = DECLARATION.Num_Importance ORDER BY DECLARATION.Num_Declaration; Le code de VB : Dim rsSituations As ADODB.Recordset Dim Requete As String Requete = "SELECT DECLARATION.Num_Declaration, DECLARATION.Lieu, DECLARATION.Date, DECLARATION.Declarant, DECLARATION.Risque, DECLARATION.Date_Debut, DECLARATION.Date_Fin, DECLARATION.Delai, DECLARATION.Action, DECLARATION.Num_Zone, ZONE.Nom, DECLARATION.Num_Importance, IMPORTANCE.Importance " Requete = Requete & "FROM DECLARATION, IMPORTANCE, ZONE " Requete = Requete & "WHERE ZONE.Num_Zone = DECLARATION.Num_Zone " Requete = Requete & "AND IMPORTANCE.Num_Importance = DECLARATION.Num_Importance " Requete = Requete & "ORDER BY DECLARATION.Num_Declaration;" Set rsSituations = New Recordset rsSituations.CursorLocation = adUseClient rsSituations.Open Requete, Connexion, adOpenStatic, adLockReadOnly Set DtgLstSituations.DataSource = rsSituations sous Access, si je teste la requete, ca marche nickel ! :) sous VB, si j'execute le code donne au-dessus, j'obtiens le message d'erreur : Erreur d'exécution '-2147467259 (80004005)' La méthode 'Open' de l'objet '_Recordset' a échoué je pense que le probleme vient reellement de la requete, car si je fais un "SELECT * FROM DECLARATION", ca marche ! est ce que quelqu'un pourrait m'aider ? Lien vers le commentaire Partager sur d’autres sites More sharing options...
ASSKICK Posté(e) le 23 mai 2005 Partager Posté(e) le 23 mai 2005 perso, dans l'imédiat.... non, je connais plus par coeur ce soir après le fitness je jetterais un oeil sur mes anciens exercices si personne n'aurat su t'aider sur ce petit problème (bah voui, vb y'a pas grand monde ici ) ah, petite question, c'est quelle version de VB? Lien vers le commentaire Partager sur d’autres sites More sharing options...
peltchag Posté(e) le 23 mai 2005 Auteur Partager Posté(e) le 23 mai 2005 il me reste encore un peu d'espoir :) version de VB : VB6sp6 merci pour l'aide Lien vers le commentaire Partager sur d’autres sites More sharing options...
ASSKICK Posté(e) le 23 mai 2005 Partager Posté(e) le 23 mai 2005 VB6, parfait, c'est le seul que j'ai utilisé bon j'ai déjà jeté un oeil sur le code, va faloir changer beaucoup de choses là je crois datagrid je me rapelle plus quel composant c'était ça, aaaalala quand la mémoire est pas rafraichie continuellement c'est pas facile je vai dire au bol que c'est un tableau, tu veus metre quelles valeurs dedans? Les tables de ta bdd elles sont liées? Tu veus aussi écrire dans la bdd? (donc metre à jour les données modifiées dans le programme vb si modifs il y a) P.S. je pose toutes ces questions à l'avance comme ça je sais direct quoi chercher une fois chez moi, ça sera vers environ 8h Lien vers le commentaire Partager sur d’autres sites More sharing options...
peltchag Posté(e) le 23 mai 2005 Auteur Partager Posté(e) le 23 mai 2005 meuh non, il est tres bien mon code ! plus serieusement, une datagrid, c'est un tableau :) et ce tableau je vais le remplir a partir de ma requete. normalement ca marche nickel, j'ai pris ca a partir de code deja fait en cours... le tableau sera en lecture seule, ainsi que la base, pas besoin de faire de MAJ ou autre a tout a l'heure Lien vers le commentaire Partager sur d’autres sites More sharing options...
ASSKICK Posté(e) le 23 mai 2005 Partager Posté(e) le 23 mai 2005 me voilà (ouai, trop crevé pour me bouger au fitness.... j'irais demain ) alors en fait c'est tout con (mais quand même, les requêtes access ça marche pas sous VB ), t'as même pas besoin de code (là c'est un projet vide avec rien d'autre dessus) on va déjà rajouter ces 2 composants si tu ne les a pas encore: tu poses un adodc n'importe où sur la feuille, tu pourras le rendre invisible par la suite. maintenant un click droit sur le contrôle pour accéder aux "Propriétés du contrôle ADODC" dans l'onglet général, on choisit "Utiliser une chaîne de connexion" et créer. Comme provider, utilises "Microsoft Jet 4.0 OLE DB Provider" et click next. Entres l'emplacement de ta base de donnée (si elle se trouve dans le même dossier que ton programme, utilises plutôt un lien dynamique genre ".\mabase.mdb", comme ça pas besoin de changer le chemin si tu déplace ton programme). Testes la connection pour voir si ça fonctionne bien. C'est tout pour la chaîne de connection, maintenant vas sur l'onglet "RecordSource" et choisis le type de commande "2 - adCmdTable", tes tables devraient s'afficher dans la liste déroulante juste en dessous, choisis la table apropriée. c'est tout bon pour le contrôle ADODC maintenant poses ton datagrid, dans ses options à droite tu vas dans "datasource" et tu choisis ton adodc (nom par défaut adodc1 etc..." ) lances le programme et magie, le datagrid est rempli tout seul (et pas une ligne de code ) Lien vers le commentaire Partager sur d’autres sites More sharing options...
peltchag Posté(e) le 23 mai 2005 Auteur Partager Posté(e) le 23 mai 2005 ok, je vais tester ca demain :) mais si ca marche pas, je te jette a ton toutou Lien vers le commentaire Partager sur d’autres sites More sharing options...
ASSKICK Posté(e) le 23 mai 2005 Partager Posté(e) le 23 mai 2005 spa ma faute, j'ai testé avec un programme tout vide et une bdd basique et ça marche Lien vers le commentaire Partager sur d’autres sites More sharing options...
peltchag Posté(e) le 24 mai 2005 Auteur Partager Posté(e) le 24 mai 2005 Re bonjour :) de retour au taff, je me suis penche sur ton petit conseil et helas ca ne marche pas, pour une simple et bonne raison : je ne veux pas afficher une table, mais le contenu de 3tables ta manip correspond exactement a ce que j'ai deja fait, a part que je n'ai pas utilise le composant ADODC, mais une variable ADODB : dans un module, j'ai declare en variable globale (public) une variable que j'ai appelle Connexion (original non ?) que j'ai initialise au lancement du programme avec la bonne chaine de connexion de la meme maniere, j'ai place ma datagrid que je nourris par un recordset (methode datasource aussi) la seule difference entre ta manip, et ce que j'ai fait moi, c'est que toi tu fais une requete de type "SELECT * FROM UNE_TABLE" alors que moi je voudrais faire un SELECT sur plusieurs tables ce qui me deroute encore plus, c'est que je l'ai deja fait dans un autre programme, ou ca marche tres bien !!! :8 bref, je continue mes investigations Lien vers le commentaire Partager sur d’autres sites More sharing options...
ASSKICK Posté(e) le 24 mai 2005 Partager Posté(e) le 24 mai 2005 aaaaah, tu veus les 3 tables, ben écoute perso c'est simple, j'ai jamais utilisé de datagrid pour ce genre de chose dans un cas comme ça j'ai toujours balancé le contenu complet des 3 tables dans 3 datagrid différentes et j'ai ensuite balancé les champs que je voulais dans une flexgrid c'est une façon comme une autre, c'est pas très avancé, mais ça marchait donc voilà mais alors comment lier une seule datagrid à 3 tables je vois pas Lien vers le commentaire Partager sur d’autres sites More sharing options...
peltchag Posté(e) le 24 mai 2005 Auteur Partager Posté(e) le 24 mai 2005 si par ma requete, ca marche normalement mais en fait, je crois que j'ai identifie le probleme : quand je fais ca : SELECT * FROM ZONE ca me renvoi mon senpiternel message d'erreur ! donc le probleme est bien sur cette table rontudju que j'aime access ! Lien vers le commentaire Partager sur d’autres sites More sharing options...
peltchag Posté(e) le 24 mai 2005 Auteur Partager Posté(e) le 24 mai 2005 c'est genial c'est parfait !!! j'ai supprime ma table ZONE, j'ai cree une table SECTEUR avec la meme structure et les memes donnees, et ca marche... beaucoup de vent pour si peu au final... en tout cas, merci pour l'aide, c'est sympa Lien vers le commentaire Partager sur d’autres sites More sharing options...
ASSKICK Posté(e) le 24 mai 2005 Partager Posté(e) le 24 mai 2005 de rien, et de plus j'ai apris quelque chose (même si je programme plus du tout, ça peut toujours servir ) Lien vers le commentaire Partager sur d’autres sites More sharing options...
Messages recommandés
Archivé
Ce sujet est désormais archivé et ne peut plus recevoir de nouvelles réponses.