lister les champs d'une table en connexion odbc

lister les champs d'une table en connexion odbc - VB/VBA/VBS - Programmation

Marsh Posté le 30-06-2017 à 23:34:42    

Bonsoir  
 
Je m'arrache les cheveux pour les faire marcher ce bout de code pour lister les champs d'une table Access via une connexion ODBC :
 

Code :
  1. Public Sub pgm()
  2.  
  3. ' chaine  
  4.  
  5. Dim TableName As String
  6.  
  7. ' table
  8.  
  9. Dim tbl As TableDef
  10.  
  11. ' champs de table
  12.  
  13. Dim fld As Field
  14.  
  15. ' champs à saisir
  16.  
  17. TableName = InputBox("Saisir le nom de la table des champs à lister.", "Fenetre de saisie" )
  18.  
  19. 'affectation de variable
  20. set tbl = CurrentDb.tableDefs(TableName)
  21.  
  22. For Each fld In tbl.Fields
  23.     MsgBox fld.Name
  24. Next
  25.  
  26. End Sub


 
L'instruction "For Each fld In tbl.Fields" crashe . Peut utilisé un ADO ?  
 
Merci de m'aiguiller ;)

Reply

Marsh Posté le 30-06-2017 à 23:34:42   

Reply

Marsh Posté le 03-07-2017 à 12:25:28    

Bonjour ,  
 
J'ai cherché à récupéré dans un premier les noms des champs.
 
Voici le code que j'ai trouvé :
 

Code :
  1. Public Function FieldNames() As String
  2.    Dim sTable As String
  3.    Dim rs As DAO.Recordset
  4.    Dim n As Long
  5.    Dim sResult As String
  6.    sTable = InputBox("Name of table?" )
  7.    If sTable = "" Then
  8.        Exit Function
  9.    End If
  10.    Set rs = CurrentDb.OpenRecordset(sTable)
  11.    With rs
  12.        For n = 0 To .Fields.Count - 1
  13.            sResult = sResult & .Fields(n).Name & vbCrLf
  14.        Next 'n
  15.        .Close
  16.    End With
  17.    Set rs = Nothing
  18.    InputBox "Result:" & vbCrLf & vbCrLf _
  19.            & "Copy this text (it looks jumbled, but it has one field on each line)", _
  20.            "FieldNames()", sResult
  21. End Function


 
C'est somme toute très artisanal . J'aimerai mettre la main sur une requête avec du "select columns_name ... " . Pas possible sans passer par du VBA ?

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed