Frage : Ich habe einen Störschub mit einer Form und kombinierten Kästen

Ich halte, einen merkwürdigen Störschub zu haben, seitdem ich meine Form herum änderte. Meine ursprüngliche Datenbank war alles gegründete Fenster. Eins dieser Fenster war für die Entstörung eines vor-gebildeten Reports. Der Report gefiltert durch 3 kombinierte Kästen. Das erste bevölkert das zweite, das der Reihe nach das Drittel bevölkert und den Filter anwendet.

My neue Einstellung ist benutzerfreundlicher und ich habe nur eine einzelne Form und alle anderen Formen sind jetzt geöffnete s subforms innerhalb der Hauptform. Hervorquellen seitdem ich änderte den Entwurf und redigierte einige der Wege für die Codes, zurückstellen meine kombinierten Kästen nachdem Sie auserwählt vom dritten und abschließenden Kasten enden. Zum Beispiel wenn Sie zuerst zur Reportgeneratorform steuern und den Report vorwählen, was zum Filter und der Filter es den Filter und dann frei alle Kästen anwenden. Dann wenn Sie versuchen, einen anderen Filter anzuwenden, nachdem das 3. Einzelteil das Zurückstellen mit 3 kombinierten Kästen zu den letzten Wahlen vorgewählt worden, die Sie treffen. Es fortfährt, dies ständig zu tun. Unter ist der ursprüngliche Code, bevor ich ihn neu entwarf und das folgende der Code I z.Z. use.
ist
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:
31:
32:
33:
34:
35:
6:
37:
38:
39:
40:
41:
42:
43:
44:
45:
46:
47:
48:
49:
50:
51:
52:
53:
54:
55:
56:
57:
58:
59:
60:
61:
62:
63:
64:
65:
66:
67:
68:
69:
70:
71:
72:
73:
74:
75:
76:
77:
78:
79:
80:
81:
82:
83:
84:
85:
86:
87:
88:
89:
90:
91:
92:
93:
94:
95:
96:
97:
98:
99:
100:
101:
102:
103:
104:
105:
106:
107:
108:
109:
110:
111:
Option ausdrücklich

