Neuigkeiten:

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

Mobiles Hauptmenü

Makro, WENN dann ÖFFNEN Formular

Begonnen von Benutzer0815, September 09, 2013, 15:30:45

⏪ vorheriges - nächstes ⏩

Benutzer0815

Hallo Community,

anbei ein Screenshot von einem Makro.
Ich habe eine Wenn Bedingung die auf ein Textfeld 361 geht und abfragt ob etwas drin steht --> Wenn nicht "Fehler" --> Wenn ja, dann sollte das Formular "Zwischentabelle" öffnen. Das macht es aber nicht. Weis jemand wieso das so ist?

Vielen Dank schon mal im Voraus.

MfG Sebastian Deck

[Anhang gelöscht durch Administrator]

bahasu

Hi,

die Abfrage, ob ein .Text = wahr ist, erscheint mir fehlerhaft (aber vielleicht ist das bei Makro so  ;D).

Normalerweise würde ich abfragen:
...Text > ""
oder
not isnull(...Text).

Da ich nur selten mit Makros arbeite, kann ich leider keine ausgetestete Antwort geben.  :-[

Harald
Servus

Benutzer0815

Hallo,

gibt es da eine alternative Lösung? Kann ich ein Makro und einen VBA Code zusammen benutzen?

Wo stehen denn die ganzen Befehle dafür?

MfG Sebastian

DF6GL

#3
Hallo,

hast Du die Bedingung zunächst mal angepasst und getestet?


Der Wenn-Ausdruck sollte so lauten:

Wenn  IstNull([Text361])    Dann


Was meinst Du mit "zusammen benutzen"?


Ein Makro ist ein interner "Programmablauf", der mit den auswählbaren "Makro-Befehlen" gesteuert werden kann.
Ein VBA-Code ist z. B. eine Prozedur, die mit Hilfe der VBA-Programmiersprache (in der VBA-Entwicklungsumgebung, oder auch VBA-Editor genannt)  erstellt und mit Hilfe des VBA-Interpreters (bzw. "Compiler") in eine ausführbare Prozedur umgesetzt wird.


Aus einem Makro heraus kann VBA-Code (Prozeduren)   oder aus VBA heraus Makros aufgerufen werden.  Insgesamt ist das aber eher Eintopf mit Püree ...

Die ganzen (grundlegenden) VBA-"Befehle" stehen in Deinem Kopf, nachdem Du Dich mit der VBA-Programmierung auseinandergesetzt hast.   ;)
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

Benutzer0815

Hallo,

also ich habe den Befehl wie folgt eingegeben: (siehe Anhang)

Aber irgendwie reagiert die Schaltfläche überhaupt nicht auf diese Bedingung. An was könnte das liegen?

Vielen Dank schon mal im Voraus.

MfG Sebastian Deck

[Anhang gelöscht durch Administrator]

bahasu

Hi,

Makros werden ungern genutzt, da sie zu wenig Möglichkeiten bieten.
Daher anbei ein VBA-Beispiel.
Dort gibt es das Formular1.
- Ist das obere Feld leer, wird nach Anklicken vom Button kein Formular aufgerufen.
- ist das obere Feld gefüllt, wird ein Formular aufgerufen.

Aufruf wird geregelt mit:
   If Nz(Me.Text361, "") > "" Then DoCmd.OpenForm "ABC", acNormal

Ist es das, was Du suchst?
Harald

[Anhang gelöscht durch Administrator]
Servus

Benutzer0815

Super, Danke

Wie sage ich den Formular nun das es einen neuen Datensatz anlegen soll? Also in dem Formular wo "Datensatz speichern" steht.

Im Makro heißt dies: gehezu, Datensatz, neuer... und fertig. Wie kann ich das in VBA schreiben?
Vielen Dank schon mal im Voraus.

Gruß Sebastian

bahasu

Hi,

Zitat von: Benutzer0815 am September 17, 2013, 14:02:26
Wie sage ich den Formular nun das es einen neuen Datensatz anlegen soll?

DoCmd.OpenForm "DeinFormular , , , , acFormAdd

Wenn Du in der VBA-Umgebung bist und den ersten Teil der obigen Anweisung eingetragen hast, erscheint ein Hinweis, der je nach eingegebenem Komma verschiedene Details anzeigt.
Mit "acFormAdd" wird ein leeres Formular geöffnet zum Eingeben von neuen Daten.
Alternativ ist auch die Eigenschaft im Formular beim Reiter "Daten" "Daten eingeben = Ja" nutzbar.

Harald
Servus

