Comme le titre le suggère, je suis en train de chercher différentes façons de stocker le contenu d'une requête dans un tableau. J'ai expérimenté avec différentes variétés de faire cela, mais il semble que la plupart de ces façons sont correctes dans leur sortie. Ceci est bien sûr dû à mon manque de compréhension de la façon dont cela est censé être fait de manière appropriée, donc après un certain temps d'expérimentation, j'ai décidé de demander quelle est la meilleure approche pour cela? Je vais partager avec vous certaines de mes approches jusqu'à présent et vous pouvez voir où mon enquête m'a atterri.SQL Query to VBA Array
Dim MyArray() As Variant
MyArray = rst.GetRows(rst.RecordCount)
C'était ok encore ce stocké toutes les informations verticalement au lieu de horizontalement. Y a-t-il un moyen de renverser ça? Serait-ce à travers l'utilisation de ReDim? Ou est-ce dû au fait que les lignes sont stockées dans des dimensions de tableau et donc naturellement verticales?
Index = 0
Do While Not rst.EOF
ReDim Preserve MyArray(1, Index)
MyArray(0, Index) = CStr(rst.Fields(0).Value)
'Safety check to make sure the value isn't null (was having problems before)
If rst.Fields(1).Value <> vbNullString Then
MyArray(1, Index) = CStr(rst.Fields(1).Value)
End If
Index = Index + 1
rst.MoveNext
Loop
sheet.Range("a1:ba10000").Value = MyArray
Cette choses encore stockées verticalement, mais la sortie na pas correctement les enregistrements, et en fait que tirer les deux premières colonnes d'information par enregistrement, le reste était sortie comme # N/A #. Je pense que j'étais plus proche de mon approche originale, mais j'ai décidé que l'expérimentation pourrait me mener quelque part.
Avez-vous des suggestions ou pouvez-vous me diriger dans la bonne direction?
Si vous voulez les en-têtes, coller à '" A2 "' et ajouter ce qui suit: 'Avec ThisWorkbook.Sheets (1) Set Range1 = .Range (.Cellules (1, 1), .Cells (1, rst .Fields.Count)) Pour chaque cellule1 dans la plage1 Cell1.Value = rst.Fields (Cell1.Column - 1).Nom Cell1.Font.Bold = True Suivant Cell1 Fin With' – puzzlepiece87
Voir je faisais ça avant et je suis maintenant dans la phase expérimentale où je tente et d'améliorer les performances, mais vous le faire sonner comme son « 6 d'un, une demi-douzaine de l'autre "où les compromis ne valent pas vraiment beaucoup. –
Il semble sorte de kludgey pour vider les enregistrements dans la feuille de calcul, manipuler, puis le reprendre dans votre tableau pour faire tout ce que vous allez faire, mais ... votre jeu de résultats est grande, et la transformation des données dans un gamme est ce que Excel ... excelle à ... Alors je voudrais juste laisser faire c'est chose. – JNevill