Plusieurs Requetes en VB6

morbak01 Messages postés 25 Date d'inscription lundi 17 juillet 2006 Statut Membre Dernière intervention 23 mars 2012 - 7 déc. 2010 à 16:00
cs_subaqua Messages postés 69 Date d'inscription jeudi 22 décembre 2005 Statut Membre Dernière intervention 20 juin 2011 - 14 déc. 2010 à 11:26
Bonjour,

J'ai une base de données MDB.
Elle n'est pas triée par ordre alphabetique.

Il faut que je fasse une requete du style : SELECT * FROM SheetPlan WHERE Num = '" & var_num & "'.

Mais avant je doit impérativement trier la base avec :
SELECT * FROM SheetPlan ORDER BY num ASC, verp DESC

Le pb c'est quand je fait ma requete avec le WHERE, je n'arrive pas à la faire en se basant sur ma base tirée (par la requete avec le ORDER BY)

voilà comme je fait:
mstrSQL="SELECT * FROM SheetPlan ORDER BY num ASC, verp DESC"
Set mobjADORst = New ADODB.Recordset
mobjADORst.CursorLocation = adUseClient
mobjADORst.Open mstrSQL, CNX, adOpenStatic, , adCmdText

mstrSQL="SELECT * FROM SheetPlan WHERE Num = '" & var_num & "'"
Set mobjADORst = New ADODB.Recordset
mobjADORst.CursorLocation = adUseClient
mobjADORst.Open mstrSQL, CNX, adOpenStatic, , adCmdText


Je suis new là dedans et ne j'ai pas tout compris aux recordset. Est-ce que qq1 peux me montrer un bel exemple svp?

Merci, d'avance

8 réponses

marion8316 Messages postés 75 Date d'inscription mercredi 17 août 2011 Statut Membre Dernière intervention 27 septembre 2011 1
7 déc. 2010 à 17:50
Bonsoir,

Il suffit de concaténer les deux chaines, voir ci-dessous.
Cela devrait marcher.

Didier

mstrSQL="SELECT * FROM SheetPlan WHERE Num = '" & var_num & "'"
mstrSQL= mstrSQL & " ORDER BY num ASC, verp DESC"
0
mjidonhym Messages postés 5 Date d'inscription samedi 5 janvier 2008 Statut Membre Dernière intervention 13 décembre 2010
7 déc. 2010 à 18:06
bonjour
je souhaite écrire le code permettant de calculer des frais de déplacement à partir de ma base de donnée access. J'ai un nbre jours deux  taux (T1 etT2)si la personne en déplacement dépasse les 15 jours elle payé avec T2 le taux reduit
0
cs_subaqua Messages postés 69 Date d'inscription jeudi 22 décembre 2005 Statut Membre Dernière intervention 20 juin 2011
7 déc. 2010 à 19:24
On peut aussi écrire les 2 requêtes SQL en une seule "SELECT ... FROM ... WHERE ... ORDER by ..."

Concernant la dernière question de mjdonhym, ci-dessous un code pour appeler la base access, ouvrir la bonne table et faire les calculs (n'ayant pas d'éléments sur les champs de la table, je les invente) :

Public bdd As Database
Public tab_frais As Recordset

function calcul(pers as integer)
dim T1,T2 as single

Set bdd = OpenDatabase("c:\mon_repertoire\ma_base.mdb")
Set tab_frais = bdd.OpenRecordset("SELECT * FROM table_frais")

T1=... 'mettre la bonne valeur
T2=...

'on imagine une table "table_frais" contenant les champs code_personne(numérique) et nb_jours(numérique)

with tab_frais

'on recherche l'enregistrement correspondant au code_personne "pers"
.findfirst "code_personne=" & pers

'si code_personne est défini dans Access comme du texte, alors findfirst s'écrit comme suit :
'.findfirst "code_personne='" & pers & "'"

if .nb_jours>=15 then
calcul=T1*14+(.nb_jours-14)*T2
else
calcul=.nb_jours*T1
endif

