Neuigkeiten:

Ist euer Problem gelöst, dann bitte den Knopf "Thema gelöst" drücken!

Mobiles Hauptmenü

Laufzeitfehler 2101 bei Unterformular wechsel

Begonnen von TomTom2903, April 03, 2012, 14:34:06

⏪ vorheriges - nächstes ⏩

TomTom2903

Hallo,
bekomme einen Laufzeitfehler beim Wechsel des Unterformulars.
-> Die von Ihnen eingegeben Einstellungen ist für diese Eigenschaft ungültig.

Code:

Private Sub cmbAnzeigen_Click()
    SetzeTitel Me, "Kunden Information", Me.cmbAnzeigen.Column(1)
   
    Me.lblTitelDetails.Caption = "Details: " & Me.cmbAnzeigen.Column(1)
   
    With sfmdetails
        If Me.cmbAnzeigen.Column(2) = "" Then
            .SourceObject = ""
            .Visible = False
        Else
            With Me![sfmdetails]
                .LinkChildFields = ""
                .LinkMasterFields = ""
                .SourceObject = "Me.cmbAnzeigen.Column(2)"
                .LinkChildFields = "Kunde"
                .LinkMasterFields = "asdf"
            End With
           
            .SourceObject = Me.cmbAnzeigen.Column(2)    '    '"frm_KundenAdresse"
            .Visible = True
            Debug.Print Kunde
        End If
    End With
End Sub

Private Sub Form_Current()
    With cmbAnzeigen
        .RowSource = ""
        .RowSource = .RowSource & anzOhne & ";Auswahl Treffen;;"
        .RowSource = .RowSource & anzKundeAdresse & ";Adresse;frm_KundenAdresse;"
        .RowSource = .RowSource & anzJahresUmsatz & ";Umsatz Monat/Jahr (Mit Verteilung);TEST;"
        .RowSource = .RowSource & anzMonatUmsatz & ";Hier;Abfrage.Abfrageneu;"
        .RowSource = .RowSource & anzletzte3MonatUmsatz & ";Monatsumsatz aktuell (Ohne Verteilung);Abfrage.qry_MV_MonatsUmsatzJahr;"
        .RowSource = .RowSource & anzRunner & ";Artikel Runner;Abfrage.qry_OV_MonatsUmsatzAktuell"
        .Value = anzOhne
    End With
End Sub


Hat jmd ne Idee?! Wäre super dankbar!
Grüße

DF6GL

Hallo,

lass Dir mal nach diesem Code:

    With cmbAnzeigen
        .RowSource = ""
        .RowSource = .RowSource & anzOhne & ";Auswahl Treffen;;"
        .RowSource = .RowSource & anzKundeAdresse & ";Adresse;frm_KundenAdresse;"
        .RowSource = .RowSource & anzJahresUmsatz & ";Umsatz Monat/Jahr (Mit Verteilung);TEST;"
        .RowSource = .RowSource & anzMonatUmsatz & ";Hier;Abfrage.Abfrageneu;"
        .RowSource = .RowSource & anzletzte3MonatUmsatz & ";Monatsumsatz aktuell (Ohne Verteilung);Abfrage.qry_MV_MonatsUmsatzJahr;"
        .RowSource = .RowSource & anzRunner & ";Artikel Runner;Abfrage.qry_OV_MonatsUmsatzAktuell"
        .Value = anzOhne
    End With



den Rowsource_Eigenschaften-Inhalt mit Debug.Print in das Direktfenster schreiben....

neben den möglicherweise fehlenden Gänsefüßen (Hochkommata) kannst Du nicht mit der Angabe eines Abfragenamens auf den "Inhalt" einer Auswahlabfrage zugreifen...

Möglicherweise fehlt auch noch die Einstellung der Herkunftstyp-Eigenschaft auf "Wertliste"  ("Value List")
Viele Grüße vom Bodensee
Franz, DF6GL

Hilfestellung:  http://www.access-o-mania.de/forum/index.php?topic=6969.msg118738#msg118738

Links und Tipps:
1.   http://v.hdm-stuttgart.de/~riekert/lehre/db-kelz/
1a. http://www.tinohempel.de/info/info/datenbank/normalisierung.htm
1b. https://support.office.com/de-de/article/Grundlagen-des-Datenbankentwurfs-eb2159cf-1e30-401a-8084-bd4f9c9ca1f5#bmterms
2.   http://www.donkarl.com
3.   https://web.archive.org/web/20201201233522/http://www.dbwiki.net/
4.   http://www.access-tutorial.de/
5.   http://www.tty1.net/smart-questions_de.htm
6.   http://access.joposol.com/accept

Last but not least:   < F1 > für Hilfe
;) Learning by doing not by spoon-feed ;)

Tipp: Find and Replace for Access

