Baldur's Gate et Dragon Age | La Couronne de Cuivre
Merci de prendre connaissance des conditions d'utilisation des forums, des blogs et du chat

Précédent   Baldur's Gate et Dragon Age | La Couronne de Cuivre > La Sirène Rougissante > Informatik'

Informatik'
Un problème sur votre ordinateur, votre système d'exploitation ou sur internet? Des conseils à demander ou à proposer concernant les derniers logiciels disponibles ? Des astuces ou des guides à proposer sur comment nettoyer son PC ? Ce forum est le lieu idéal pour parler de nos machines et des programmes autres que les jeux. Débats, sondages, astuces...sans oublier l'annuaire regroupant des liens de sites par thèmes.
Acheter Baldur's Gate Envie de changer de PC ? D'upgrader votre machine ?
 

Réponse
 
Outils de la discussion Noter la discussion
Vieux 22/05/2006, 10h33   #1
Elgaern
Génie
 
Avatar de Elgaern
 
Date d'inscription: novembre 2002
Localisation: Grenoble (ou Riln ;) )
Messages: 2 465
Par défaut

Salut à tous

Voilà j'ai un soucis sous Access: je souhaiterai faire une boucle VB pour passer à l'enregistrement suivant. Je sais qu'il existe un truc tout prêt dans Access pour le faire (ça a marché impec jusqu'ici d'ailleurs) mais ça ne marche pas dans un cas précis car il y aura 2 fois ce système sur la même page et la commande GoToRecord Next/Previous ne fonctionne que sur l'un des 2 paramètres qu'il faudrait faire varier...

Bref, en bidouillant un peu j'ai réussi à passer outre ce problème et à me créer ceci pour afficher la même page mais avec le code suivant:
Code:
Dim stDocName As String
Dim stLinkCriteria As String

stDocName = "Consultations"
 * *
stLinkCriteria = "[Code]=" & Me![Code] + 1
DoCmd.OpenForm stDocName, , , stLinkCriteria
Ca marche très bien sauf que si on est sur le dernier enregistrement et qu'on appuie sur le bouton avec cette macro, on tombe sur un joli formulaire tout vide... J'ai fait la même macro pour le previous avec Code-1 et le problème se pose aussi si on se trouve sur le premier enregistrement...

Donc, j'ai pensé à une condition pour éviter ce problème et voilà ce que je souhaiterai faire:
Code:
If Code courant < Dernier code de ma table Access then
 * Code+1
 * Afficher la même page mais avec Code+1
Else Afficher "Impossible, a pu d'enregistrement dans la table"
End if
(ça c'est pour le bouton "Next", pour le "Previous", ça serait Code-1 et premier code de ma table bien sûr)

C'est la partie "Dernier code de ma table Access" qui me pose problème et que je ne sais pas retranscrire en VB... Comment faut-il faire? Déclarer la table? Parvenir à initialiser une variable sur ce dernier code? (et dans ce cas là comment faire?)

Donc voilà, c'est pour mon boulot donc je recherche activement une solution... J'ai beau avoir fait un DUT info, ça remonte déjà à 2 ans et on avait abordé le VB pendant 1 heure alors bon...

Merci d'avance
Elgaern est déconnecté   Réponse avec citation
Vieux 22/05/2006, 11h15   #2
Tangar
Squelette
 
Date d'inscription: avril 2006
Messages: 130
Par défaut

Salut, je sais as si ça va t'aider, j'en ai pas fait non plus depuis mathusalem.

Je me souviens qu'il existe deux trucs comme "Next" et "Previous" qui s'appellent "last" et "first" qui se déclenche lorsque tu arrives sur le premier ou le dernier enregistrement de ta table.

Je regarderais dans mes sources (si je les ai encore, peut etre ecrase par NWN) mais sur que ca existe
__________________
Il y a des choses que l'intelligence seule est capable de chercher, mais que, par elle-même, elle ne trouvera jamais. Ces choses, l'instinct seul les trouverait ; mais il ne les cherchera jamais.
Tangar est déconnecté   Réponse avec citation
Vieux 22/05/2006, 11h46   #3
Elgaern
Génie
 
Avatar de Elgaern
 
Date d'inscription: novembre 2002
Localisation: Grenoble (ou Riln ;) )
Messages: 2 465
Par défaut

Si cette histoire se vérifie, je pourrais changer ma conditon en:
If Code <> Code'Last then

Je vais essayer de creuser ça de mon côté mais si tu parviens à retrouver des sources, c'est encore mieux

Merci de ton aide
Elgaern est déconnecté   Réponse avec citation
Vieux 22/05/2006, 14h33   #4
Tangar
Squelette
 
Date d'inscription: avril 2006
Messages: 130
Par défaut

VICTOIRE !!!!
J'ai retrouvé mes sources :happy:

Par contre j'y avait pas retouché depuis...ben je sais plus en fait.
incompréhensible de base :8:
mais je vois qu'il y a un formulaire avec un bouton style "enregistrement suivant" relié à un script. Script que je n'arrive plus à comprendre pour l'instant... :angry: (saleté d'access)
Je vois aussi que quand je clique sur ce bouton et que c'est le dernier enregistrement, il ne fait rien (affiche toujours le dernier enregistrement).

Est ce que ça correspond à ce que tu cherches ?
Si c'est le cas, est ce que ça peut attendre demain matin le temps que je re-comprenne ?

ps : je peux avoir ta version d'access aussi svp, je suis sous 97... :notme2:
__________________
Il y a des choses que l'intelligence seule est capable de chercher, mais que, par elle-même, elle ne trouvera jamais. Ces choses, l'instinct seul les trouverait ; mais il ne les cherchera jamais.
Tangar est déconnecté   Réponse avec citation
Vieux 22/05/2006, 15h03   #5
Elgaern
Génie
 
Avatar de Elgaern
 
Date d'inscription: novembre 2002
Localisation: Grenoble (ou Riln ;) )
Messages: 2 465
Par défaut

Je suis sous Access 2000 au boulot donc à priori il n'y a pas de problème

Sinon le fait de rester sur le dernier enregistrement est déjà mieux que d'aller sur une page néant... Et peut-être qu'en me plongeant dans les lignes j'arriverai à percer le (Da Vinci) code ( )

Enfin bref, ça peut tout à fait attendre demain mais si tu n'as pas envie de te prendre la tête tu peux tout à fait m'envoyer le document Access par email pour que je me plonge dedans

Merci en tous cas
Elgaern est déconnecté   Réponse avec citation
Vieux 22/05/2006, 15h38   #6
Tangar
Squelette
 
Date d'inscription: avril 2006
Messages: 130
Par défaut

trop tard.... buche déjà dessus.... :..: ... :happy: première étape compris... :eye: visite du patron... bonjour patron... continue à bucher.... :..: :x access is bad...

ps : je ne suis qu'en stage, et j'ai fini mon truc, pas d'inquiétude ca m'occupe...
__________________
Il y a des choses que l'intelligence seule est capable de chercher, mais que, par elle-même, elle ne trouvera jamais. Ces choses, l'instinct seul les trouverait ; mais il ne les cherchera jamais.
Tangar est déconnecté   Réponse avec citation
Vieux 23/05/2006, 08h50   #7
Tangar
Squelette
 
Date d'inscription: avril 2006
Messages: 130
Par défaut

Résultat des courses :

Voila comme j'ai fait :
J'ai un formulaire qui affiche des personnes et des boutons pour avancer, reculer, ajouter, ....
Pour le bouton qui avance de un en un, j'ai ceci :

Set listeadh = mabase.OpenRecordset("RInfoAdherents")
//on crée un recordset sur une requête qui donne les adhérents

Private Sub avanceun_Click() //fonction associée au clic de bouton

listeadh.MoveLast
//on prend le suivant de la requête...

If listeadh.EOF = False Then
//EOF = end of file = plus de record
// Si il y a un suivant, on affiche les informations
Forms![FIAdherent]![Texte4].Value = listeadh![CodeAdherent]
Forms![FIAdherent]![Texte6].Value = listeadh![Nom]] ....

