Probléme avec SQL

reflexinfo Messages postés 21 Date d'inscription samedi 16 août 2003 Statut Membre Dernière intervention 21 décembre 2004 - 25 nov. 2004 à 16:53
cs_CanisLupus Messages postés 3757 Date d'inscription mardi 23 septembre 2003 Statut Membre Dernière intervention 13 mars 2006 - 25 nov. 2004 à 18:48
bonjour à tous ,

je cherche une explication ou un petit bout de code...
voilà je me connect à une base de données ACCESS pour faire des requêtes ...
j'ai un champ de ma base qui contient du numérique ,je dois parcourir ce champ ,trouve la valeur mini et la valeur maxi et en suite en partant de cette valeur mini (sur un pas de deux ou de cinq) compter le nombre de valeurs incluses.
exemples:
valeur mini = 100
valeur maxi = 435

Je dois compter le nombres d'enregistrement inclus entre 100 et 102 puis 102 et 104 et un si de suite

voilà je ne sais comment faire et c'est urgent comme d'hab

merci d'avance

12 réponses

cs_pledoux Messages postés 147 Date d'inscription mardi 12 octobre 2004 Statut Membre Dernière intervention 6 mars 2007
25 nov. 2004 à 17:28
Bonjour,

Essaie ça

pour le mini
select min(champ) into variable_min from table

pour le maxi
select max(champ) into variable_max from table

ensuite c'est fastidieux

for i = variable_min to variable_max step 2
select count(*) into variable from table where champ>=i and champ<i+2
' traitement sur la variable
next i

Je ne suis pas sur que le INTO VARIABLE_MIN fonctionne sous VB sinon essaie INTO :VARIABLE_MIN
0
reflexinfo Messages postés 21 Date d'inscription samedi 16 août 2003 Statut Membre Dernière intervention 21 décembre 2004
25 nov. 2004 à 17:37
merci pledou ,

pour utiliser variable_mini ,je dois la déclaré comme cela :

dim variable_as single ou integer

et dans :
select count(*) into variable from table where champ>=i and champ<i+2

je dois mettre quoi pour variable ?

excuse moi mais je suis pas au top

mersi d'avance
0
reflexinfo Messages postés 21 Date d'inscription samedi 16 août 2003 Statut Membre Dernière intervention 21 décembre 2004
25 nov. 2004 à 17:44
si je fais comme cela c'est bon ????

dim variable_min as integer
dim variable_maxi as integer
dim variable as integer
dim i as integer

select min(longueur) into variable_min from table

select max(longueur) into variable_max from table

i=0

for i = variable_min to variable_max step 2
select count(*) into variable from table where champ>=i and champ<i+2
msgbox variable
next i
0
cs_pledoux Messages postés 147 Date d'inscription mardi 12 octobre 2004 Statut Membre Dernière intervention 6 mars 2007
25 nov. 2004 à 17:44
il faut faire des dim de :
- variable_min
- variable_max
- variable

soit en integer (si <32767 ) ou en long si plus grand.

ex :
dim variable_min as integer
0

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

Posez votre question
cs_pledoux Messages postés 147 Date d'inscription mardi 12 octobre 2004 Statut Membre Dernière intervention 6 mars 2007
25 nov. 2004 à 17:48
dim variable_min as integer
dim variable_maxi as integer
dim variable as integer
dim i as integer
dim rep as integer

select min(longueur) into variable_min from table

select max(longueur) into variable_max from table

for i = variable_min to variable_max step 2
select count(*) into variable from table where champ>=i and champ<i+2
rep=msgbox(str(variable), vbokonly)
next i
0
reflexinfo Messages postés 21 Date d'inscription samedi 16 août 2003 Statut Membre Dernière intervention 21 décembre 2004
25 nov. 2004 à 18:09
Dim variable_min As Integer
Dim variable_max As Integer
Dim variable As Integer
Dim i As Integer
nom_base2 = App.Path & "\dump_cumbeur.mdb"
Set Mabase2 = OpenDatabase(nom_base2)
Marequete = "select min(longueur) into variable_min from cubeur"
Set monenr = Mabase2.OpenRecordset(Marequete) ***ici l'erreur
Marequete2 = "select max(longueur) into variable_max from cubeur"
Set monenr = Mabase2.OpenRecordset(Marequete2)

