Base de données : OpenSchema

Résolu
cs_Exploreur Messages postés 4821 Date d'inscription lundi 11 novembre 2002 Statut Membre Dernière intervention 15 novembre 2016 - 19 nov. 2007 à 14:45
cs_Exploreur Messages postés 4821 Date d'inscription lundi 11 novembre 2002 Statut Membre Dernière intervention 15 novembre 2016 - 22 nov. 2007 à 13:47
Bonsoir à Tous,

Encore un ch'tite question....Voilà j'utilise la méthode OpenSchema, pour récupérer le nom de mes colonnes dans un table access...cela fonctionne bien, mais(il y a toujours un mais !), le souçi c'est que cette méthode retourne bien le nom des colonnes mais elles sont triées alphabétiquement, et ben moi je cherche à avoir le contraire, quelles soient listées dans l'ordre où elles sont lu, et non triées alphabétiquement, c'est pour créer l'entête de mes colonnes dans une listview, pour simplifier le code...

Quelqu'un aurez une idée ? Une piste à suivre...?

Merci d'avance pour vos réponses.

A+
Exploreur

 Linux a un noyau, Windows un pépin

 

11 réponses

cs_JMO Messages postés 1854 Date d'inscription jeudi 23 mai 2002 Statut Membre Dernière intervention 24 juin 2018 27
19 nov. 2007 à 16:46
 Bonjour à tous,

Bonjour Explorer,
Ce lien  http://support.microsoft.com/kb/186246/fr pourrait peut-être t'aider.
Le lien [www.advancedqtp.co.il/Downloads/ADODB www.advancedqtp.co.il/Downloads/ADODB]  parle de la constante adSchemaColumns.

jean-marc
3
cs_JMO Messages postés 1854 Date d'inscription jeudi 23 mai 2002 Statut Membre Dernière intervention 24 juin 2018 27
20 nov. 2007 à 17:50
Re,

Non, non, en ce moment je regarde comment réagit adodb sur un txt.
D'ailleurs, une très bonne adresse (que tu dois certainement connaitre)
www.laltruiste.com pour tous les langages

et pour ton cas , ce lien décrit toutes les constantes de la méthode OpenSchema:
http://www.laltruiste.com/coursado/constante_schemaenum.html' target='_blank'>http://www.laltruiste.com/document.php?url=http://www.laltruiste.com/coursado/constante_schemaenum.html

@+.
jean-marc
3
cs_Exploreur Messages postés 4821 Date d'inscription lundi 11 novembre 2002 Statut Membre Dernière intervention 15 novembre 2016 15
20 nov. 2007 à 15:12
Salut JMO,

Merci de l'info...Par contre ton deuxième lien ne fonctionne pas...

A+
Exploreur

 Linux a un noyau, Windows un pépin

 
0
cs_JMO Messages postés 1854 Date d'inscription jeudi 23 mai 2002 Statut Membre Dernière intervention 24 juin 2018 27
20 nov. 2007 à 16:39
 Bonjour Explorer,

http://www.advancedqtp.co.il/Uploads/Scripting%20QTP/Scripting%20QTP%20-%20CH08%20-%20ADODB.pdfpointe sur un pdf très instructif.

jean-marc
0

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

Posez votre question
cs_Exploreur Messages postés 4821 Date d'inscription lundi 11 novembre 2002 Statut Membre Dernière intervention 15 novembre 2016 15
20 nov. 2007 à 17:25
Salut JMO,

Merci...tu es un chef...

A+
Exploreur

 Linux a un noyau, Windows un pépin

 
0
cs_Exploreur Messages postés 4821 Date d'inscription lundi 11 novembre 2002 Statut Membre Dernière intervention 15 novembre 2016 15
20 nov. 2007 à 18:17
Re,

Merci...Bon faut maitenant que je trouve comment lire(avec tout tes liens) les tables sans que le recordset me les tries alphabétiquement...lol.Car pour l'instant j'arrive bien à les lire, mais elles sont triées....++

Merci.

A+
Exploreur

 Linux a un noyau, Windows un pépin

 
0
cs_Exploreur Messages postés 4821 Date d'inscription lundi 11 novembre 2002 Statut Membre Dernière intervention 15 novembre 2016 15
21 nov. 2007 à 21:54
Salut JMO,

En farfouillant sur le forum(post de ce jour) bingo, ce que je cherchais à faire était sous mes yeux et je n'aurais jamais penser à le faire comme cela...Quel naze je suis... Voir ici si cela t'intérèsse...

Pour moi cela donne :

Private Sub Command1_Click()


' Déclaration
 Dim boucle As Integer
 Dim toto As Integer
 Dim tata As String


' Définition requête
 Sql = "select * from PC"


