Une itération à travers ADODB Champs à l'intérieur d'un jeu d'enregistrements en boucle
Je cherche à créer une fonction qui prend un ADODB jeu d'enregistrements et copies de ses données dans un nouveau jeu.
Pour ce faire, j'utilise un ne boucle pour parcourir chaque ligne d'une source de jeu d'enregistrements. À l'intérieur de cette boucle, j'ai besoin d'utiliser pour chaque boucle pour se déplacer à travers chaque ligne de la collection de Champs, afin de saisir ses données.
Cependant, VB6 semble s'étouffer sur le pour chaque boucle - elle met en évidence le nom de la boucle for
s itérateur ("fld" dans l'exemple ci-dessous) et jette un variable non définie erreur.
Curieusement, c'est exactement le même pour chaque boucle fonctionne très bien lorsqu'il n'est pas placé à l'intérieur d'un ne boucle.
Cas de Test 1 (incapables de définir "Pour Chaque fld"):
'targetTableName Comme une Chaîne de caractères: nom de la nouvelle table à créer
'sourceRecordSet Comme ADODB.Jeu d'enregistrements: ouvrir le jeu d'enregistrements contenant les résultats de publier la nouvelle targetTableName
Public Sub createTableFromRecordset(targetTableName As String, sourceRecordSet As ADODB.recordSet)
'(irrelevant code omitted)
'create MDB RS object
Dim targetRecordSet As ADODB.recordSet
Set targetRecordSet = mdbQuery("select * from targetTableName;")
'write data to recordset
sourceRecordSet.MoveFirst ' to be safe
targetRecordSet.MoveFirst ' to be safe
While Not sourceRecordSet.EOF
targetRecordSet.AddNew
For Each fld In sourceRecordSet.Fields 'fails here, hilighting fld
'do work
Next fld
sourceRecordSet.MoveNext
Loop
'(irrelevant code omitted)
End Sub
Cas de Test 2 (capable de définir des "Pour Chaque fld" très bien):
Private Sub testCase2()
'Create a source dataset
Dim sourceRs As ADODB.Recordset
Set sourceRs = functionThatGetsRecordset("(a query)")
'Create target db conn
Dim mdbConn As ADODB.Connection
Set mdbConn = functionThatGetsConn()
'iterate through source's fields
For Each fld In sourceRs.Fields 'works fine
'do work
Next fld
End Sub
RE la dernière révision de votre question, avez-vous des
Dim fld As ADODB.Field
quelque part?Non, il n'est pas explicitement défini fld dans les deux cas.
Et qu'advient-il si vous ajoutez
Dim fld As ADODB.Field
?Fonctionne comme prévu. Toutes mes excuses, c'est différent pour la prochaine comportement dans d'autres langues que j'ai utilisé. Présenter que comme une réponse ci-dessous et de recueillir votre sweet sweet karma 🙂
OriginalL'auteur Tony | 2014-04-07
Vous devez vous connecter pour publier un commentaire.
Essayer deux choses:
Dim fldField As Field
For Each
déclaration):Dim fldField As Field
, je reçoisExpected end of statement
comme une erreur.OriginalL'auteur Blackhawk