Access-o-Mania

Access-Forum (Deutsch/German) => Access Programmierung => Thema gestartet von: Frank77 am Januar 20, 2015, 16:47:45

Titel: Frage zur Code Verbesserung
Beitrag von: Frank77 am Januar 20, 2015, 16:47:45
 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


Titel: Re: Frage zur Code Verbesserung
Beitrag von: MzKlMu am Januar 20, 2015, 17:00:34
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 ?
Titel: Re: Frage zur Code Verbesserung
Beitrag von: Frank77 am Januar 20, 2015, 17:12:24
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
Titel: Re: Frage zur Code Verbesserung
Beitrag von: MzKlMu am Januar 20, 2015, 17:28:00
Hallo,
ich halte das alles weitgehend für überflüssig.
Kannst Du mal erklären, was Du da vorhast ?
Titel: Re: Frage zur Code Verbesserung
Beitrag von: MaggieMay am Januar 20, 2015, 17:49:56
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. ;-)
Titel: Re: Frage zur Code Verbesserung
Beitrag von: Frank77 am Januar 20, 2015, 18:10:42
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
Titel: Re: Frage zur Code Verbesserung
Beitrag von: MzKlMu am Januar 20, 2015, 18:55:11
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 ?
Titel: Re: Frage zur Code Verbesserung
Beitrag von: MaggieMay am Januar 20, 2015, 20:09:16
@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.
Titel: Re: Frage zur Code Verbesserung
Beitrag von: Frank77 am Januar 20, 2015, 20:33:57
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