Plusieurs Requetes en VB6

Signaler
Messages postés
25
Date d'inscription
lundi 17 juillet 2006
Statut
Membre
Dernière intervention
23 mars 2012
-
Messages postés
69
Date d'inscription
jeudi 22 décembre 2005
Statut
Membre
Dernière intervention
20 juin 2011
-
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

Messages postés
75
Date d'inscription
mercredi 17 août 2011
Statut
Membre
Dernière intervention
27 septembre 2011
2
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"
Messages postés
5
Date d'inscription
samedi 5 janvier 2008
Statut
Membre
Dernière intervention
13 décembre 2010

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
Messages postés
69
Date d'inscription
jeudi 22 décembre 2005
Statut
Membre
Dernière intervention
20 juin 2011

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
Messages postés
25
Date d'inscription
lundi 17 juillet 2006
Statut
Membre
Dernière intervention
23 mars 2012

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
Messages postés
69
Date d'inscription
jeudi 22 décembre 2005
Statut
Membre
Dernière intervention
20 juin 2011

A priori, non. Je ne ferme jamais mes recordsets et je n'ai jamais eu de pb.
Messages postés
5
Date d'inscription
samedi 5 janvier 2008
Statut
Membre
Dernière intervention
13 décembre 2010

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
Messages postés
5
Date d'inscription
samedi 5 janvier 2008
Statut
Membre
Dernière intervention
13 décembre 2010

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
Messages postés
69
Date d'inscription
jeudi 22 décembre 2005
Statut
Membre
Dernière intervention
20 juin 2011

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 ?