#1 Mon 26 May 2003 09:02
- Laurent Frilleux
- Invité
requete SQL
Bonjour
Je dispose d'une serie de stations pour lesquelles sont mesures differents parametres par annee. Je dois conserver uniquement les 3 dernieres annees.
Pour simplifier la tache, ce ne sont pas forcement les memes annees pour chaque station et le nombre de parametres peut lui aussi varier.
Si quelqu'un a une idee pour realiser cette selection (en mapinfo ou access), je lui en serait tres reconaissant car mon tableau depasse les 70 000 enregsitrements.
Merci par avance et bonne journee
Laurent FRILLEUX
STRATEGIS
Parc 2000
19 rue Joe Dassin
34 184 MONTPELLIER CEDEX 4
www.strategis.fr
#2 Tue 27 May 2003 09:18
- Geo Ch
- Invité
Re: requete SQL
De: christophe
Bonjour,
70 000 enregistrement c'est une paille pour une BD.(tout du moins pour les moteurs jets (ACCESS).
soit TABLESTATION:
idstation as long (clefprimaire)
mesurea
mesureb
mesurec
....
date
Sous ACCESS
creer une requete MAREQUETE
(ajouter la table TABLESTATION)
definir les parametres:
TABLESTATION.Date=[date] ET
puis les parametres optionnels
TABLESTATION.MesureA=[param1] OU mesureb= [param2] etc
Ne pas oublier de faire un click droit en mode creation de la requete et de definir la nature des parametres,
[date] as string
[param1] as double etc ...
Ensuite par le code sous access ou en VB DAO(remplacer currentdb() par opendatabase( mabase )
Dim bd as database
dim rq as querydefs
dim rst as recordset
set bd=currentdb()
set rq= bd.querydefs( MAREQUETE )
rq.parameters( date )= 22/03/2002
rq.parameters( param1 )=2.56
pour les parametres non utilises:
rq.parameters( paramN )=null
(avec null autorise ou toute valeur absorbante du champs, 0, etc ...)
set rst = rq.openrecordset
IF not(rst.eof and rst.bof) then
//initialise le compte
rst.movefirst
rst.movelast
j%=msgbox( il y a & rst.recordcount & enregistrement retournes )
// premier enregistrement
rst.movefirst
DO While not rst.eof
debug.print rst( mesurea )
etc ...
rst.movenext
loop
else
i%=msgbox( pas de donnees )
end if
Si tu n'y arrive pas mel moi un exemple de BD access97 avec les tables(vides) dont tu souhaite obtenir les donnees. C'est pas du SQL c'est une requete compilee (access le fait pour toi), si tu introduis une requete sql a l'aide de sa description SELECT TABLEMACHIN etc ... a chaque declenchement de ta requete la syntaxe va etre analysee puis interpretee, si tu utilises une requete compilee son initialisation est instantanee et optimisee.
Et ceci pour rebondir sur le fil logiciel de cartographie
Si l'informatique etait consideree comme un outil et non comme une fin en soi, nous pourrions avoir beaucoup plus de cartographes informaticiens, et par la meme de belles cartes informatisees.
Le devellopement des langages orientes objets et des Bases de Donnees Relationnelles sont une revolution vieille d'une dizaine d'annees dans le monde informatique.
La nature de ces concepts facilite et augmente les capacites de modelisation. Donc logiquement les objets specifiques d'une profession (cartes par exemple) devraient etre facilement modelises et de plus en plus proche de la realite (celle des cartographes ?).
Or l'acroissement des capacites informatiques c'est accompagne de celui de la technicite pour les mettre en oeuvre.
Ce qui a pour consequence de dissocier l'informaticien du cartographe, le premier se concentrant sur le fonctionnement de l'objet, le second sur l'aspect.
Et j'ajouterais (en reference a l'interessant extrait de these poste precedement) que la technicite croissante des deux parties rend les echanges entres elles deux de plus en plus complexes et le resultat final de plus en plus abscon pour le citoyen lambda.
Christophe
informaticien&cartographe amateur.