' Lancement de la requête
 If DisplayError(Me.hwnd, "Une erreur est survenue pendant l'exécution !" _
    & vbCrLf & "Veuillez réessayer, ou conctater l'administrateur." _
    & vbCrLf & vbCrLf, "Information utilisateur", _
    vbExclamation Or vbOKOnly) Then Exit Sub
   
   ' Passage de valeur
    toto = RstAdo.Fields.Count
        
         ' boucle
          While Not boucle = toto
              tata = RstAdo.Fields(boucle).Name
              boucle = boucle + 1
          Wend


End Sub

Merci pour tous les liens que tu m'as donné...


A+
Exploreur

 Linux a un noyau, Windows un pépin


 
0
cs_JMO Messages postés 1854 Date d'inscription jeudi 23 mai 2002 Statut Membre Dernière intervention 24 juin 2018 27
21 nov. 2007 à 23:53
 Bonsoir Exploreur,

Ton code, version vbs.
Je liste bien les colonnes, mais serait-il pas possible d'obtenir le nom indexé
des colonnes sans passer par Recorset.

      MaQuery = "SELECT * FROM " & MaTable
     
      Set Rst = CreateObject("ADODB.Recordset")
      Rst.Open MaQuery ,Db

      For i=0 To Rst.Fields.Count-1
          MsgBox Rst.Fields(i).Name,,"enumération colonne " & i+1
      Next
   End if

jean-marc
0
cs_Exploreur Messages postés 4821 Date d'inscription lundi 11 novembre 2002 Statut Membre Dernière intervention 15 novembre 2016 15
22 nov. 2007 à 00:39
Salut JMO

Apparement il faut passé par un recordset pour avoir le nom des colonnes, que ce soit avec OpenSchema ou en faisant une requête..enfin je pense..lol..Par contre tu es sûr quand faisant : Rst.Fields.Count-1 tu listes bien tous les noms de tes colonnes? J'ai fait l'essai et il m'en manque une en faisant comme(normal, car l'index de la première colonne et 0, donc je pense qu'il n'est pas nécessaire de faire -1).Voici ma function finale :

Public Function AddColLv(MyLv As ListView, MySql As String) As Long


 '**************************************************************************/
 ' Fonction ajout de colonne dans Lv via lecture noms colonnes de la table  /
 '**************************************************************************/


' Déclaration
 Dim Boucle As Integer
 
' Définition requête
 Sql = MySql
 
' Lancement de la requête
 If DisplayError(hwnd, "Une erreur est survenue pendant l'exécution !" _
    & vbCrLf & "Veuillez réessayer, ou conctater l'administrateur." _
    & vbCrLf & vbCrLf, "Information utilisateur", _
    vbExclamation Or vbOKOnly) Then Exit Function
   
   ' Passage de valeur
    AddColLv = RstAdo.RecordCount
          
         ' Init Listview
          MyLv.ListItems.Clear
          MyLv.ColumnHeaders.Clear
        
         ' boucle
          While Not Boucle = RstAdo.Fields.Count
              MyLv.ColumnHeaders.Add , , RstAdo.Fields(Boucle).Name
              Boucle = Boucle + 1
          Wend
         
         ' Affichage et taille
          MyLv.View = lvwReport
          MyLv.Font.Size = 10


End Function


A+
Exploreur

 Linux a un noyau, Windows un pépin


 
0
cs_JMO Messages postés 1854 Date d'inscription jeudi 23 mai 2002 Statut Membre Dernière intervention 24 juin 2018 27
22 nov. 2007 à 06:25
 Bonjour Exploreur,

Si Rst.Fields.Count = 11 (il y a 11 colonnes et non pas 12)
MsgBox Rst.Fields.Count &vbCrLf& _
       Rst.Fields(0).Name  &vbCrLf& _
       Rst.Fields(1).Name  &vbCrLf& _
       Rst.Fields(2).Name  &vbCrLf& _
       Rst.Fields(3).Name  &vbCrLf& _
       Rst.Fields(4).Name  &vbCrLf& _
       Rst.Fields(5).Name  &vbCrLf& _
       Rst.Fields(6).Name  &vbCrLf& _
       Rst.Fields(7).Name  &vbCrLf& _
       Rst.Fields(8).Name  &vbCrLf& _
       Rst.Fields(9).Name  &vbCrLf& _
       Rst.Fields(10).Name    ' &vbcrlf& _
''''    Rst.Fields(11).Name provoque une erreur référence ordinale ...Normale

bonne journée.
@+.
jean-marc
0
cs_Exploreur Messages postés 4821 Date d'inscription lundi 11 novembre 2002 Statut Membre Dernière intervention 15 novembre 2016 15
22 nov. 2007 à 13:47
Salut JMO,

Exact...., c'est moi qui ne faisait pas correctement ma boucle...

A+
Exploreur

 Linux a un noyau, Windows un pépin

 
0
Rejoignez-nous