2009-07-27 9 views
1

Je suis en train d'exécuter une requête SQL dans Excel et je veux:Comment "commander par" une colonne et "Inclure le nom de la colonne avec la requête"?

1. Pour le résultat de la requête par ma colonne « Stationname »
2. comprennent les noms de colonnes avec la requête

En ce moment, il retourne toutes les colonnes sans le nom de la colonne, et les utilisateurs finaux ne savent pas ce que c'est.

Quelqu'un pourrait-il m'aider? Je suis coincé! Ci-dessous mon code actuel:

strQuery = "select pipelineflow.lciid lciid, ldate, volume, capacity, status, " & _ 
     "pipeline, station, stationname, drn, state, county, owneroperator, companycode, " & _ 
     "pointcode, pointtypeind, flowdirection, pointname, facilitytype, pointlocator, " & _ 
     "pidgridcode from pipelineflow, pipelineproperties " & _ 
     "where pipelineflow.lciid = pipelineproperties.lciid " & _ 
     "and pipelineflow.audit_active = 1 " & _ 
     "and pipelineproperties.audit_active =1 " & 
_ 
     "and pipelineflow.ldate " & dtInDate & _ 
     "and pipelineproperties.stationname = '" & Stationname & "' " 

Répondre

0

Pour commander simplement mettre

Order By stationname 

à la fin de la requête.

Vous pouvez parcourir les noms de colonnes en utilisant:

rst(1).Name 

où est votre premier jeu d'enregistrements, et le nombre est l'indice de la colonne.

1

Pour la partie 1 de votre question, ajoutez une clause ORDER BY à votre requête. Dans ce cas: par nom de station

Partie 2: Vous ne savez pas pourquoi les noms de colonnes ne sont pas inclus dans votre requête. Vous pouvez nommer explicitement une colonne en utilisant quelque chose comme ce qui suit (purement un exemple):

select mycolumn as "MyCustomizedColumnName" from mytable 

qui vous permet de donner des noms des colonnes de votre choix. Cela dit, vous ne devriez pas être obligé de le faire pour chaque colonne, donc je soupçonne que quelque chose d'autre se passe dans votre cas.


Je devrais probablement ajouter qu'une procédure stockée (plutôt que SQL dynamique) donnera de meilleures performances d'exécution.

0

Pour trier les résultats de la requête, utilisez 'ORDER BY' à la fin de la requête. Les dernières lignes de votre requête ressembleraient cette

"and pipelineproperties.stationname = '" & Stationname & "' " & _ 
"ORDER BY pipelineproperties.stationname" 

La tête de colonne sont retournées dans vos données de requête, mais pas automatiquement écrite à la feuille de calcul Excel. L'extrait de code ci-dessous montre comment parcourir les en-têtes de colonne du jeu d'enregistrements et les écrire dans la ligne de la cellule active. 'Rst' fait référence à votre jeu d'enregistrements, mettre à jour le nom comme requis.

If Not rst.EOF Then 
    For x = 0 To rst.Fields.Count - 1 
    With ActiveCell.Offset(0, lcount) 
     .Value = rst.Fields(x).Name 
    End With 
    Next 
End If 

Assurez-vous que vous décalez vers le bas de la cellule active lors de l'écriture des résultats de la requête à la feuille de calcul, sinon vos rubriques seront remplacées par les données.

Activecell.Offset(1,0).CopyFromRecordset rst 
Questions connexes