For i = variable_min To variable_max Step 2
Marequete = "select count(*) into variable from cubeur where longueur>=i and longueur<i+2"
Set monenr = Mabase2.OpenRecordset(Marequete)
MsgBox variable
Next i

je viens de faire cela mais j'ai un message d'erreur
il s'arrête sur la premiére requette et me dit

ERREUR D'EXECUSION OPERATION NON VALIDE****
0
reflexinfo Messages postés 21 Date d'inscription samedi 16 août 2003 Statut Membre Dernière intervention 21 décembre 2004
25 nov. 2004 à 18:11
je me pose une question ?
c'est peut être parce que le champ dans la base de données est de type texte mais contient du numérique ?
0
reflexinfo Messages postés 21 Date d'inscription samedi 16 août 2003 Statut Membre Dernière intervention 21 décembre 2004
25 nov. 2004 à 18:17
non non je viens de verifier c'est bien du numérique !!!
alors je n'y comprend plus rien !

est ce la requete ?
merci d'avance
0
cs_pledoux Messages postés 147 Date d'inscription mardi 12 octobre 2004 Statut Membre Dernière intervention 6 mars 2007
25 nov. 2004 à 18:17
Oui, bien sur.
Essaie avec
Marequete = "select min(val(longueur)) into variable_min from cubeur"

ou mets ton champ en numérique
0
cs_CanisLupus Messages postés 3757 Date d'inscription mardi 23 septembre 2003 Statut Membre Dernière intervention 13 mars 2006 21
25 nov. 2004 à 18:29
Salut,

Dites les gars c quoi votre sql ?

A partir de VB6, à mon avis ça devrait plutôt être ça :

Marequete = "select min(longueur) from cubeur"
Set monenr = Mabase2.OpenRecordset(Marequete) ***ici l'erreur
variable_min = monenr.fields(0)
msgbox variable_min

le into sert à créer un table dans la base pour recevoir le résultat de la requete.
et dans ce cas, on l'utilise comme ça :

mabase2.execute(marequete)

Cordialement, CanisLupus
0
cs_pledoux Messages postés 147 Date d'inscription mardi 12 octobre 2004 Statut Membre Dernière intervention 6 mars 2007
25 nov. 2004 à 18:39
J'ai fait ce code en ADO et ça marche dans la table "droits" de la base "commande".

Dim cnx As New ADODB.Connection
Dim rst As New ADODB.Recordset
Dim variable_min As Integer
Dim variable_max As Integer
Dim variable As Integer
Dim i As Integer

' Ouvre la base Access du projet :
cnx.ConnectionString = "Driver={Microsoft Access Driver (*.mdb)}; Dbq=commande.mdb; DefaultDir=y:\application"
cnx.Open

rst.Open "SELECT min(numero) from droits", cnx, adOpenKeyset, adLockBatchOptimistic
variable_min = rst.Fields(0)
rst.Close
rst.Open "SELECT max(numero) from droits", cnx, adOpenKeyset, adLockBatchOptimistic
variable_max = rst.Fields(0)
rst.Close

cnx.close
0
cs_CanisLupus Messages postés 3757 Date d'inscription mardi 23 septembre 2003 Statut Membre Dernière intervention 13 mars 2006 21
25 nov. 2004 à 18:48
Dans ce cas pledoux, OK mais, apparemment reflexinfo utilise DAO.
Je crois que l'incompréhension vient de là.

Cordialement, CanisLupus
0
Rejoignez-nous