2016-03-22 8 views
0

Ich habe ein Unterformular, das ich versuchen möchte, basierend auf mehreren Checkbox-Auswahlen zu ändern. Für jedes Kontrollkästchen habe ich ein Ereignis nach dem Update geschrieben, das eine öffentliche Funktion aufruft, basierend darauf, welche Boxen geprüft wurden/wie viele ausgewählt wurden. Der erste Teil der Funktion ist wie folgt, wobei Zuhause ist die Hauptform und „ALLProgressTracking“ wird das Unterformular:Füttern von Funktionsargumenten in die Kreuztabellenabfrage

Public Function ProgressDisplay(argNoFields As Integer, Optional argField1 As String, Optional argField2 As String, Optional argField3 As String) 

Dim strSQL As String 

If argNoFields = 1 Then 
strSQL = "TRANSFORM Sum([StatusTracking Query].CountofProjectID) AS CountOfProjects " & _ 
      "SELECT [StatusTracking Query]." & argField1 & " " & _ 
      "FROM [StatusTracking Query] " & _ 
      "GROUP BY [StatusTracking Query]." & argField1 & " " & _ 
      "PIVOT [StatusTracking Query].ValueDate;" 

Forms!Home![ALLProgressTracking].SourceObject = "Form.IndProgressTracking" 
Forms!Home![ALLProgressTracking].Form.RecordSource = strSQL 

Das Problem ist, dass ich die Formulare bereits mit einem der möglichen Feldern drei gebaut gebunden als eine der Zeilenüberschriften (es ist eine Kreuztabellenform/Abfrage) daher, wenn ich versuche, die SQL mit dem obigen Code für ein alternatives Feld zu ändern, bekomme ich #Name anstelle der richtigen Zeilenüberschriften. Ich vermute, es ist eine Frage der Änderung der SQL-Anweisung, um die Funktion für das Teilformular, das ich als Quellobjekt rufe, zu referenzieren, aber ich bin verloren, wie dies zu erreichen ist.

Zum Beispiel für das Formular IndProgressTracking ich die folgende SQL für die Form haben:

TRANSFORM Sum([StatusTracking Query].CountOfProjectID) AS SumOfCountOfProjectID 
SELECT [StatusTracking Query].Category 
FROM [StatusTracking Query] 
GROUP BY [StatusTracking Query].Category 
PIVOT [StatusTracking Query].ValueDate; 

Und wenn ich „Status“ fließen in die Funktion die Form mit den richtigen Zahlen für Projekt laden jedoch zählen #Name wie alle Zeilenüberschriften.

Hoffe das alles macht Sinn und jemand kann helfen!

+0

Muss es wirklich eine Kreuztabellenabfrage sein? –

+0

Ja, ich brauche die Abfrage/Formular, um die Anzahl der Projekte in jedem Status/Kategorie/Phase für jeden Monat im Laufe von etwa einem Jahr anzuzeigen, daher dachte ich, eine Kreuztabelle wäre die beste Option. – madelina

+0

Vielleicht sehen Sie, ob Sie das gleiche Abfrageergebnis mit einer SELECT-Abfrage mit Zählungen und Gruppensummen erhalten können. Ich habe Kreuztabellen nicht häufig verwendet, aber ich vermute, dass Ihr Problem auf die Verwendung einer Kreuztabellenabfrage als die Datenquelle eines Formulars zurückzuführen ist, und versuchen Sie dann, sie zu aktualisieren. –

Antwort

0

Ich konnte das Problem lösen, indem diese Zeile am Ende der Funktion hinzugefügt, nach der Nachweisquellenleitung:

Mit [TrackingMetric] der Name des gebundenen Textfelds, das zuvor #Name? angezeigt wurde.

0

Sie können die Feldnamen Alias ​​(s) zu statisch sein:

TRANSFORM Sum([StatusTracking Query].CountOfProjectID) AS SumOfCountOfProjectID 
SELECT [StatusTracking Query].Category As ArgField1 
FROM [StatusTracking Query] 
GROUP BY [StatusTracking Query].Category 
PIVOT [StatusTracking Query].ValueDate; 
Verwandte Themen