2009-11-23 3 views
0

Ok donc sur ce formulaire, je crée une grille, qui ressemble presque à un graphique à barres avec de petites "cellules" empilées par mois. Chacune de ces "cellules" sont des sous-formes carrées, et je crée les petites formes carrées que j'utilise comme sous-formes. Donc, ce que je voulais savoir, c'est quel est le code (VB) pour exécuter une requête de sélection, et travailler uniquement avec des enregistrements spécifiques dans cette requête? Par exemple, chacune de ces petites formes de type "cellule" qui deviennent les sous-formes, représente une organisation, et si je cours une requête Nième supérieure je reçois le Top 10 par n'importe quel ... donc l'idée est d'utiliser chaque petit formulaire en tant que représentant de chaque enregistrement de cette requête. Donc, pour la première cellule, je veux exécuter la requête SELECT, obtenir les résultats et travailler uniquement avec le premier enregistrement. Ensuite, sur le deuxième formulaire, exécutez exactement la même requête, et travaillez uniquement avec le deuxième enregistrement, et ainsi de suite!Choisir un enregistrement spécifique pour le formulaire

Son un peu bizarre je suppose, mais il leur donnera exactement ce qu'ils veulent, et la seule partie que je ne suis pas sûr, est la « définir exactement quel enregistrement je veux utiliser dans la VBA »

Merci!

Répondre

2

Vous pouvez changer le SQL pour chaque forme sous à lire:

SELECT TOP 1 ID, F1, F2 From Table 

SELECT TOP 2 From Table WHERE ID NOT IN (SELECT TOP 1 ID From Table) 

SELECT TOP 3 From Table WHERE ID NOT IN (SELECT TOP 2 ID From Table) 

<...> 

SELECT TOP 10 From Table WHERE ID NOT IN (SELECT TOP 9 ID From Table) 

Ou, vous voir disposez déjà d'un set-up un peu bizarre, vous pouvez écrire chaque ID à l'un des 10 contrôles de zone de texte caché à l'aide d'un recordset, et utiliser chacune de ces zones de texte en tant que champ maître de liaison avec ID en tant que champ de lien enfants pour les sous-formulaires. Les champs Maître de liaison et Champ de lien enfant sont des propriétés du contrôle de sous-formulaire, pas la forme contenue.

alt text http://ltd.remou.com/linkchildlinkmaster.png

+0

Merci remou .... question comment est-ce que j'accomplis la liaison du champ maître avec l'ID comme champ de lien enfant pour les sous-formulaires? merci! – Justin

+0

Ils peuvent être remplis dans la feuille de propriétés du contrôle de sous-formulaire, en faisant la distinction entre le contrôle de sous-formulaire et la forme contenue. – Fionnuala

1

Si je comprends bien votre demande, vous pouvez faire quelque chose comme ça.

Tableau Structure

ID Autonumber, 
Col1 Text 

balises BB

Private Sub Command0_Click() 
Dim rec As Recordset 
Dim id As Integer 

    Set rec = CurrentDb.OpenRecordset("SELECT TOP 10 * FROM Table1") 

    While Not rec.EOF 
     id = rec.Fields("ID") 
     rec.MoveNext 
    Wend 
End Sub 
+0

wow ... Je pense que cela peut être le plus facile ... je vais essayer! Merci! – Justin

1

Vous traitez l'instruction SQL comme la définition d'un pseudoTable, à savoir un ensemble d'enregistrements (RecordSet) que vous pouvez manipuler comme si c'était une table.

Dim cnn As ADODB.Connection 
Dim pseudoTable As ADODB.Recordset 
Dim strSQL As String 

    Set cnn = CurrentProject.Connection 
    Set pseudoTable = New ADODB.Recordset 

    strSQL = "SELECT Title FROM realTable where realID < 1000;" 
    pseudoTable.Open strSQL, cnn, adOpenStatic, adLockOptimistic 
    If Not pseudoTable.BOF And Not pseudoTable.EOF Then 
     pseudoTable.MoveFirst 
     Do Until pseudoTable.EOF 
      ' do something with the table 
      pseudoTable.MoveNext 
     Loop 

Le code ci-dessus devrait vous donner un bon début.

Questions connexes