nouveau problème SQL avec ORDER BY

Philippe

XLDnaute Occasionnel
Bonjour à tous,

j'avance pas à pas mais chaque étape semble difficile....

Après avoir résolu mes problèmes d'insertion et d'Update (merci à vous tous et en particulier à Bruno) j'ai besoin que ma table soit classée par ordre alphabètique...

Récapitulons:

If Label14 <> "" Then '<--- Donc en fonction de ce qu'il y a en "label 14
vSQL = "UPDATE patients SET ident='" & identite & "',Titre='" & titre & "',Abrevtitre ='" & tit & "',Nom='" & TextBox10 & "',Prenom='" & TextBox11 & "',JourDN='" & TextBox12 & "',MoisDN='" & TextBox13 & "', AnDN='" & TextBox14 & "', N='" & TextBox1 & "',Voie='" & ComboBox1 & "',Nomvoie='" & TextBox2 & "', complementadr='" & TextBox9 & "',codepost='" & TextBox3 & "',Ville='" & TextBox4 & "',Teldom='" & TextBox6 & "',Telbur='" & TextBox8 & "',Telport='" & TextBox7 & "',NoSS='" & TextBox5 & "',cleSS='" & TextBox15 & "',TP='" & TP & "' WHERE Numéro=" & Val(Label14) '<---- L'enregistrement est mis à jour
Else

vSQL = "INSERT INTO patients (ident,Titre,Abrevtitre,Nom,Prenom,JourDN,MoisDN,AnDN,N,Voie,Nomvoie,complementadr,codepost,Ville,Teldom,Telbur,Telport,NoSS,cleSS,TP) VALUES ('" & identite & "','" & titre & "','" & tit & "','" & TextBox10 & "','" & TextBox11 & "','" & TextBox12 & "','" & TextBox13 & "','" & TextBox14 & "','" & TextBox1 & "','" & ComboBox1 & "','" & TextBox2 & "','" & TextBox9 & "','" & TextBox3 & "','" & TextBox4 & "','" & TextBox6 & "','" & TextBox8 & "','" & TextBox7 & "','" & TextBox5 & "','" & TextBox15 & "','" & TP & "')" & ";" '<--- ou un nouvel enregistrement est créé

End If
vdonnées.Open vSQL, vBasededonnees

'---Jusqu'ici tout fonctionne bien, j'ai mis à la suite ces 2 lignes de codes qui devraient à mon sens classer toute la table par ordre alphabetique croissant suivant le champ "Ident"

vSQL = "SELECT * FROM patients ORDER BY Ident ASC;"
vdonnées.Open vSQL, vBasededonnees

' par contre ici, celà ne classe pas, pas de message d'erreur non plus mais il ne se passe rien ...??? Faut-il activer une bibliothèque particulière ???

Encore merci d'avance pour un coup de pouce...

A+
Philippe
 
C

Compte Supprimé 979

Guest
Re : nouveau problème SQL avec ORDER BY

Salut Philippe,

Pour moi ta base est déjà ouverte, même si c'est en mode AJOUT

Donc il faudrai peut-être faire un truc du style
Code:
End If
vdonnées.Open vSQL, vBasededonnees
vdonnées.Close
' Recréé l'instruction SQL pour voir la table triée
vSQL = "SELECT * FROM patients ORDER BY Ident ASC;"
vdonnées.Open vSQL, vBasededonnees

Essaye ça et dis nous ;)
 

Philippe

XLDnaute Occasionnel
Re : nouveau problème SQL avec ORDER BY

Bonjour Bruno,

j'ai essayé ta proposition, on obtient un message d'erreur: '3704' Cette opération n'est pas autorisée si l'objet est fermé.

vdonnées est la Table, la base est vBasededonnées.

J'ai essayé ensuite:

vBasededonnées.close
vBasededonnées.open("Microsoft....)
vSQL = "SELECT * FROM patients ORDER BY Ident ASC;"
vdonnées.Open vSQL, vBasededonnees

Là pas de message d'erreur... mais pas de classement non plus !!!

merci pour d'autres idées...

A+
Philippe
 
C

Compte Supprimé 979

Guest
Re : nouveau problème SQL avec ORDER BY

Re,

Attention, il faut bien faire la différence entre : vBasededonnées et vBasededonnees

Qui n'est pas du tout la même chose !

Est-ce qu'au moins la table est ouverte ?
 

Philippe

XLDnaute Occasionnel
Re : nouveau problème SQL avec ORDER BY

Salut Bruno,

Oui, il s'agit d'une faute de frappe ds mon post.
La base est ouverte (le code est celui du premier post, ici c'est un copié-collé)

Une petite question cependant:

Qd on applique un tri alphabétique, le résultat est il FIXE ds la table (comme une feuille Excel que l'on classe) ou à chaque réouverture les enregistrements sont présentés suivant le N° d'enregistrement (qui est ici ma clé primaire ???)

A+
philippe
 

wilfried_42

XLDnaute Barbatruc
Re : nouveau problème SQL avec ORDER BY

Bonjour à tous


Je ne sais pas si c'est pareil en VBA, mais Sur DELPHI, les SQL Sont des traitement virtuel des fichiers, Les fichier de base restent dans leur format programmés.

Pour changer definitivement un tri, Il te faut modifier la structure du fichier et y integrer une cle secondaire par nom et utiliser cette cle secondaire

L'interet des SQL, c'est qu'elles sont variables (parametrables) et ne gere que les enregistrements selectionnés
 

Philippe

XLDnaute Occasionnel
Re : nouveau problème SQL avec ORDER BY

bonjour Wilfried,

Alors si je met mon champ "Ident" en clé secondaire (voire en clé primaire ???), quelle est la requête qui va me permettre de classer DEFINITIVEMENT ma table par ordre alphabètique ?

A+
Philippe
 

wilfried_42

XLDnaute Barbatruc
Re : nouveau problème SQL avec ORDER BY

re:

attention, je te reponds en fonction de ce que je sais sur DELPHI, je ne connais pas la reaction en VBA

Si tu modifies la structure de ton fichier, à la validation de ta saisie, le programme va te demander de confirmer la mise à jour du fichier et il sera deffinitivement modifié

Par contre une chose : si tu utilises l'identité en clef primaire, fait attention aux doublons (homonymes) tu risques de les perdre si tu ne prends pas les bonnes options

Je te rappelles que je ne connais pas ACCES Et ma version de DELPHI est tres vielle
 

MichelXld

XLDnaute Barbatruc
Re : nouveau problème SQL avec ORDER BY

bonjour

Je ne comprend pas ce que tu cherches à réaliser.
S'il s'agit d'appliquer un tri sur une colonne d'un champ, cela se fait une seule fois et pas en utilisant un UPDATE (ou in INSERT).


Code:
Sub Tri_Croissant_Champ_BaseAccess()
'effectuer un tri croissant dans la colonne "Nom" de la table "LesPoints"
Dim Cnn As New ADODB.Connection
Dim Cat As New ADOX.Catalog
Dim indexTri As New ADOX.Index
Dim Rst As New ADODB.Recordset
Dim Fichier As String
    
On Error GoTo Fin
Fichier = "C:\Documents and Settings\mimi\dossier\dataBase.mdb"
Cnn.Open "Provider='Microsoft.Jet.OLEDB.4.0';" & _
"Data Source='" & Fichier & "';"
Set Cat.ActiveConnection = Cnn
With indexTri
    .Columns.Append "Nom"
    .Columns("Nom").SortOrder = adSortAscending 'tri croissant
    .Name = "Ascending"
    '.Columns("Nom").SortOrder = adSortDescending 'pour les tris décroissants
    '.Name = "Descending"
    .IndexNulls = adIndexNullsAllow
End With
'ajout d'un index pour la table "LesPoints"
'attention : renvoie une erreur si un index existe déja
Cat.Tables("LesPoints").Indexes.Append indexTri

'Cat.Tables("LesPoints").Indexes.Delete indexTri.Name 'suppression index
    
Fin:
Cnn.Close
Set Cat = Nothing
Set indexTri = Nothing
Set Rst = Nothing
Set Cnn = Nothing
End Sub


Ensuite le tri se fait automatiquement, que tu insères, supprimes ou modifies des enregistements.
(mais ça ira peut etre plus vite de spécifier le tri manuellement dans ta table)


Bonne journée
MichelXld
 

Philippe

XLDnaute Occasionnel
Re : nouveau problème SQL avec ORDER BY

Bonjour Michel,

en fait je voulais classer ma table par ordre alphabètique sur le champ "Ident" car quand je recherche un patient, je saisis les premières lettre dans une textbox, et à chaque changement dans la textbox, une listbox avec tous les noms commençant pas les lettres saisies s'affichent. Sauf que sur la table non triée les noms n'apparaissaient pas dans la listbox par ordre alphabètique...

J'utilisais la requête:
vSQL = "SELECT * FROM patients WHERE Ident LIKE '" & rech & "%' ;"
("rech", tu l'as compris est le contenu de la textbox, "patients" le nom de la table)
j'ai modifié ainsi:
vSQL = "SELECT * FROM patients WHERE Ident LIKE '" & rech & "%' ORDER BY Ident ASC;"

et là la listbox est bien remplie dans l'ordre alphabètique, en fait de cette façon je n'ai plus besoin que la table soit elle même classée.

Merci et à bientôt car j'aurais sans doute d'autres difficultés...

A+
Philippe
 

Discussions similaires

Statistiques des forums

Discussions
312 224
Messages
2 086 409
Membres
103 201
dernier inscrit
centrale vet