Else //Sinon....
//on revient au précédent
listeadh.MovePrevious
End If

End Sub



Comprendido ???
__________________
Il y a des choses que l'intelligence seule est capable de chercher, mais que, par elle-même, elle ne trouvera jamais. Ces choses, l'instinct seul les trouverait ; mais il ne les cherchera jamais.
Tangar est déconnecté   Réponse avec citation
Vieux 23/05/2006, 10h06   #8
Elgaern
Génie
 
Avatar de Elgaern
 
Date d'inscription: novembre 2002
Localisation: Grenoble (ou Riln ;) )
Messages: 2 465
Par défaut

Si muy bien, yé vé essayer d'appliquer ça à ma base de dounnées et yé té tiens au courant

Edit: J'aurais besoin de 2 précisions
- Quand tu mets "mabase" je remplace par le nom de la base Access?
- A quoi correspondent les FIAdherent? Le formulaire qui gère l'affichage des informations?
Elgaern est déconnecté   Réponse avec citation
Vieux 23/05/2006, 10h35   #9
Tangar
Squelette
 
Date d'inscription: avril 2006
Messages: 130
Par défaut

mabase :

'déclaration
Dim mabase As Database
Dim listeadh As Recordset

'affectation à mabase de la base courante
Set mabase = CurrentDb

' ouverture de la requête r-info-adhérent (qui donne ce que tu veux parcourir, ici des types)
Set listeadh = mabase.OpenRecordset("RInfoAdherents")



FIAdherent c'est le nom de mon formulaire, et dedans il y a le bouton avance_un, qui permet d'avancer de un en un....



A la place de FIAdherent il faut mettre le nom de ton formulaire, et pour mabase, ça marche sur tout, il faut juste changer le nom de la requete (RinfoAdherent ici)


Edit : c'est a l'ouverture du formulaire qu'il faut que tu fasses les declarations, ouverture de bd+requete. Ensuite tu prends le premier avec "listeadh.MoveFirst" et charges les differents champs qu'il y aura dans listeadh dans ton formulaire...
Je sais pas si je suis bien clair là... :..:

Ravi qu'un dragon ai pu aidé un pourfendeur de dragons...
__________________
Il y a des choses que l'intelligence seule est capable de chercher, mais que, par elle-même, elle ne trouvera jamais. Ces choses, l'instinct seul les trouverait ; mais il ne les cherchera jamais.
Tangar est déconnecté   Réponse avec citation
Vieux 23/05/2006, 10h47   #10
Elgaern
Génie
 
Avatar de Elgaern
 
Date d'inscription: novembre 2002
Localisation: Grenoble (ou Riln ;) )
Messages: 2 465
Par défaut

Arg... J'ai bien peur que ma version d'Access (2000) ne reconnaisse pas la délcaration de variables de type database puisqu'il me sort un "Type défini par l'utilisateur non défini"...
Elgaern est déconnecté   Réponse avec citation
Vieux 23/05/2006, 10h50   #11
Tangar
Squelette
 
Date d'inscription: avril 2006
Messages: 130
Par défaut

Damned, c'est diablerie que tout ça !!!!

Essaye ça pour qu'il reonnaisse
Citation:
"Dans VBA, menu Outils--Référence:
Coche la référence Microsoft DAO 3.6 Object library et ça devrait marcher"
__________________
Il y a des choses que l'intelligence seule est capable de chercher, mais que, par elle-même, elle ne trouvera jamais. Ces choses, l'instinct seul les trouverait ; mais il ne les cherchera jamais.
Tangar est déconnecté   Réponse avec citation
Vieux 23/05/2006, 12h00   #12
Elgaern
Génie
 
Avatar de Elgaern
 
Date d'inscription: novembre 2002
Localisation: Grenoble (ou Riln ;) )
Messages: 2 465
Par défaut

Bon ça avance un peu maintenant, j'ai une "incompatibilité de type" à résoudre sur la ligne en gras:
Private Sub Form_Load()
Dim mabase As Database
Dim ListeOrganismes As Recordset
Set mabase = CurrentDb
Set ListeOrganismes = mabase.OpenRecordset("RequeteConsultation1")
End Sub

