Neuigkeiten:

Wenn ihr euch für eine gute Antwort bedanken möchtet, im entsprechenden Posting einfach den Knopf "sag Danke" drücken!

Mobiles Hauptmenü

Frage zur Code Verbesserung

Begonnen von Frank77, Januar 20, 2015, 16:47:45

⏪ vorheriges - nächstes ⏩

Frank77

 Hallo!
Ich hab da eine Frage zur Code Verbesserung   
Ich hatte das so geschrieben und wollte den Code Verbessern  und hab es in einen With und Case Block gesetzt  funktioniert alles
Ich wollte nur wissen ob das True hier richtig ist in der Case Anweisung
Case Is <> Null And Not True

Gruß Frank

Alter Code
Dim strDocName As String
    strDocName = "sfm_Ansprechpartner_Eingeben"
    If Me.OpenArgs = True Then
        Me(strDocName).SetFocus
        DoCmd.GoToRecord , , acNewRec
    End If
    If Not IsNull(Me.OpenArgs) And Not Me.OpenArgs = True Then
        Me(strDocName).Form.Filter = Me.OpenArgs
        Me(strDocName).Form.Filter = True
    End If


Neuer Code
    With Me(strDocName)
        Select Case Me.OpenArgs
        Case True
            .SetFocus
            .GoToRecord , , acNewRec
        Case Is <> Null And Not True
            .Form.Filter = Me.OpenArgs
            .Form.Filter = True
        End Select


Selbstständig = Selbst und Ständig

MzKlMu

Hallo,
was steht dann in den Openargs und wo und wie werden diese gefüllt ?  Wenn da nur True oder False drin steht, kann Dein Filter nicht funktionieren.

Es wäre auch vorteilhaft, den Code komplett (mit Kopf und Fuß) zu zeigen als nur den Auszug.

Und was ist das Ziel des Ganzen ?
Gruß Klaus

Frank77

Hallo!

Da Formular das auf geht ist ein Einzelformular

Klick Auf Button zur eingabe eines neuen Datensatzes
Private Sub cmd_Ansprechpartner_Neu_Click()
    Dim stDocName As String
    Dim strFilter As String
    If fncPruefen Then
        stDocName = "frm_Ansprechpartner"
        strFilter = "Veranstalter_ID = " & Me!txt_Veranstalter_ID
        DoCmd.OpenForm stDocName, acNormal, , strFilter, , acDialog, True
    End If
End Sub


Doppelklick im Listenfeld um den Datensatz zu finden den ich haben will

Private Sub lst_Ansprechpartner_DblClick(Cancel As Integer)
    Dim stDocName As String
    Dim strFilter As String
    Dim strCriteria As String
    If Not Me!lst_Ansprechpartner.ListCount = 0 Then
        stDocName = "frm_Ansprechpartner"
        strFilter = "Veranstalter_ID = " & Me!txt_Veranstalter_ID
        strCriteria = "Ansprechpartner_ID = " & Me!lst_Ansprechpartner.Column(0)
        DoCmd.OpenForm stDocName, acNormal, , strFilter, , acDialog, strCriteria
    End If
End Sub


Das ist dann die auswertung in Formular das sich öffnet

Private Sub Form_Open(Cancel As Integer)
    Dim strDocName As String
    bolExit_Allow = False
    strDocName = "sfm_Ansprechpartner_Eingeben"
    With Me(strDocName)
        Select Case Me.OpenArgs
        Case True
            .SetFocus
            .GoToRecord , , acNewRec
        Case Is <> Null And Not True
            .Form.Filter = Me.OpenArgs
            .Form.Filter = True
        End Select
    End With
End Sub


Funktionieren tut alles

Gruß Frank
Selbstständig = Selbst und Ständig

MzKlMu

Hallo,
ich halte das alles weitgehend für überflüssig.
Kannst Du mal erklären, was Du da vorhast ?
Gruß Klaus

MaggieMay

Hi,

ohne es ausprobiert zu haben würde ich eher folgende Variante wählen:Case Is Not Null And <> True

Allerdings, eine Optimierung kann ich darin auch nicht sehen. ;-)
Freundliche Grüße
MaggieMay

Frank77

Hallo!

ich hab das mal in ein kutzes Beispiel gepackt
in der Tabelle Ansprechpartner habe ich  X Fremdschlüssel  Veranstalter,Lieferant  und und und
weil alles hat irgendwo ja einen anderen verantwortlichen und ich benütze dafür nur eine Tabelle

Lediglich die Datenquelle des Formulars muss ich dann beim aufruf noch Ändern und die verknüpfung fürs Unterformulars zum Hauptvormular oder ich mach 10 Hauptformulare

Danke MaggieMay und MzKlMu

Gruß Frank

P.S. was mich kurtz irritiert ist das .GoToRecord , , acNewRec in der haupt datenbank klappt aber im beispiel nicht
Selbstständig = Selbst und Ständig

MzKlMu

Hallo,
Dein Beispiel ist etwas eigenartig und eher verwirrend als hilfreich.
Wieso stehen in den Projekten Nachnamen und Vornamen ?
Warum nimmst Du zur Anzeige der Ansprechpartner nicht einfach ein Unterformular verknüpft über die Schlüsselfelder ?
Und wo sind X Fremdschlüssel?
Warum nennst Du ein Formular Sub... wenn es kein Sub (Unterformular) ist ?
Gruß Klaus

MaggieMay

@Klaus:
Das "sub" ist Unterformular in "frm_Ansprechpartner".

@Frank:
Den Filter schaltet man folgendermaßen ein:
.Form.Filter[b][color=blue]On[/color][/b] = True

PS:
Zitatdas .GoToRecord , , acNewRec in der haupt datenbank klappt aber im beispiel nicht
Bei mir klappt das.
Freundliche Grüße
MaggieMay

Frank77

Hallo!

Danke für die mühe euch beiden
@Klaus:
es ging ja nur um die 3 Subs es wär jetzt sinnlos gewesen in das Beispiel x Formulare und Tabellen zu machen ich hab da nur ein anderes Beispiel schnell umgebaut
im original siehst wie auf dem Bild aus
Das form Veranstalter stellt dann immer dar was auch immer man braucht  Lieferant ect.
ich hab 2 leut die kennen sich da nicht so aus mit der Handhabung und damit die optisch sehen was sie da machen setz ich ein wenig auf vielleicht unkonventionelles Design

@MaggieMay
Danke vor lauter Arbeit mache ich immer wieder so Leichtsinnsfehler

Gruß Frank
Selbstständig = Selbst und Ständig