Hallo Community
Bei meiner Internetrecherche habe ich leider nicht herausfinden können, ob es bei Access 2003 möglich ist, ein Makro in VBA-Code zu wandeln. Sollte das möglich sein, kann mir jemand erklären wie?
Vielen Dank und Gruss
Nicole
Hallo,
bei Access2003 war das noch wunderbar einfach.
Menü > Extras > Makro > Makro zu VBA konvertieren.
Vorher eine Makro markieren.
Danke für die schnelle Antwort....kannst du mir auch sagen, wie das bei Access 2007 läuft? Ich muss mit verschiedenen Versionen arbeiten.
Hallo,
nein, kann ich nicht. Ich habe kein neueres Access.
Hi,
in A2007 müsste das noch genauso gehen - hast du noch nicht nachgeschaut?
In A2007 finde ich halt die Schaltfläche Extras bzw Menü schon gar nicht, das ist ja anders aufgebaut wie das 2003.
Hallo!
In Access 2016:
Makro im Entwurf öffnen --> Ribbon-Tab "Entwurf" --> "Makros in Visual Basic konvertieren"
mfg
Josef
Schau Dir das Bildchen im Anhang an - der Mauszeiger steht über Makros konvertieren.
Oh Man...manchmal ist man echt blind :-(
Vielen Dank für die vielen Antworten und die Hilfe.
LG Nicole
Wenn ich dies aber nun ausführe, dann schreibt er mir "Kein aktueller Datensatz". Woran könnte das liegen?
Hallo,
ZitatWoran könnte das liegen?
wie soll man etwas beurteilen das man nicht sieht?
Zeige also bitte den VBA Code und erkläre den Kontext in dieser angewendet wird.
Ich habe eine DB aus A2.0 vor einiger Zeit von einem netten Menschen in A2003 konvertieren lassen. Nun habe ich in der DB Filter mit Makros drin, die eine Adressdatenbank jeweils mit dem Anfangsbuchstaben filtern. Also wenn ich auf einen Knopf drücke wo B drauf steht, dann springt er zu dem ersten Namen der mit B anfängt. In der jetzigen Version mit dem Makro spinnt es halt manchmal, so das er mir bei Klick auf "B" nur ein leeres Formular anzeigt, wenn ich dann ein bisschen durch die Buchstaben zappe und wieder auf B gehe, dann nimmt er es dann meistens. Deswegen meine Überlegung das in VBA zu konvertieren.
Hier mal der Code
Function A_Z_Schaltflächen__Filter()
On Error GoTo A_Z_Schaltflächen__Filter_Err
With CodeContextObject
' Verknüpft mit den Schaltflächen "A" bis "Z" und "Alle" im Formular "Adressen".
If (.[Firmen Filter] = 1) Then
' Filter für Firmennamen, die mit A, À, Á, Â, Ã, oder Ä beginnen.
DoCmd.ApplyFilter "", "[Name] Like ""[123456789AÀÁÂÃÄ]*"""
End If
If (.[Firmen Filter] = 2) Then
' B
DoCmd.ApplyFilter "", "[Name] Like ""B*"""
End If
If (.[Firmen Filter] = 3) Then
' C oder Ç
DoCmd.ApplyFilter "", "[Name] Like ""[CÇ]*"""
End If
If (.[Firmen Filter] = 4) Then
' D
DoCmd.ApplyFilter "", "[Name] Like ""D*"""
End If
If (.[Firmen Filter] = 5) Then
' E, È, É, Ê oder Ë
DoCmd.ApplyFilter "", "[Name] Like ""[EÈÉÊË]*"""
End If
If (.[Firmen Filter] = 6) Then
' F
DoCmd.ApplyFilter "", "[Name] Like ""F*"""
End If
If (.[Firmen Filter] = 7) Then
' G
DoCmd.ApplyFilter "", "[Name] Like ""G*"""
End If
If (.[Firmen Filter] = 8) Then
' H
DoCmd.ApplyFilter "", "[Name] Like ""H*"""
End If
If (.[Firmen Filter] = 9) Then
' I, Ì, Í, Î oder Ï
DoCmd.ApplyFilter "", "[Name] Like ""[IÌÍÎÏ]*"""
End If
If (.[Firmen Filter] = 10) Then
' J
DoCmd.ApplyFilter "", "[Name] Like ""J*"""
End If
If (.[Firmen Filter] = 11) Then
' K
DoCmd.ApplyFilter "", "[Name] Like ""K*"""
End If
If (.[Firmen Filter] = 12) Then
' L
DoCmd.ApplyFilter "", "[Name] Like ""L*"""
End If
If (.[Firmen Filter] = 13) Then
' M
DoCmd.ApplyFilter "", "[Name] Like ""M*"""
End If
If (.[Firmen Filter] = 14) Then
' N, oder Ñ
DoCmd.ApplyFilter "", "[Name] Like ""[NÑ]*"""
End If
If (.[Firmen Filter] = 15) Then
' O, Ò, Ó, Ô, Õ oder Ö
DoCmd.ApplyFilter "", "[Name] Like ""[OÒÓÔÕÖ]*"""
End If
If (.[Firmen Filter] = 16) Then
' P
DoCmd.ApplyFilter "", "[Name] Like ""P*"""
End If
If (.[Firmen Filter] = 17) Then
' Q
DoCmd.ApplyFilter "", "[Name] Like ""Q*"""
End If
If (.[Firmen Filter] = 18) Then
' R
DoCmd.ApplyFilter "", "[Name] Like ""R*"""
End If
If (.[Firmen Filter] = 19) Then
' S oder Š (S hacek)
DoCmd.ApplyFilter "", "[Name] Like ""[SŠ]*"""
End If
If (.[Firmen Filter] = 20) Then
' T
DoCmd.ApplyFilter "", "[Name] Like ""T*"""
End If
If (.[Firmen Filter] = 21) Then
' U, Ù, Ú, Û oder Ü
DoCmd.ApplyFilter "", "[Name] Like ""[UÙÚÛÜ]*"""
End If
If (.[Firmen Filter] = 22) Then
' V
DoCmd.ApplyFilter "", "[Name] Like ""V*"""
End If
If (.[Firmen Filter] = 23) Then
' W
DoCmd.ApplyFilter "", "[Name] Like ""W*"""
End If
If (.[Firmen Filter] = 24) Then
' X
DoCmd.ApplyFilter "", "[Name] Like ""X*"""
End If
If (.[Firmen Filter] = 25) Then
' Y, Ý oder ÿ
DoCmd.ApplyFilter "", "[Name] Like ""[YÝÿ]*"""
End If
If (.[Firmen Filter] = 26) Then
' Z, Æ, Ø oder Å
DoCmd.ApplyFilter "", "[Name] Like ""[ZÆØÅ]*"""
End If
If (.[Firmen Filter] = 27) Then
' Zeigt alle Datensätze an.
DoCmd.ShowAllRecords
End If
End With
A_Z_Schaltflächen__Filter_Exit:
Exit Function
A_Z_Schaltflächen__Filter_Err:
MsgBox Error$
Resume A_Z_Schaltflächen__Filter_Exit
End Function
Ich weiss auch gar nicht, ob das ganze überhaupt so realisierbar ist....
Hi,
Zitat von: bambi1408 am Oktober 31, 2016, 20:22:08
Ich weiss auch gar nicht, ob das ganze überhaupt so realisierbar ist....
dazu müsste man wiederum wissen, was "das Ganze" für dich bedeutet.
Beschreibe dein Problem bzw. die ganze Thematik doch bitte noch etwas ausführlicher.
Guten Morgen
Kann mir mal eben jemand erklären wie ich ein Bild hier einfüge?
Dann ist das Ganze vielleicht etwas einfacher zu erklären.
Danke und sorry, hab das in der Hilfe nicht gefunden :-(
Gruss Nicole
Hallo,
ZitatKann mir mal eben jemand erklären wie ich ein Bild hier einfüge?
bei einer Antwort erscheint unten die Option:
+Anhänge und andere Optionen
Ist eigentlich nicht zu übersehen.
Hallo!
Von Access konvertierter Makrocode ist meist nicht besonders gut gestaltet.
Function A_Z_Schaltflächen__Filter()
On Error GoTo A_Z_Schaltflächen__Filter_Err
With CodeContextObject
' Verknüpft mit den Schaltflächen "A" bis "Z" und "Alle" im Formular "Adressen".
If (.[Firmen Filter] = 1) Then
' Filter für Firmennamen, die mit A, À, Á, Â, Ã, oder Ä beginnen.
DoCmd.ApplyFilter "", "[Name] Like ""[123456789AÀÁÂÃÄ]*"""
End If
If (.[Firmen Filter] = 2) Then
' B
DoCmd.ApplyFilter "", "[Name] Like ""B*"""
End If
If (.[Firmen Filter] = 3) Then
' C oder Ç
DoCmd.ApplyFilter "", "[Name] Like ""[CÇ]*"""
End If
...
If (.[Firmen Filter] = 27) Then
' Zeigt alle Datensätze an.
DoCmd.ShowAllRecords
End If
End With
A_Z_Schaltflächen__Filter_Exit:
Exit Function
A_Z_Schaltflächen__Filter_Err:
MsgBox Error$
Resume A_Z_Schaltflächen__Filter_Exit
End Function
Ich gehe davon aus, dass [Firmen Filter] eine Optionsgruppe ist. Damit kann es nur eine gültige If-Bedingung im obigen Code geben. Es werden aber immer alle If-Bedingungen geprüft.
Dieser Code ist meiner Meinung nach besser lesbar (nur Refactoring, ohne andere Verbesserungsmaßnahmen):
Ich gehe davon aus, dass diese Funktion im Codemodul des Formulars enthalten ist, in dem sich auch die Optionsgruppe befindet.
Private Function A_Z_Schaltflächen__Filter()
On Error GoTo A_Z_Schaltflächen__Filter_Err
dim NameFilterValue as string
select case Me.[Firmen Filter].Value
' Verknüpft mit den Schaltflächen "A" bis "Z" und "Alle" im Formular "Adressen".
Case 1 ' Filter für Firmennamen, die mit A, À, Á, Â, Ã, oder Ä beginnen.
NameFilterValue = "[123456789AÀÁÂÃÄ]"
Case 2 ' B
NameFilterValue = "B"
Case 3 ' C oder Ç
NameFilterValue = "[CÇ]"
...
Case 27 ' Zeigt alle Datensätze an.
NameFilterValue = vbnullstring
End Select
if len(NameFilterValue)>0 then
me.Filter = "[Name] Like '" & NameFilterValue & "*'"
else
Me.Filter = vbnullstring
end If
me.FilterOn = (Len(NameFilterValue)>0)
A_Z_Schaltflächen__Filter_Exit:
Exit Function
A_Z_Schaltflächen__Filter_Err:
MsgBox Error$
Resume A_Z_Schaltflächen__Filter_Exit
End Function
Anm.: Ich würde die Filter-Texte als Tag in den Buchstaben-Umschaltbuttons schreiben, dann würde der Filtercode noch viel kürzer werden. ;)
mfg
Josef
Hallo Josef
Vielen Dank für deine Antwort. Ich habe diesen Button wo man Dateien und Bilder anfügen kann schon gesehen, aber es gibt ja auch die Möglichkeit, direkt in dem Beitrag ein Image einzufügen, und das wüsste ich gerne wie ich das hier mache.
ZitatAnm.: Ich würde die Filter-Texte als Tag in den Buchstaben-Umschaltbuttons schreiben, dann würde der Filtercode noch viel kürzer werden.
Welchen Teil meinst du genau?
Sorry ich bin wirklich ein Newbie in Access und steh da im Moment wirklich wie der Ochs vorm Berg. Ich finde irgendwie den Anfang nicht. Ich habe zum Beispiel versucht, einen Bezug in der Umschalttaste und dem VBA herzustellen, aber entweder hat er Probleme das auszulesen, vielleicht eben weil er immer alle If-Bedingungen prüft, oder ich check das nicht.
Vielen Dank jetzt schon einmal für die Hilfe.
Gruss Nicole
Hallo,
Zitatdirekt in dem Beitrag ein Image einzufügen
das geht nur, wenn Du eine eigene Internetseite hast auf der Du das Bild darstellst. Der Link im Beitrag muss dann auf Deine Seite verweisen.
Zitatdas geht nur, wenn Du eine eigene Internetseite hast auf der Du das Bild darstellst. Der Link im Beitrag muss dann auf Deine Seite verweisen.
Ah ok Danke Klaus.
Dann werde ich mal versuchen, das Problem etwas genauer zu erklären und die Bilder in den Anhang stellen.
Wir haben ein sehr altes Buchhaltungsprogramm, das in Access2.0 geschrieben ist und wo man an die Tabellen heran kommt. Der Vorbesitzer der Firma hat dann mal vor etlichen Jahren eine Datenbank in AC2.0 gebaut, wo die Aufträge erfasst werden, die Artikel usw. Die Adressverwaltung wird auch in dieser DB gemacht, wobei allerdings auf die Tabelle aus dem Buchhaltungsprogramm zugegriffen wird. Aus diesem Grund können wir das ganze bisher auch nicht höher wie max. AC2007 konvertieren.
Im angehängten Bild PPS_1 sieht man, wie das ganze aussieht, wenn ich in einem Formular (Projekte) auf die Schaltfläche Adressen klicke. Eigentlich sollte er da direkt in dem unteren Feld die Adressen reinschreiben, beginnend mit der ersten. Das tut er aber nicht mehr, unter AC2.0 lief das noch.
Wenn ich jetzt auf "A" klicke, dann gibt er mir die Adressen schön aus, er gibt mir auch die Detailangaben in dem oberen Feld aus. Wenn ich auf eine andere Adresse klicke, dann aktualisiert er das auch schön oben. Drücke ich jetzt aber auf "B", bringt er mir oben sowie unten nur leere Felder. Wenn ich Glück habe, aktualisiert er mir das dann irgendwann nach ein bisschen rumzappen, manchmal aber auch nicht. Diesen Fehler hat er auch nicht nur bei "B", sondern bei einigen Buchstaben, allerdings nicht bei allen.
Ein weiteres Problem wo ich habe ist, das manche Firmen 2 oder 3 Adressen haben. Diese sind mit unterschiedlichen Kundennummern erfasst, also Firma A mit Firmensitz A hat die Kd. Nr. 1, Firma A mit Firmensitz B hat die Kd. Nr. 2. Klicke ich jetzt auf die Kd. Nr. 1, bekomme ich die Daten schön im oberen Feld aktualisiert, möchte ich jetzt allerdings das mir Kd. Nr. 2 angezeigt wird, funktioniert das nicht. Hat es allerding vorher auch schon nicht. Wenn ich den Firmennamen auch nur mit einem Buchstaben ändere, dann kann ich drauf zugreifen, von daher gehe ich davon aus, das die Abfrage (oder Filter) da nicht schön geschrieben ist??
ZitatIch gehe davon aus, dass [Firmen Filter] eine Optionsgruppe is
Ganz ehrlich, ich weiss es nicht. Ich habe nach diesem Namen gesucht, ihn aber in dem Eigenschaftenfenster bisher noch nicht entdecken können. Auch unter den Makros oder Modulen ist er nicht zu finden.
Gruss Nicole
Die Anhänge fehlen noch
Hallo nochmal
Ich hab jetzt hab ich mal den Code rausgefunden der im Hintergrund beim Klicken von den ABC Tasten noch abläuft. Vielleicht läuft ja auch da was falsch?
Function fktDatensatzklick3()
Dim DocName As String
Dim LinkCriteria As String
DocName = "Adressen"
LinkCriteria = "[NAME] = Forms![Adressen]![Feld159]"
DoCmd.OpenForm DocName, , , LinkCriteria
' 30.09.14 Alternativcode
' Forms(DocName).Filter = LinkCriteria
' Forms(DocName).FilterOn = True
' Forms(DocName).Requery
End Function
Mit dem Alternativcode habe ich es auch schon versucht, das funktioniert auch nicht.
Gruss Nicole
Hallo!
Der letzte Code von dir zeigt einen Ablauf, um ein Formular gefiltert zu öffnen.
Ich erkenne keinen Zusammenhang mit dem Filtern durch das Klicken auf die Buchstaben-Umschaltflächen.
Falls das Formular in dem diese Funktionen ausgeführt werden auch das Formular "Adressen" ist, gehört vermutlich einiges umgebaut, um einen wartbaren und einigermaßen sauberen Code zu erhalten.
Der bisher gezeigte Code beeindruckt mich nicht besonders. ;)
Ich kann dir in diesem Forum zeigen, wie man Filtern kann - es wird aber vermutlich nicht möglich sein, deine gesamte Anwendung zu verbessern.
Wenn du bereit bist, dich in VBA einzuarbeiten, kann im Forum sicher geholfen werden. Ansonsten ist das eher ein Auftrag an jemanden, der sich mit Access und VBA auskennt. Das kosten zwar dann etwas, wenn niemand innerhalb des Unternehmens einspringen kann, spart aber vermutlich trotzdem Geld. ;)
ZitatVielleicht läuft ja auch da was falsch?
DocName = "Adressen"
LinkCriteria = "[NAME] = Forms![Adressen]![Feld159]"
DoCmd.OpenForm DocName, , , LinkCriteria
Mit diesem Code wird das Formular "Adressen" geöffnet und dann mit dem Wert der im Feld159 im Formular Adressen steht gefiltert. (Falls es bereits geöffnet ist, wird nur der Filterausdruck angewendet.)
Erkennst du die Absicht hinter diesem Code? Ich erkenne sie nämlich nicht. Ich weiß aber auch nicht, welche Aufgabe das Feld159 hat. Aus dem Namen kann ich nicht viel ableiten. ;)
mfg
Josef
Hallo Josef
Vielen Dank für deine Antwort.
ZitatIch weiß aber auch nicht, was das Feld159 für eine Aufgabe hat.
Das Feld159 ist das Feld wo die ganzen Adressen drin stehen, also das Feld unterhalb von ABCDE.....
ZitatWenn du bereit bist, dich in VBA einzuarbeiten, kann im Forum sicher geholfen werden.
Natürlich bin ich bereit mich in VBA einzuarbeiten und bin über jede Hilfe dankbar. Die Firma hat leider momentan eine schlechte Auftragslage weshalb es nicht möglich ist, jemand externen damit zu beautragen.
Gruss Nicole
Hallo!
ZitatNatürlich bin ich bereit mich in VBA einzuarbeiten
Es könnte auch an der Bereitschaft der Vorgesetzten scheitern, dir dafür Zeit zu geben. ;)
ZitatDas Feld159 ist das Feld wo die ganzen Adressen drin stehen, ...
Kann es sein, dass mit den Buchstaben-Steuerelementen zuerst diese Adressliste gefiltert werden soll und dann nach Auswahl einer bestimmten Adresse in diesem Listenfeld (Feld159) im Formular der Datensatz angezeigt werden soll?
Aber erstmal zum Filtern eines gebundenes Formulars:
Dafür würde ich die Filter-Eigenschaft des Formulars verwenden.
Erstelle einmal zum Ausprobieren ein neues Formular als Endlosformular, binde das Formular an die Datenquelle mit den Adressdaten. Am besten erstellst du das in einer Kopie der Anwendung bzw. vielleicht überhaupt in einer kleinen Testanwendung, die du auch zum Download bereitstellen kannst. (Daten anonymisieren, nur die wichtigsten Tabellen und Formulare usw. bereitstellen)
Ich glaube nämlich, dass es einfacher ist, ein einem neuen Formular den Filter/Anzeige-Ablauf vereinfacht nachzubauen, um damit später die Probeme im eigentlich Formular zu finden, als sich gleich auf das vorhanden Formular zu stürzen.
Den Button bitte im Formular-Kopf oder Formular-Fuß einfügen und z. B. mit "cmdSetFilter" bezeichnen.
Teste dann z. B. als Reaktion auf einen Button-Click folgenden Code:
private sub cmdSetFilter_Click()
SetFormFilter
End Sub
private sub SetFormFilter()
Me.Filter = "[Name] like 'a*'"
Me.FilterOn = True
End Sub=> Du solltest nun nur noch Adressen sehen deren "Name" mit a beginnt.
Der Filterausdruck muss natürlich variabel im Code gestaltet werden können.
=> Umbau:
dim FilterString as String
dim FilterValue as String
FilterValue = "a" ' diese Anweisung könnte z. B. im zuvor gezeigten Select-Case-Block stehen
FilterString = "[Name] like '" & FilterValue & "*'"
Me.Filter = FilterString
Me.FilterOn = TrueAnm.: ich hoffe nicht, dass Name zum Problem wird. Wenn er mit [] einklammert ist, sollte Access das eigentlich als Datenfeld annehmen. (Sicher bin ich mir allerdings nicht - aber das sehen wir spätestens beim 1. Test.)
Damit du gleich mit mehreren Buchstaben testen kannst, bauen wir eine Inputbox in die Prozedur ein.
Anm.: Die Inputbox ist nur zum Testen, die muss später wieder weg und durch die Optionsgruppe mit den Buchstaben ersetzt werden.
Zum Testen ist sie aber gut geeignet, da der Code übersichtlich bleibt.
private sub cmdSetFilter_Click()
SetFormFilter
End Sub
private sub SetFormFilter()
dim FilterString as String
dim FilterValue as String
FilterValue = Inputbox("Bitte Anfangsbuchstaben eingeben")
FilterString = "[Name] like '" & FilterValue & "*'"
Me.Filter = FilterString
Me.FilterOn = True
End SubSollten bei diesem Code bei der Eingabe von a Datensätze angezeigt werden und bei der Eingabe von b keine Datensätze kommen, gibt es keine Datensätze die mit b beginnen. ;)
Sollte das jetzt zu einfach gewesen sein, bitte gleich melden bzw. den Code so erweitern, dass die Optionsgruppe verwendet wird.
Anm.: Es sollten mit Google & Co. einige Beispiele zu finden sein, wie ein Formular gefiltert werden kann. Für deinen konrketen Anwendungsfall gehe ich nämlich auf die Besonderheiten Filterwerte in einen SQL-Text zu konvertieren nicht ein. Das brauchen wir hier nur nebenbei und ich will nicht vom eignetlichen Problem zu weit ablenken.
mfg
Josef
Hallo,
ZitatAnm.: ich hoffe nicht, dass Name zum Problem wird. Wenn er mit [] einklammert ist, sollte Access das eigentlich als Datenfeld annehmen. (Sicher bin ich mir allerdings nicht - aber das sehen wir spätestens beim 1. Test.)
ich würde unter allen Umständen das Feld Name vermeiden. Aus eigener Erfahrung weis, dass das zu den unerklärlichsten Fehlern führt. Auch mit der Klammerung.
Nur als Anmerkung, zum Problem kann ich nichts beitragen.
Zitatich würde unter allen Umständen das Feld Name vermeiden.
Das auf jeden Fall!
Allerdings darf das dann Nicole im Formular korrigieren, da das vermutlich nicht nur beim Filtern vorkommen wird.
Daher dachte ich mir: probieren wir es einfach einmal auf gut Glück mit [Name] in einem Testformular aus. Dann haben wir wenigstens den Beweis, falls bereits [Name] beim Filtern Probleme macht. ;)
mfg
Josef
Vielen Dank Josef, das du mir helfen möchtest.
ZitatKann es sein, dass mit den Buchstaben-Steuerelementen zuerst diese Adressliste gefiltert werden soll und dann nach Auswahl einer bestimmten Adresse in diesem Listenfeld (Feld159) im Formular der Datensatz angezeigt werden soll?
Also das würde ich eigentlich mit Nein beantworten. Im Feld159 werden eigentlich alle Datensätze aufgeführt, die in meiner Tabelle Adressen enthalten sind. Durch die Umschalttasten erreiche ich lediglich, das er mir in der Tabelle an den Datensatz springt, der mit dem ausgewählten Buchstaben anfängt, also bei B springt er zu dem Anfang der Adressen, wo der Firmenname mit B anfängt. Er listet mir aber nicht nur alle Firmen mit B auf, sondern fängt einfach nur da an und im Alphabet geht es dann normal weiter.
Für die Anzeige eines bestimmten Datensatzes ist der Formularbereich oberhalb der Umschalttasten zuständig. Also wenn ich im Feld159 eine Adresse anklicke, aktualisiert er mir über den Umschalttasten die Einzelheiten zur Adresse. Wie er die Daten da aber genau übergibt ist mir noch nicht klar, das müsste doch eigentlich mit einer Abfrage passieren oder?
Ansonsten werde ich deine Testversuche mal ausführen und schauen wie weit ich komm. Zu einfach ist das nicht unbedingt, ich bin froh wenn wir vorne anfangen, damit ich es auch wirklich nachvollziehen kann :-)
Gruss Nicole
ZitatDurch die Umschalttasten erreiche ich lediglich, das er mir in der Tabelle an den Datensatz springt, der mit dem ausgewählten Buchstaben anfängt, also bei B springt er zu dem Anfang der Adressen, wo der Firmenname mit B anfängt.
Gemäß Code (DoCmd.ApplyFilter) sollte aber nicht zum Datensatz gesprungen werden sondern nur noch die Datensätze angezeigt werden, die mit B beginnen.
mfg
Josef
Josef ich habe jetzt dein Beispiel nachgebaut und alles funktioniert einwandfrei -:)
Jetzt habe ich eine Verständnisfrage: [Name] Bezieht sich das auf das Feld in der Tabelle?
ZitatGemäß Code (DoCmd.ApplyFilter) sollte aber nicht zum Datensatz gesprungen werden sondern nur noch die Datensätze angezeigt werden, die mit B beginnen.
Das scheint wohl nicht zu funktionieren :-(
Zitat& FilterValue & "*'"
Das * ist einfach ein Platzhalter oder?
Kein Platzhalter sondern einfach das er nachfolgend alle Zeichen akzeptiert.
Habs auch schon ausprobiert...also wenn ich be eingebe, bringt er mir alle die mit be anfangen...klappt wirklich gut
ZitatZitatGemäß Code (DoCmd.ApplyFilter) sollte aber nicht zum Datensatz gesprungen werden sondern nur noch die Datensätze angezeigt werden, die mit B beginnen.
Das scheint wohl nicht zu funktionieren :-(
.. oder es wird etwas anderes ausgeführt.
Geh einmal in den Entwurf des Formulars, markiere die Optionsgruppe der Buttons und schau im Eigenschaftsfenster unter Ereignisse nach, was dort ausgeführt wird.
Eventuell auch bei den einzelnen Buchstaben-Umschaltflächen nachsehen, ob dort auf Ereignisse reagiert wird.
Weiter mit dem Test-Formular:
Kopiere bitte die Optionsgruppe mit den Buchstaben vom "Original"-Formular in dein Test-Formular und benenne die Optionsgruppe "ogNameFilterValue".
Im Original müsste diese Optionsgruppe "Firmen Filter" heißen.
Anschließend fügst du in das Testformular folgenden Code ein:
private function GetNameFilterValue() as String
dim NameFilterValue as string
With Me.ogNameFilterValue
select case .Value
Case 1 ' Filter für Firmennamen, die mit A, À, Á, Â, Ã, oder Ä beginnen.
NameFilterValue = "[123456789AÀÁÂÃÄ]"
Case 3 ' C oder Ç
NameFilterValue = "[CÇ]"
' ... hier später die restlichen Buchstaben auflisten, die für mehr als ein Zeichen stehen
Case 27 ' Zeigt alle Datensätze an.
NameFilterValue = vbnullstring
Case Else
NameFilterValue = Chr(64 + .Value)
End Select
End With
GetNameFilterValue = NameFilterValue
end functionDie Prozedur SetFormFilter änderst du auf:
private sub SetFormFilter()
dim FilterString as String
dim FilterValue as String
FilterValue = GetNameFilterValue()
FilterString = "[Name] like '" & FilterValue & "*'"
Me.Filter = FilterString
Me.FilterOn = True
End Submfg
Josef
ZitatGeh einmal in den Entwurf des Formulars, markiere die Optionsgruppe der Buttons und schau im Eigenschaftsfenster unter Ereignisse nach, was dort ausgeführt wird.
Eventuell auch bei den einzelnen Buchstaben-Umschaltflächen nachsehen, ob dort auf Ereignisse reagiert wird.
Das Problem ist, das er mir für die "Optionsgruppe" ABC.... keine Optionsgruppe anzeigt. Wenn ich aber alle Umschalter markiere, kopiere und dann in das Testformular einfüge, dann erhalte ich eine Optionsgruppe wo ich auch dann den Namen "Firmen Filter" habe. Schon seltsam. So kann ich dir auch nicht sagen, welches Ereignis er ausführt, da ich bei den Eigenschaften im Original keine Option "beim Klick" habe.
Im Original bekomme ich auf der Eigenschaftenseite angezeigt: Auswahltyp: Mehrfachauswahl, bei dem reinkopierten in das Testformular wird angezeigt: Auswahltyp: Optionsgruppe.
Weisst du was da falsch läuft?
Hallo Josef
Habe jetzt mal dasFormular nach deinen Angaben geändert. Allerdings bringt er mir jetzt bei Klick die Fehlermeldung, das er nicht auf den Filter A-Z Schaltflächen nicht zugreifen kann, also auf das Makro. Muss ich da jetzt noch was ändern bei den einzelnen Umschaltern? Da ist ja jeweils der Filter angegeben und den hat er ja mitkopiert.
Hallo!
Versuche einmal im Original über das Eigenschaftsfenster die Optionsgruppe "Firmen Filter" auszuwählen. Der Name sollte im Dropdown zur Auswahl stehen.
ZitatAllerdings bringt er mir jetzt bei Klick die Fehlermeldung, das er nicht auf den Filter A-Z Schaltflächen nicht zugreifen kann, also auf das Makro.
Mit Makro meinst du die VBA-Funktion, oder?
Diesen Eintrag im Testformular bitte entfernen. Steht der Funktionsaufruf bei AfterUpdate?
Den Aufruf der Funktion als Eigenschaftseintrag ersetzen wir durch eine Ereignisbehandlung.
Private Sub ogNameFilterValue_AfterUpdate()
SetFormFilter
End Sub
ZitatVersuche einmal im Original über das Eigenschaftsfenster die Optionsgruppe "Firmen Filter" auszuwählen. Der Name sollte im Dropdown zur Auswahl stehen.
Ok das hat geklappt. Dann zeigt er mir folgendes bei Klick an:
Private Sub Firmen_Filter_Click()
DoCmd.DoMenuItem A_FORMBAR, A_RECORDSMENU, A_REFRESH, , A_MENU_VER20
End SubDas steht bei "Vor Aktualisierung"
Private Sub Firmen_Filter_BeforeUpdate(Cancel As Integer)
End Subund bei "Nach Aktualisierung" ist der Filtername vom Makro eingesetzt.
ZitatMit Makro meinst du die VBA-Funktion, oder?
Ich denke das er immer noch auf das Makro zugreifen will und mir deswegen diese Fehlermeldung bringt. Im VBA-Code habe ich Filternamen "A-Z Schaltflächen" ja nirgendwo drin. Wegen dem anderen schau ich gleich. Ich schaue auch mal, ob er bei dem Testformular in der Optionsgruppe irgendwo den Filter noch drin hat.
Muss ich die einzelnen Reiter noch in Case 1, Case2 usw umbenennen oder bezieht er das automatisch?
Es funktioniert erst mal alles super bis hierher.
Reiter? Ist das ein Registersteuerelement? In der Optionsgruppe sollten das eher Umschaltflächen sein.
Aber egal was es ist - umbenennen ist nicht erforderlich. ;)
select-case bitte in der Hilfe nachlesen.
"Case" ist ein VBA-Statement.
1 - n sind die Werte, die in den Umschaltflächen eingestellt sind.
With Me.ogNameFilterValue
select case .Value
Case 1 ' Filter für Firmennamen, die mit A, À, Á, Â, Ã, oder Ä beginnen.
NameFilterValue = "[123456789AÀÁÂÃÄ]"
Case 3 ' C oder Ç
NameFilterValue = "[CÇ]"
Obiges könntes mit If- und ElseIf auch so schreiben:
With Me.ogNameFilterValue
IF .Value = 1 then ' Filter für Firmennamen, die mit A, À, Á, Â, Ã, oder Ä beginnen.
NameFilterValue = "[123456789AÀÁÂÃÄ]"
Elseif .Value = 3 then ' C oder Ç
NameFilterValue = "[CÇ]"
Das finde ich zwar unübersichtlicher, aber vielleicht hilfts für Verstehen der Select-Case-Anweisung.
mfg
Josef
Ok das hab ich jetzt soweit verstanden. Wie mache ich jetzt weiter oder kann ich das jetzt einfach so wie es ist in mein Original einbauen? Und es sollen mir ja im oberen Feld noch die Einzelheiten zur Adresse aktualisiert werden. Muss ich da jetzt was anpassen? Oder sollte das so funktionieren?
Ich hab jetzt mal versucht, das ganze in mein Original einzubauen. Debuggt hab ich alles und er bringt keine Fehlermeldung mehr. Wenn ich die Optionsschalter durchklicke, aktualisiert er mir zwar oberhalb der Op.Schalter immer die erste Adresse vom betreffenden Buchstaben, im unteren ungebunden Feld 159 fängt er allerdings bei D an und das ändert sich auch durch das Umschalten nicht. Kannst du mir sagen, was ich da jetzt einbauen muss, damit er das macht?
Danke schon mal.
Gruss Nicole
ZitatZitatKann es sein, dass mit den Buchstaben-Steuerelementen zuerst diese Adressliste gefiltert werden soll und dann nach Auswahl einer bestimmten Adresse in diesem Listenfeld (Feld159) im Formular der Datensatz angezeigt werden soll?
Also das würde ich eigentlich mit Nein beantworten. Im Feld159 werden eigentlich alle Datensätze aufgeführt, die in meiner Tabelle Adressen enthalten sind.
Zitatim unteren ungebunden Feld 159 fängt er allerdings bei D an und das ändert sich auch durch das Umschalten nicht
Also wir doch gefiltert? ;)
Wie sieht die SQL-Anweisung (RowSource) der Listbox (Feld159) aus?
Vielleicht bereits
Me.Feld159.Requeryaus, um die Listbox zu filtern, falls die SQL-Anweisung entsprechend gestaltet ist.
mfg
Josef
ZitatAlso wir doch gefiltert? ;)
Ja also gefiltert wird schon, aber es wird nicht nur ein einziger Datensatz angezeigt sondern er springt dann eigentlich nur zu dem ersten Datensatz mit dem Buchstaben. Aber alle anderen Buchstaben hat er darunter auch weiter aufgelistet.
Private Sub Feld159_GotFocus()
Me.Requery
End SubDas habe ich mal versucht gehabt um das Listenfeld zu Aktualisieren, hatte aber im Original nichts gebracht. Das ist unter "Bei Focuserhalt".
ZitatWie sieht die SQL-Anweisung (RowSource) der Listbox (Feld159) aus?
Muss ich das anders einbauen?
Function fktDatensatzklick3()
Dim DocName As String
Dim LinkCriteria As String
DocName = "Adressen"
LinkCriteria = "[NAME] = Forms![Adressen]![Feld159]"
DoCmd.OpenForm DocName, , , LinkCriteria
End FunctionDas ist der Code der noch in dem Feld 159 definiert ist, unter "Beim Klicken".
Guten Morgen
Ich habe mir die Datenherkunft für das Feld 159 nochmal genauer angeschaut. Die Herkunft ist aus einer Abfrage, die sich auf die Adresstabelle bezieht. Allerdings steht auch in der Herkunftsangabe folgendes :
From [Adressensort] WHERE (([Adressensort].[NAME] >= [NAMEF])) OR ((Adressensort.[SUCH_INDEX]=[Feld185]));
Adressensort ist die Abfrage. Aber NAMEF ist darunter nicht aufgeführt, also nehme ich mal an es ist ein Filter? Er muss sich ja irgendwie auf meine Umschalter darin beziehen. Kann ich das ganze jetzt mit einem VBA-Code bewerkstelligen?
Danke und Gruss
Nicole
Hallo!
NAMEF wird ein Steuerelement im Formular sein. Vermutlich mit einer Funktion im Steuerelementinhalt, die den in der Optionsgruppe ausgewählten Buchstaben zurückgibt.
ZitatPrivate Sub Feld159_GotFocus()
Me.Requery
End Sub
Mit Me.Requery aktualisierst du die Formulardaten. Wenn du die Listbox aktualisieren willst, musst du Me.Feld159.Requery schreiben.
GotFocus der Listbox als Einstieg, um die Listbox zu akutalisieren, finde ich unpassend.
Besser du aktualisierst die Listbox nach Änderung der Optionsgruppe.
mfg
Josef
Also ich bin schon mal einen (kleinen) Schritt weiter. Habs jetzt hinbekommen das er mir in dem ungebundenen Listenfeld sortiert...ABER er sortiert mir nicht richtig. Wenn ich auf A geh fängt er z.b. bei den Namen mit C an, die Namen mit V bringt er mir wenn ich auf U gehe usw., vielleicht habe ich die Requery einfach an der falschen Stelle oder ich muss die Filter neu einbinden? Wie kann ich die DB hier hochladen? Die ist 3 MB, obwohl sie nur eine Tabelle, eine Abfrage und ein Formular enthält.
Danke und Gruss
Nicole
Zitat.. das er mir in dem ungebundenen Listenfeld sortiert...
Du meinst "filtert" und nicht "sortiert", oder?
ZitatWie kann ich die DB hier hochladen? Die ist 3 MB, obwohl sie nur eine Tabelle, eine Abfrage und ein Formular enthält.
Komprimieren und dann zippen. Sollte das nicht reichen, könntest du noch mit einem /decompile (
http://www.donkarl.com?FAQ1.23) gefolgt von komprimieren die Größe verkleinern.
Oder du erstellst eine leere Datei und importierst alles aus der alten Daten. Das sollte dann wie /decompile + komrimieren wirken.
mfg
Josef
Hallo,
eine Frage sei mir sicher gestattet, hat das alles noch mit dem ursprünglichen Thema zu tun?
Falls nicht, bitte bei weiteren/anderen Fragen ein neues Thema beginnen, danke.
Gruß Andreas
Hallo Josef
klar meinte ich gefiltert und nicht sortiert...sorry :)
Ich lade mal eben meine aktuelle DB hoch und im VBA-Code sind auch ein paar Sachen drin, die ich versucht habe, aber haben nicht funktioniert. Ich habe sie drin stehen lassen, einfach auskommentiert.
Was ich gemerkt habe ist folgendes: beim aktualisieren des Listenfeldes aktualisisert er mir eigentlich immer die Adressen, wo ich als letztes auf dem Umschalter war. Also wenn ich z.b. auf B gehe und danach auf C, filtert er von B an, wenn ich dann auf D gehe von C an.
Was er mir nur teilweise macht, ist das er den ersten Eintrag markiert. Das funktioniert mal und mal nicht.
Gruss Nicole
Hallo!
Den Zweck der Listbox verstehen ich nicht.
Steht in der Listbox im Originalformular der Name in der gebundenen Spalte?
Dann könnte ich mir zumindest vorstellen, dass man mit Klick auf die Listbox zum jeweiligen Datensatz springt. (Wobei das mit gesetztem Filter schwierig wird, wenn die Auswahl nicht in den gefilterten DS enthalten ist.)
Private Sub Liste9_AfterUpdate()
GotoNameRecord Me.Liste9.Value
End Sub
Private Sub GotoNameRecord(ByVal NameToFind As String)
With Me.RecordsetClone
.FindFirst "[NAME] = '" & Replace(NameToFind, "'", "''") & "'"
If Not .NoMatch Then
Me.Bookmark = .Bookmark
End If
End With
End Sub
Die Aktualisierung der Listbox könntest du als Reaktion auf Form.Current umsetzen.
Private Sub Form_Current()
Me.Liste9.Requery
End Sub
oder beim Filtern des Formulars:
Private Sub SetFormFilter()
...
Me.Filter = FilterString
Me.FilterOn = True
Me.Liste9.Requery
End Sub
Mir kommt die Bedienung des Formulars etwas eigenartig vor.
Klickt man auf einen Filterbutton, werden die Datensätze nach diesem Anfangszeichen gefiltert. Die Listbox enthält aber auch Namen, die darüber hinaus gehen.
Klickt man dann auf einen Eintrag diese Liste soll was passieren?
Für mich wäre es logischer, dass mittels der Buttons das Formular und die Listbox gefiltert werden und dann mit Auswahl eines Datensatzes in der Listbox zu diesem DS gesprungen wird.
Oder es wird mit den Buttons die Listbox gefiltert und die Auswahl in der Listbox zeigt dann diesen Datensatz an.
Was macht der Code
' ersten Datensatz der Liste markieren ...
Me!Liste9.Selected(0) = True
in der Prozedur "GetNameFilterValue". Welchen Anteil hat dieser Code um den Filterwert zu ermitteln?
Falls er keinen hat, gehört er dort nicht rein. ;)
(Single-Responsibility-Prinzip (https://de.wikipedia.org/wiki/Single-Responsibility-Prinzip))
BTW: in der Tabelle fehlt ein Primärschlüssel.
mfg
Josef
Guten Morgen
ZitatFür mich wäre es logischer, dass mittels der Buttons das Formular und die Listbox gefiltert werden und dann mit Auswahl eines Datensatzes in der Listbox zu diesem DS gesprungen wird.
Also ich denke das ist in etwa so wie im Original oder?
Also das Formular hat ja im Original im oberen Bereich die Felder, wo die Daten des aktuell ausgewählten Datensatzes ausgegeben werden. Dann kommt die Optionsgruppe und darunter das ungebundene Listenfeld. In diesem Listenfeld sollen die Datensätze gefiltert angezeigt werden, je nach dem welchen Umschalter man halt gedrückt hat. Im Original kann man dann im Listenfeld einen Datensatz markieren und der wird dann auch in die Felder oberhalb der Optionsgruppe ausgegeben.
Ich hatte jetzt einfach mal ein bisschen im Internet wegen der Aktualisierung des Listenfeldes mit Optionsgruppe gesucht und dann ein paar Sachen ausprobiert, die aber nicht wirklich zum Erfolg geführt haben. Hab die Codes davon aber drin stehen lassen und einfach auskommentiert, damit ich noch weiss was ich probiert habe.
ZitatWas macht der Code
' ersten Datensatz der Liste markieren ...
Me!Liste9.Selected(0) = True
Der soll mir eigentlich nach Betätigung eines Umschalters immer den ersten Datensatz der nun gefiltert in dem Listenfeld steht markieren, damit dieser schon oben aktualisiert wird. Muss ich das an eine andere Stelle setzen?
ZitatBTW: in der Tabelle fehlt ein Primärschlüssel.
In der Originaltabelle übernimmt die Kd.Nr. den Primärschlüssel.
Gruss Nicole
ZitatIn diesem Listenfeld sollen die Datensätze gefiltert angezeigt werden, je nach dem welchen Umschalter man halt gedrückt hat.
Das Listenfeld wird aber nicht nach den Buchstaben gefiltert, sondern nach dem aktuell im Formular angezeigten Namen.
ZitatIm Original kann man dann im Listenfeld einen Datensatz markieren und der wird dann auch in die Felder oberhalb der Optionsgruppe ausgegeben.
Wird auf genau diesen Datensatz gefiltert oder wird zum Datensatz gesprungen?
ZitatZitatWas macht der Code
' ersten Datensatz der Liste markieren ...
Me!Liste9.Selected(0) = True
Der soll mir eigentlich nach Betätigung eines Umschalters immer den ersten Datensatz der nun gefiltert in dem Listenfeld steht markieren, damit dieser schon oben aktualisiert wird. Muss ich das an eine andere Stelle setzen?
Bei meiner Frage ging es vor allem um: Was macht der Code in der Prozedur "GetNameFilterValue".
Stell dir vor du benötigst an anderer Stelle im Formular auch den Filterwert. Dann verwendest du die Funktion GetNameFilterValue, da diese dem Namen nach genau diesen liefert. Anschließend wunderst du dich, warum in der Listbox der markierte Eintrag geändert wurde.
ZitatIn der Originaltabelle übernimmt die Kd.Nr. den Primärschlüssel.
Dann solltest du auf diesen PK die Datensatzauswahl auslegen.
=> Kundennummer in die Listbox anfügen (sichtbar oder unsichtbar ist egal) und nach der Auswahl eines Eintrags in der Listbox zum Datensatz mit dieser Kundennummer springen.
BTW: Wären die anzuzeigenden Datenfelder in einem Unterformular, müsstest du nicht einmal Code dafür erstellen, da dann eine Verknüpfung vom Unterformular zum Listenfeld ausreichen würde.
Diese Variante behandlen wir in diesem Thread bitte nicht näher, wir schauen nur, wie wir die konvertierten Makros zum laufen bringen. ;)
.. also Refaktoring inkl. Korrektur ohne das Ergebnis bzw. die Schnittstellen zu ändern.
mfg
Josef
Ich hab das Ganze jetzt mal ins Original eingebaut und soweit funktioniert es. Was er mir allerdings nicht macht, das er mir oberhalb der Optionsgruppe die Einzelheiten zu der angewählten Adresse ausgibt.
Hier mal der Code der denke ich diese Aktion eigentlich betreffen sollte:
Private Sub NAMEF_AfterUpdate()
DoCmd.DoMenuItem A_FORMBAR, A_RECORDSMENU, A_REFRESH, , A_MENU_VER20
End Sub
Private Sub NAMEF_Change()
On Error GoTo Err_NAMEF_Change
DoCmd.DoMenuItem A_FORMBAR, A_RECORDSMENU, A_REFRESH, , A_MENU_VER20
Exit_NAMEF_Change:
Exit Sub
Err_NAMEF_Change:
MsgBox Error$
Resume Exit_NAMEF_Change
End Sub
Ist der Code falsch oder passt das jetzt mit dem Filter nicht?
Private Sub Feld159_GotFocus()
Me.Requery
End Sub
Das kann ich im Original nicht rausnehmen, obwohl es in der Testumgebung nicht nötig ist. Aber im Original aktualisiert er mir dann die Liste wieder nicht.
Gruss Nicole
ZitatAber im Original aktualisiert er mir dann die Liste wieder nicht.
Dann musst du im Original selbst für die Aktualisierung sorgen. ;)
Eine Liste aktualisiert man mit Me.Listboxname.Requery und nicht durch das Aktualisieren der Datenquelle des Formulars. Wie und wo du diese Aktualisierung für dein Szenario einbauen kannst, zeigte ich dir schon.
Im Original ist für meinen Geschmack ziemlich viel "Pfusch"-Code enthalten. Vor allem diese DoMenuItem-Anweisungen solltest du ersetzen.
DoCmd.DoMenuItem A_FORMBAR, A_RECORDSMENU, [b]A_REFRESH[/b], , A_MENU_VER20steht vermutlich für
Me.RefreshDafür musst du dich aber selbst etwas in VBA und das Access-Objektmodell einarbeiten. Im Forum ist mir das zu viel Aufwand.
Ich helfe gerne beim Konzept und bei Problemen einer Code-Verbesserung, aber umsetzen will ich sie nicht im Forum.
mfg
Josef
Vielen Dank für Deine Antwort.
Kannst Du mir vielleicht noch sagen, wie ich es jetzt in meiner Testumgebung hinbekomme, das wenn ich jetzt einen Datensatz in der Liste anwähle, er mir den oben reinschreibt? Also oberhalb der Optionsgruppe, in die Felder?
ZitatEine Liste aktualisiert man mit Me.Listboxname.Requery und nicht durch das Aktualisieren der Datenquelle des Formulars. Wie und wo du diese Aktualisierung für dein Szenario einbauen kannst, zeigte ich dir schon.
Das hatte ich im Original so versucht, aber wenn ich das so wie in der Testumgebung nur bei dem
Sub SetFormFilter() unterbringe, aktualisiert er mir sie halt nicht.
Gruss Nicole
Dein Listenfeld hängt vom im Formular angezeigten Datensatz ab.
Wenn du die Abhängigkeit auf die Optionsgruppe verlagerst, kannst du das Ändern der Optionsgruppe verwenden, um das Listenfeld zu aktualisieren.
Im gezeigten Testformular funktioniert das nur so:
1. Buchstaben in Optionsgruppe wählen
2. Formular mit Optionsgruppe filter => angezeigter Datensatz ändert sich
3. Listenfeld aktualisieren (da nun ein neuer Wert im Textfeld "NameF" steht.)
mfg
Josef
Ok ich danke dir ganz herzlich für deine ausführliche Hilfe. Ich hoffe ich bekomme es jetzt so hin. Das ganze scheint etwas instabil zu laufen, da es mal klappt und mal nicht. Bei mir Zuhause klappt es mit dem Original meistens sehr gut, im Geschäft dagegen meistens eher nicht. Ist halt da ein anderes BS und das liegt dann vielleicht wirklich an dem ganzen Müll der im VBA drin steht.
Vielen Dank noch einmal und Gruss
Nicole
Hallo Josef,
Vor allem diese DoMenuItem-Anweisungen solltest du ersetzen.
Man sieht es ja Gottseidank nicht mehr so häufig; - aber gibt es irgendeine Liste,
die man heranziehen könnte um diese Anweisungen übersetzen zu können.
Da könne man eine Hilfe dazu präzisieren.
gruss ekkehard
Hallo!
Ich kenne keine Liste. Hab aber auch noch nie danach gesucht. ;-)
mfg
Josef
Hi,
Zitat von: Beaker s.a. am November 04, 2016, 16:25:35
Hallo Josef,
Vor allem diese DoMenuItem-Anweisungen solltest du ersetzen.
Man sieht es ja Gottseidank nicht mehr so häufig; - aber gibt es irgendeine Liste,
die man heranziehen könnte um diese Anweisungen übersetzen zu können.
meinst Du etwas wie: http://access.mvps.org/access/RunCommand/domenuitem.htm
Harald
Hallo Harald,
Ja, genau, - danke.
gruss ekkehard