end with

end function
0
morbak01 Messages postés 25 Date d'inscription lundi 17 juillet 2006 Statut Membre Dernière intervention 23 mars 2012
8 déc. 2010 à 08:15
Hello,

J'ai concaténé les requetes ça a l'aire de marcher, mais j'avias peur car en fait ce n'était pas le résultat que je voulais trier, mais la base elle meme, puis ensuite faire une requete sur la base triée.


A chaque nvelle requete je faisais un nouveau recordset, est ce grave qu'il n'y a à aucun moment un close qq part?

merci
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
cs_subaqua Messages postés 69 Date d'inscription jeudi 22 décembre 2005 Statut Membre Dernière intervention 20 juin 2011
8 déc. 2010 à 08:22
A priori, non. Je ne ferme jamais mes recordsets et je n'ai jamais eu de pb.
0
mjidonhym Messages postés 5 Date d'inscription samedi 5 janvier 2008 Statut Membre Dernière intervention 13 décembre 2010
12 déc. 2010 à 11:01
bonjour
merci pour la réponse
la suite du problème
sur la même base de données de frais de déplacement voici le problème que j’ai :
Dans la journée on nous paye 1/3 du taux de frais de déplacement entre 0H et 5h
1/3 du taux de frais de déplacement entre entre 11H et 14 H et
1/3 du taux de frais de déplacement entre entre 18 H et 21 H
sachant qu’entre 5 H et 11 H ,14 H et 18H 21 et 24H on ne paye rien 0

par exemple si je par en déplacement le 14/12/2010 à 4 H 30min et je rentre le 17/12/2010 à 10H j’aurai un nombre
de jours payé = 3 jour 1/3
autre exemple si je par en déplacement 14/12/2010 à 8H et je retourne 17/12/2010 =16 H 45 j’aurai un nombre de jours payé =3 jours 1/3


salutation
0
mjidonhym Messages postés 5 Date d'inscription samedi 5 janvier 2008 Statut Membre Dernière intervention 13 décembre 2010
13 déc. 2010 à 14:01
bonjour
merci pour la réponse
la suite du problème
sur la même base de données de frais de déplacement voici le problème que j'ai :

Dans la journée on nous paye 1/3 du taux de frais de déplacement entre 0H et 5h
1/3 du taux de frais de déplacement entre entre 11H et 14 H et
1/3 du taux de frais de déplacement entre entre 18 H et 21 H
sachant qu'entre 5 H et 11 H ,14 H et 18H 21 et 24H on ne paye rien 0

par exemple si je par en déplacement le 14/12/2010 à 4 H 30min et je rentre le 17/12/2010 à 10H j'aurai un nombre
de jours payé = 3 jour 1/3
autre exemple si je par en déplacement 14/12/2010 à 8H et je retourne 17/12/2010 =16 H 45 j'aurai un nombre de jours payé =3 jours 1/3


salutations
0
cs_subaqua Messages postés 69 Date d'inscription jeudi 22 décembre 2005 Statut Membre Dernière intervention 20 juin 2011
14 déc. 2010 à 11:26
Bonjour,

Quel est le pb en fait ? OK, il faut écrire un peu de code pour gérer ces différents cas mais rien d'extraordinaire.
Il faut mettre une variable pour la date de départ, une pour l'heure de départ, une autre pour la date d'arrivée et une dernière pour l'heure d'arrivée.
Ensuite on compare ces variables aux tranches horaires définies avec des "IF then".
Cette dernière s'utilise comme suit :

heure_départ=inputbox("Entrez votre heure de départ (xxHxx): ")
H=val(left(heure_départ,2)) 'heures
M=val(right(heure_départ,2)) 'minutes
heure=H*60+M 'heure de départ transcrite en minutes

If heure>0 and heure<300 then 'Tranche entre 0h et 5h
.......
endif

C'est OK ?
0
Rejoignez-nous