Je planche dessus...
Elgaern est déconnecté   Réponse avec citation
Vieux 23/05/2006, 16h56   #13
Tangar
Squelette
 
Date d'inscription: avril 2006
Messages: 130
Par défaut

Essaye ça :
Dim ListeOrganismes As DAO.Recordset
....
Set ListeOrganismes = mabase.OpenRecordset("RequeteConsultation1")

...suspense....
__________________
Il y a des choses que l'intelligence seule est capable de chercher, mais que, par elle-même, elle ne trouvera jamais. Ces choses, l'instinct seul les trouverait ; mais il ne les cherchera jamais.
Tangar est déconnecté   Réponse avec citation
Vieux 24/05/2006, 10h05   #14
Elgaern
Génie
 
Avatar de Elgaern
 
Date d'inscription: novembre 2002
Localisation: Grenoble (ou Riln ;) )
Messages: 2 465
Par défaut

J'ai essayé de bidouiller mais ça ne fonctionne toujours pas

Avec la dernière modif, ça me sort "Variable objet ou variable de bloc With non définie" et ça me renvoie sur l'instruction "ListeMachin.MoveLast"...

L'aventure se poursuit...
Elgaern est déconnecté   Réponse avec citation
Vieux 24/05/2006, 13h30   #15
Tangar
Squelette
 
Date d'inscription: avril 2006
Messages: 130
Par défaut

:angry: ...vais aller demander a bill gates comment fonctionne sa ?*ù%$£!§ de logiciel de mes %^¨$µ£§! ....

Un autre essai :

Dim mabase As DAO.Database
Dim ListeOrganismes As DAO.Recordset
....
Set ListeOrganismes = mabase.OpenRecordset("RequeteConsultation1")

+ vérifier que la référence "Microsoft DAO 3.6 Object Library" (dans outils/références) est coché si je te l'ai pas déjà demandé..

Oh loth je te prie d'accepter ma misérable requête, accepte mon offrande....

Edit : tu peux me donner les erreurs exactes et les numéros, ça peut aider au cas ou...merci
__________________
Il y a des choses que l'intelligence seule est capable de chercher, mais que, par elle-même, elle ne trouvera jamais. Ces choses, l'instinct seul les trouverait ; mais il ne les cherchera jamais.
Tangar est déconnecté   Réponse avec citation
Vieux 24/05/2006, 13h52   #16
Elgaern
Génie
 
Avatar de Elgaern
 
Date d'inscription: novembre 2002
Localisation: Grenoble (ou Riln ;) )
Messages: 2 465
Par défaut

Lloth ne doit pas me porter en estime tout comme toi...

J'obtiens toujours l'erreur 91 "Variable objet ou variable de bloc With non définie"...


Sinon j'ai pensé à une magouille qui pourrait me permettre de contourner le problème: il faudrait que je puisse compter le nombre d'éléments dans ma table et que je stocke ce nombre dans un compteur. Si je clique sur le bouton suivant, j'incrémente le compteur, si je clique sur le bouton précédent je le décrémente

Mais là encore, comment compter le nombre d'éléments de ma table en VB? Peut-on faire appel à une requête SQL?
Elgaern est déconnecté   Réponse avec citation
Vieux 24/05/2006, 13h58   #17
Tangar
Squelette
 
Date d'inscription: avril 2006
Messages: 130
Par défaut

Oui on peut mais il faut utiliser des recordset...toujours le meme probleme...


Dim sSQL As String
Dim mabase As DAO.Database (????? ou As Database)

sSQL = "Select * From CLIENTS Where Pays= 'France'"
Set rst = db.OpenRecordset (sSQL, dbOpenForwardOnly, dbReadOnly)

....mais bon....
__________________
Il y a des choses que l'intelligence seule est capable de chercher, mais que, par elle-même, elle ne trouvera jamais. Ces choses, l'instinct seul les trouverait ; mais il ne les cherchera jamais.