Allgemeine Funktion FieldType (TableName als Schnur, Fieldname als Schnur) als ganze Zahl
    Schwaches strSQL als Schnur, rs als DAO.Recordset
    
    'Variablen zuweisen
        strSQL = „VORWÄHLEN [“ u. Fieldname u. „] VON [“ u. TableName u. „] WO falsch“ ch
        strSQL = ersetzen (ersetzen (strSQL, „[[“, „["), „]]“, „] ")
    
    Rs = CurrentDb.OpenRecordset (strSQL, dbFailOnError) einstellen
    
    FieldType = rs. Felder (0). Art
    rs. Abschluss
    Rs einstellen = nichts
    
Funktion beenden

Privates VorbtnMainMenu_Click ()
Auf Störung Goto- btnMainMenu_Click_Err

    DoCmd.OpenForm „Hauptleitung“
    DoCmd.Close acForm, „ReportGen“

btnMainMenu_Click_Exit:
    Unterseeboot herausnehmen

btnMainMenu_Click_Err:
    MsgBox Error$
    Zusammenfassung btnMainMenu_Click_Exit

Enden-Unterseeboot

Privates VorbtnMainMenu_MouseDown (Knopf als ganze Zahl, Verschiebung als ganze Zahl, X, wie einzeln, Y, wie einzeln)
Me.btnMainMenu.Visible = falsch
Me.btnMainMenu2.Visible = ausrichten en
Enden-Unterseeboot

Privates VorbtnMainMenu_MouseUp (Knopf als ganze Zahl, Verschiebung als ganze Zahl, X, wie einzeln, Y, wie einzeln)
Me.btnMainMenu2.Visible = falsch
Me.btnMainMenu.Visible = ausrichten en
Enden-Unterseeboot

Privates VorcboReport_Change ()
    Schwaches strReport als Schnur
    
    'Variablen zuweisen
        strReport = Me.cboReport.Value
    
    'Bevölkert cboField mit den Wahlen, die auf cboReport basieren.
        Me.cboField.RowSource = strReport
        Me.cboField.RowSourceType = „Feld-Liste“
        Me.cboField.Value = ""
        Me.cboFilter.Value = ""
        Me.Refresh
    
    'Diese Aussage findet das vorgewählte Einzelteil im kombinierten Kasten und öffnet das jeweilige
    'im Vorreportbereich berichten.
        Wenn IsNull (cboReport.Value) dann
            Me.subReport.SourceObject = ""
        Sonst
            Wenn cboReport.Value = „Angestellter“ dann
                Me.subReport.SourceObject = „Report.rptEmployee“
            Sonst
                Me.subReport.SourceObject = „Report.rptInventory“
            Beenden wenn
        Beenden wenn
    
Unterseeboot beenden

Privates VorcboField_Change ()
    Schwaches strReport als Schnur, strField als Schnur, strFilter als Schnur

    'Variablen zuweisen
        strReport = Me.cboReport.Value
        strField = Me.cboField.Value
        strFilter = „AUSERWÄHLTES eindeutiges“ u. „[“ u. strReport u. „]“ u. „.“ u. „[“ u. strField u. „]“ u. „VON“ u. „[“ u. strReport u. „]“ u. „; “
        
    'Bevölkert cboFilter mit den Wahlen, die auf cboReport und cboField basieren.
        Me.cboFilter.RowSourceType = „Tabelle/Frage“
        Me.cboFilter.RowSource = strFilter
        Me.cboFilter.Value = ""
        Me.Refresh
        
Enden-Unterseeboot

Privates VorcboFilter_Change ()
    Schwaches strFilter als Schnur, strApply als Schnur, strReport als Schnur, strField als Schnur
    Schwaches intFieldType als Schnur
    'Variablen zuweisen
        strReport = Me.cboReport.Value
        strField = Me.cboField.Value
        strFilter = Me.cboFilter.Value
        intFieldType = FieldType (strReport, strField)
    
    'Vorgewählten Filter am subReport anwenden
        Fall intFieldType vorwählen
            Das dbBigInt, dbBoolean, dbByte, das dbCurrency, dbDecimal, dbDouble, dbFloat, dbInteger, das dbLong umkleiden, dbNumeric
                 strApply = „[“ u. strField u. „] =“ u. strFilter
            Fall dbChar, dbText, dbMemo
                strApply = „[“ u. strField u. „] = """ u. strFilter u. """"
            Fall dbDate, dbTime
                strApply = „[“ u. strField u. „] = #“ u. strFilter u. „#“
            Fall sonst
                MsgBox „unerwartete Datenart =“ u. intFieldType
                strApply = ""
        Ende auserwählt

        Me.subReport.Report.Filter = strApply
        Me.subReport.Report.FilterOn = (strApply <> "")

Enden-Unterseeboot
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:
31:
32:
33:
34:
35:
6:
37:
38:
39:
40:
41:
42:
43:
44:
45:
46:
47:
48:
49:
50:
51:
52:
53:
54:
55:
56:
57:
58:
59:
60:
61:
62:
63:
64:
65:
66:
67:
68:
69:
70:
71:
72:
73:
74:
Option ausdrücklich

Allgemeine Funktion FieldType (TableName als Schnur, Fieldname als Schnur) als ganze Zahl
    Schwaches strSQL als Schnur, rs als DAO.Recordset
    
    'Variablen zuweisen
        strSQL = „VORWÄHLEN [“ u. Fieldname u. „] VON [“ u. TableName u. „] WO falsch“ ch
        strSQL = ersetzen (ersetzen (strSQL, „[[“, „["), „]]“, „] ")
    
    Rs = CurrentDb.OpenRecordset (strSQL, dbFailOnError) einstellen
    
    FieldType = rs. Felder (0). Art
    rs. Abschluss
    Rs einstellen = nichts
    
Funktion beenden

Privates VorcboReport_Change ()
Schwaches strReport als Schnur, strOpenReport als Schnur
    'Variablen zuweisen
strReport = „tbl“ u. Me.cboReport.Value
strOpenReport = „Report.rpt“ u. Me.cboReport.Value

    'Bevölkert cboField mit den Wahlen, die auf cboReport basieren.
        Me.cboField.RowSource = strReport
        Me.cboField.RowSourceType = „Feld-Liste“
        Me.cboField.Value = ""
        Me.cboFilter.Value = ""
        Formen! frmMain.subMain.Form.subReport.SourceObject = strOpenReport

Enden-Unterseeboot

Privates VorcboField_Change ()
    Schwaches strReport als Schnur, strField als Schnur, strFilter1 als Schnur

    'Variablen zuweisen
        strReport = „tbl“ u. Me.cboReport.Value
        strField = Me.cboField.Value
        strFilter1 = „AUSERWÄHLTES eindeutiges“ u. „[“ u. strReport u. „]“ u. „.“ u. „[“ u. strField u. „]“ u. „VON“ u. „[“ u. strReport u. „]“ u. „; “
        
    'Bevölkert cboFilter mit den Wahlen, die auf cboReport und cboField basieren.
        Me.cboFilter.RowSourceType = „Tabelle/Frage“
        Me.cboFilter.RowSource = strFilter1
        Me.cboFilter.Value = ""
Enden-Unterseeboot

Privates VorcboFilter_Change ()
    Schwaches strFilter als Schnur, strApply als Schnur, strField als Schnur, strReport als Schnur, intFieldType als Schnur
    
    'Variablen zuweisen
        strReport = „tbl“ u. Me.cboReport.Value
        strField = Me.cboField.Value
        strFilter = Me.cboFilter.Value
        intFieldType = FieldType (strReport, strField)
    
    'Vorgewählten Filter am subReport anwenden
        Fall intFieldType vorwählen
            Das dbBigInt, dbBoolean, dbByte, das dbCurrency, dbDecimal, dbDouble, dbFloat, dbInteger, das dbLong umkleiden, dbNumeric
                 strApply = „[“ u. strField u. „] =“ u. strFilter
            Fall dbChar, dbText, dbMemo
                strApply = „[“ u. strField u. „] = """ u. strFilter u. """"
            Fall dbDate, dbTime
                strApply = „[“ u. strField u. „] = #“ u. strFilter u. „#“
            Fall sonst
                MsgBox „unerwartete Datenart =“ u. intFieldType
                strApply = ""
        Ende auserwählt
        Formen! frmMain.subMain.Form.subReport.Report.Filter = strApply
        Formen! frmMain.subMain.Form.subReport.Report.FilterOn = (strApply <> "")
Enden-Unterseeboot

Privates VorForm_Load ()
Formen! frmMain.lblSubHeader.Caption = „Report-Generator“
Ende Sub

Antwort : Ich habe einen Störschub mit einer Form und kombinierten Kästen

1. Was ist die Notwendigkeit an der Hauptform irgendwie?
Sie können es entleeren und ändern alle Hinweise auf ihm zu:
    [subReport]. Report.use dieses
2. Ihre combobox Codes auf die „After_Update“ Ereignisse verschieben

Ich angebracht eine reparierte Probe e.

Anmerkungen:
Diese „Report in einer Form“ Funktionalität ist in Acc2010, es wirft Störungen wie die neu, die ich erhielt,
Selbst wenn geöffnet in Acc07 (das angenommen kompatibel ist)
Es funktioniert überhaupt nicht in den älteren Versionen.

Wenn Sie filtern, dann Ihren Report von einem *separate* Menü öffnen, (die Standardweise dieses erfolgt, für volle Kompatibilität), dieses wird alle Arbeit fein.
K.I.S.S
; -)

Das heißt, neige ich, weg von der Anwendung der neuen „Gee Whiz“ Funktionalität zu bleiben, bis ich völlig wie es Arbeit verstehe.

Schließlich kann dieses System schwierig oben sein beenden zu handhaben (ein Menü, mehrfache Reports)
Wie Sie ersucht werden können, für mehr Felder und die kompliziertere Entstörung zu erweitern,
Wieder ist dieses nicht die Standardweise des Handelns dies.
Aber ich zugestehe h, dass Sie der Chef in diesem Fall sind.
; -)

Aber ja, war dieses eine interessante Übung.

; -)

JeffCoachman


Weitere Lösungen  
 
programming4us programming4us