Beaker s.a.

Hallo Tom,
Vielleicht markierst DU mal die Zeile, die der Debugger Dir anzeigt,
wenn dieser Fehler ausgelöst wird.
Ich tippe auf:
.SourceObject = "Me.cmbAnzeigen.Column(2)"
Das SourceObject eines UForm-Steuerelements ist ein Formular.
Da gehört also ein Formularname zwischen die " ".
Wenn dieser in dem Kombo in Column(2) angezeigt wird, dann
.SourceObject = Me.cmbAnzeigen.Column(2)

OHNE Gänsefüsse.
hth
gruss ekkehard
Alles, was geschieht, geschieht. - Alles, was während seines Geschehens etwas anderes geschehen lässt, lässt etwas anderes geschehen. - Alles, was sich selbst im Zuge seines Geschehens erneut geschehen lässt, geschieht erneut. - Allerdings tut es das nicht unbedingt in chronologischer Reihenfolge.
(Douglas Adams, Mostly Harmless)

TomTom2903

Hi,
danke für Eure Antworten. Das mit den Gänsefüßen ist mir auch aufgefallen.
Das Problem kam aber aus den ersten 2 .Link...Fields.
Habe das umgegangen durch ne Error Methode, so funktioniert es...
So ganz verstehen, warum er die Error anweisung benötigt, verstehe ich noch nicht.

Jmd von Euch ne Idee. Hat was mit dem leeren "" String zu tun.

Grüße
Tom

Code:

Private Sub Befehl58_Click()
    With sfmdetails
               
        If Me.cmbAnzeigen.Column(2) = "" Then
            .SourceObject = ""
            .Visible = False
        Else
            On Error Resume Next
            .LinkChildFields = ""
            Debug.Print "1" & .LinkChildFields
           
            On Error Resume Next
            .LinkMasterFields = ""
            Debug.Print "2" & .LinkMasterFields
           
            .SourceObject = Me.cmbAnzeigen.Column(2)
            .LinkChildFields = "Kunde; Periode"              'Unterformular
            Debug.Print "3" & .LinkChildFields
            .LinkMasterFields = "asdf; periodeID"              'Hauptformular
            Debug.Print "4" & .LinkMasterFields
           
            '.SourceObject = Me.cmbAnzeigen.Column(2)    '    '"frm_KundenAdresse"
            .Visible = True
            Debug.Print "Ende"
        End If
    End With
End Sub

DF6GL

Hallo,

solange noch kein SourceObject definiert (zugewiesen) ist, dürften die Link-Fields-Eigenschaften  noch gar nicht existieren....
Viele Grüße vom Bodensee
Franz, DF6GL

Hilfestellung:  http://www.access-o-mania.de/forum/index.php?topic=6969.msg118738#msg118738

Links und Tipps:
1.   http://v.hdm-stuttgart.de/~riekert/lehre/db-kelz/
1a. http://www.tinohempel.de/info/info/datenbank/normalisierung.htm
1b. https://support.office.com/de-de/article/Grundlagen-des-Datenbankentwurfs-eb2159cf-1e30-401a-8084-bd4f9c9ca1f5#bmterms
2.   http://www.donkarl.com
3.   https://web.archive.org/web/20201201233522/http://www.dbwiki.net/
4.   http://www.access-tutorial.de/
5.   http://www.tty1.net/smart-questions_de.htm
6.   http://access.joposol.com/accept

Last but not least:   < F1 > für Hilfe
;) Learning by doing not by spoon-feed ;)

Tipp: Find and Replace for Access

Beaker s.a.

Hallo Tom,
On Error Resume Next
Gaaanz schlecht!
Da erfährst Du ja nie ob da Laufzeitfehler auftreten.
Das heisst aber auch, dass Du die Kontrolle über Deinen
Code verlierst, was natürlich zu unvorhergesehenen Ergebnissen
führen kann. Also gewöhne Dir an, in jede Prozedur zumindest
eine rudimentäre Fehlerbehandlung einzubauen, die Dir zumindest
die Fehlernummer (Err.Number) und die Beschreibung (Err.Description)
ausgibt.
Zum Code, versuch Mal so:
        Else

            .SourceObject = Me.cmbAnzeigen.Column(2)
            .LinkChildFields = "Kunde; Periode"              'Unterformular
            .LinkMasterFields = "asdf; periodeID"              'Hauptformular
            .Visible = True
           

Du musst zuerst das SourceObject zuweisen, dann die Link-Fields (siehe Franz Anmerkung).
Vorher auf "" zu stellen ist IMO nicht nötig.
Frage: Warum sind denn die Felder hier fest verdrahtet?
hth
gruss ekkehard
Alles, was geschieht, geschieht. - Alles, was während seines Geschehens etwas anderes geschehen lässt, lässt etwas anderes geschehen. - Alles, was sich selbst im Zuge seines Geschehens erneut geschehen lässt, geschieht erneut. - Allerdings tut es das nicht unbedingt in chronologischer Reihenfolge.
(Douglas Adams, Mostly Harmless)

