2016-03-22 20 views
0

Birden çok onay kutusu seçimine bağlı olarak değiştirmeye çalıştığım bir alt form var. Her onay kutusu için hangi kutuların işaretlendiğine/kaç tane seçildiğine bağlı olarak bir genel işlevi çağıran bir güncelleme sonrası olay yazdım. Ev ana form ve "ALLProgressTracking" olduğu, aşağıdaki gibi fonksiyonun ilk bölümü alt form olduğu:Çaprazlama sorgusuna işlev işlevi argümanları besleme

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 

konudur Zaten olarak bağlanmış üç olası alanlarından birinde inşa formları olduğunu satır başlıklarından biri (bu bir çapraz form/sorgu) bu yüzden SQL'i alternatif bir alan için yukarıdaki kodla değiştirmeye çalıştığımda, uygun satır başlıklarından ziyade # İsim olsun. Sanırım SQL deyimini, kaynak nesne olarak çağırdığım alt formun işlevine başvurmak için değiştirmeyi düşünüyorum ama bunun nasıl yapılacağı konusunda kaydım. Örneğin

, ben form için aşağıdaki SQL sahip formu IndProgressTracking için:

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

Ve işlevi içine "Durum" beslerken formu proje ancak saymak için doğru sayılarla yükleyecektir # Tüm satır başlıkları olarak adlandır.

Tüm bunların mantıklı olduğunu ve birilerinin yardım edebileceğini umarız!

+0

Gerçekten bir çapraz sorgu olması gerekiyor mu? –

+0

Evet, bir yıl boyunca her bir ay için her bir statü/kategori/aşamadaki projelerin sayısını göstermek için sorguya/forma ihtiyacım var, bu yüzden bir çaprazlamanın en iyi seçenek olacağını düşündüm. – madelina

+0

Sayımlar ve grup toplamları ile bir 'SELECT' sorgusu kullanarak aynı sorgu sonucunu elde edip edemeyeceğinizi görebilirsiniz. Crosstabs'ları fazla kullanmadım, ancak sorununun bir formun kayıt kaynağı olarak bir çapraz sorgu kullanması ve ardından güncellemeye çalışması olduğunu tahmin ediyorum. –

cevap

0

ben kayıt kaynağı satırdan sonra, fonksiyonun sonunda bu satırı ekleyerek sorunu çözmek başardı:

Forms!Home![ALLProgressTracking].Form.[TrackingMetric].ControlSource = argField1 

[TrackingMetric] ile daha önce #Name? görüntülenen ilişkili metin kutusunun adıdır.

0

Sen alan adını (ler) statik olarak diğer ad olabilir:

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; 
İlgili konular