Benutzer0815

irgendwo habe ich leider noch einen Schreibfehler drin.....

DoCmd.OpenForm "[frmLMR_Bestand_Datum], , , , acFormAdd"


Was ist daran falsch? Er unterstreicht es mir immer gelb...

bahasu

hi,

Unter der Annahme, dass der Name des Formulars in der Variable steht:
DoCmd.OpenForm [frmLMR_Bestand_Datum], , , , acFormAdd


Unter der Annahme, dass der Name des Formulars lautet: frm... :
DoCmd.OpenForm "frmLMR_Bestand_Datum", , , , acFormAdd

Harald
Servus

Benutzer0815

hm irgendwie funktioniert das nicht so wie ich es möchte....

Private Sub Befehl19_Click()
DoCmd.OpenForm "frmLMR_Bestand_Datum", , , , acFormAdd

If Nz(Me.Text361, "") > "" Then DoCmd.OpenForm "frmZwischentabelle", acNormal
End Sub

So stehts grad da... Wenn ich nun die Schaltfläche betätige wird der im Formular "frmLMR_Bestand_Datum" bestehende Datensatz NICHT in die Tabelle gespeichert. An was liegt das?

Brauche ich noch diesen Befehl? DoCmd.RunCommand acCmdRecordsGoToNew

Vielen Dank schon mal im Voraus

MfG Sebastian


bahasu

Hi,

mir ist unklar, wie bei Dir der Ablauf ist: Habe ich das wie folgt zu verstehen?
Formular xyz ist offen.
Dort gibt es ein Feld  Me.Text361.
Wenn dessen Inhalt > "" ist, soll ein neues Formular geöffnet werden und der dort neu eingetragene Datensatz in ein weiteres Formular überführt werden??????????????

Harald
Servus

Benutzer0815

Hi,

es läuft so... Ich habe ein Formular in das ich verschiedene Dinge eintragen kann, darunter auch das Textfeld361.
Ganz unten im Formular, das frmLMR_Bestand_Datum heisst, ist eine Schaltfläche "Datensatz speichern"

Wenn ich im Textfeld361 nichts eintrage und auf die Schaltfläche drücke soll eine Fehlermeldung kommen und auch die oben eingetragenen Daten sollen einfach stehen bleiben.

Wenn ich im Textfeld361 etwas eintrage und auf die Schaltfläche klicke, dann sollen die eingetragenen Daten abgespeichert und ein weiteres Formular (frmZwischentabelle) geöffnet werden.



bahasu

Hi,

also gehe ich davon aus:
Du hast ein Start-Formular, das das Formular "frmZwischentabelle" öffnet. Dort gehört die Zeile:
DoCmd.OpenForm "frmLMR_Bestand_Datum", , , , acFormAdd
hin.

In diesem Formular gibt es einen Button, zu dem der folgende Code gehört:

Private Sub Befehl19_Click()                                        ' "Datensatz speichern"
    'DoCmd.OpenForm "frmLMR_Bestand_Datum", , , , acFormAdd
    DoCmd.RunCommand acCmdSaveRecord                                ' Eingaben speichern
   
    If Nz(Me.Text361, "") > "" Then
        DoCmd.OpenForm "frmZwischentabelle", acNormal
    Else
        MsgBox "Hier kommt eine Fehlermeldung"
    End If
End Sub



Ob die Runcommand-Anweisung besser im ersten if-Teil aufgehoben ist, mußt Du bitte entscheiden, da Du die Abläufe/Ziele besser kennst.

Anschaulicher werden die Programmzeilen, wenn Du sprechende Namen für die Buttons und Steuerelemente verwendest. Nach kurzer Zeit wird es ansonsten schwer, sich vorzustellen, was "Befehl19" machen soll.

Harald
Servus

bahasu

Hi,

beim Umgang mit einer relationalen Datenbank sei noch die Frage erlaubt:
Wie steht es mit Deinen Beziehungen?  { ;D nicht die persönlichen  ;D}

Der Hintergrund der Frage ist, dass womöglich der Umgang mit access zu vereinfachen ist, wenn es einen Zusammenhang zwischen dem Formularen "frmLMR_Bestand_Datum" und "rmZwischentabelle"  geben soll. Dann könnte das bislang ,,aufwändig" geöffnete Formular als Unterformular vorhanden sein. Damit ersparst Du Dir das spezielle Öffnen und womöglich das Versorgen mit id's.
Nebenbei bemerkt: Ein Unterformular kann sichtbar bzw. unsichtbar gemacht werden.

Harald
Servus