TomTom2903

Hallo Beaker,
Hallo Franz,
das mit dem Error gefällt mir auch nicht...

Mein Problem ist, dass ich das so wie du auch probiert habe. Laße ich jetzt aber das Feld Periode mal leer. Also so das ich mir alle 12 Monate anzeigen lassen möchte. Bekomme ich prompt eine Fehlermeldung:
Laufzeitfehler 2101: "Die von Ihnen eingegebene Einstellung ist für diese Eigenschaft ungültig.
-> Zeile nach debugen mit *** gekennzeichnet.

           'On Error Resume Next
           '.LinkChildFields = ""
           Debug.Print "1" & .LinkChildFields
           
           'On Error Resume Next
           '.LinkMasterFields = ""
           Debug.Print "2" & .LinkMasterFields
           
           .SourceObject = Me.cmbAnzeigen.Column(2)
           
***           .LinkChildFields = "Kunde; Periode"              'Unterformular
           Debug.Print "3" & .LinkChildFields
           .LinkMasterFields = "asdf; periodeID"              'Hauptformular
           Debug.Print "4" & .LinkMasterFields

Die LinkChildFields können ja anscheinend mit leeren Strings nichts anfangen?!

Mein Ziel ist es im übrigen ein Formular mit Subformular zu bauen in dem ich verschieden angaben Filten kann:
Umsätze nach Kunde -> Jahr/Monatsübersicht, weiterer Filter wäre dann auf Periode, Teilegruppe, Artikel usw...
-> vielleicht habe ich ja auch einen falschen Ansatz gewählt.


@ Beaker: Zu deiner Frage "Warum die Felder fest verdrahtet sind?"
Hm, am liebsten wären mir natürlich die Felder variabel zu gestalten. Z.B. könnte ja Column (2) auch ein Formular "Adresse" sein oder eine Abfrage die sich werder auf Kunde noch auf Periode bezieht. Hier wäre diese Felder natürlich völiger Quatsch, aber ehrlich gesagt habe ich hier noch nicht wirklich einen Ansatz um das auch variabel/dynamisch zu gestalten.
-> In diesem Zusammenhang habe ich auch immer die fields = "" gesetzt, um beim test von anderen Abfragen keine Fehlermeldung zu bekommen...

Hast du ne Idee - Ansatz?!

Gruß
Tom

Beaker s.a.

Hallo Tom,
Zitatdas mit dem Error gefällt mir auch nicht...
Dann ändere es ;-)
Zum Code:
Bist Du sicher, dass die Feldnamen richtig sind?
Hast Du es mal mit Komma statt Semikolon zwischen den Feldnamen versucht?
ZitatDie LinkChildFields können ja anscheinend mit leeren Strings nichts anfangen?!
Das kann eigentlich nicht sein. Wenn nichts drin steht wird auch nicht verlinkt.
Statt "" könntest Du aber auch mal vbNullString versuchen.
ZitatMein Ziel ist es im übrigen ein Formular mit Subformular zu bauen in dem ich verschieden angaben Filten kann:
Umsätze nach Kunde -> Jahr/Monatsübersicht, weiterer Filter wäre dann auf Periode, Teilegruppe, Artikel usw...
-> vielleicht habe ich ja auch einen falschen Ansatz gewählt.
Das liesse sich evtl. auch über eine dynamische Zuweisung der Datenherkunft (Abfrage/SQL) des UFo realisieren.
ZitatHm, am liebsten wären mir natürlich die Felder variabel zu gestalten. Z.B. könnte ja Column (2) auch ein Formular "Adresse" sein oder eine Abfrage die sich werder auf Kunde noch auf Periode bezieht. Hier wäre diese Felder natürlich völiger Quatsch, aber ehrlich gesagt habe ich hier noch nicht wirklich einen Ansatz um das auch variabel/dynamisch zu gestalten.
Wie sieht den die RowSource des Kombis aus (Me.cmbAnzeigen.Column(2))?
Wenn da der Formularname drin steht, kannst Du da doch auch die LinkFields hinterlegen,
und dann genauso zuweisen wie den Formnamen (.Column(n)).
hth
gruss ekkehard
Alles, was geschieht, geschieht. - Alles, was während seines Geschehens etwas anderes geschehen lässt, lässt etwas anderes geschehen. - Alles, was sich selbst im Zuge seines Geschehens erneut geschehen lässt, geschieht erneut. - Allerdings tut es das nicht unbedingt in chronologischer Reihenfolge.
(Douglas Adams, Mostly Harmless)