Access-o-Mania

Access-Forum (Deutsch/German) => Access Programmierung => Thema gestartet von: smily68 am März 14, 2011, 21:41:26

Titel: Feldlinhalte von Formular nach einer Aktion löschen
Beitrag von: smily68 am März 14, 2011, 21:41:26
Hallo

Ich stehe vor folgendem Problem: Ich habe ein Formular in welchem ich verschiedene Kriterien für eine Abfrage/Bericht erfasse, wie Datum, Sortierung, Artikel, KontoNr usw. Nun möchte ich, dass gewisse Felder nach dem ich den Bericht mit einem Button gestartet habe gelöscht werden, jedoch nicht alle.

Wie sieht der VB Code dafür aus?

Gruss Daniel
Titel: Re: Feldlinhalte von Formular nach einer Aktion löschen
Beitrag von: DF6GL am März 14, 2011, 22:41:56
Hallo,


Du meinst die Frage schon ernst..?



Sub btnAktion_click()

Docmd.Openreport .............

Me!Sortierung=Null
Me!KontoNr=Null

End Sub
Titel: Re: Feldlinhalte von Formular nach einer Aktion löschen
Beitrag von: database am März 15, 2011, 16:07:44
Hallo,

;) ;D

ZitatDu meinst die Frage schon ernst
Warum die Frage nach der Ernsthaftigkeit deiner Frage?

Wenn das gebundene Formularfelder sind, dann sind die Herkunftsfelder der zugrunde liegenden Tabelle (Datenherkunft) nach dieser Aktion auch leer!

Überlege noch mal ganz genau!

Titel: Re: Feldlinhalte von Formular nach einer Aktion löschen
Beitrag von: smily68 am März 16, 2011, 14:22:19
Hallo

Also die Daten die ich zücksetzen will sind Daten von ungebunden Feldern und Kombifeldern auf dem Formular die ich nach einer gestarteten Abfrage zurücksetzen will. Die Frage war ernsthaft, da ich in der Hilfe von Access nichts gefunden habe, wie ich diese zurücksetzen kann und den Befehl nicht kannte. Anhand der Antwort ist es mir natürlich sonnenklar. Mir ist auch klar, dass ich mit diesem Befehl gebundene Felder in der Tabelle lösche.

Wenn aber schon zwei Gurus geantwortet haben, komme ich mit einer anderen Frage bei der ich anstehe:

Ich möchte in einem Bericht ungebunden Felder mit Felder von der Abfrage die die Grundlage für diesen Bericht ist abfüllen, dass heisst ich bearbeite diese zuerst in einer Funktion und das Resultat will ich in die ungebunden Felder schreiben, meine Frage ist nun, wie mache ich dies?

Gruss Daniel 
Titel: Re: Feldlinhalte von Formular nach einer Aktion löschen
Beitrag von: database am März 16, 2011, 14:28:44
Hallo,

ZitatIch möchte in einem Bericht ungebunden Felder mit Felder von der Abfrage die die Grundlage für diesen Bericht ist abfüllen
wobei sich dann für mich die Frage stellt, warum das UNGEBUNDENE Felder in einem Bericht sein müssen, wenn die Datenherkunft des Berichts diese Felder samt Inhalt liefert?

Zitatdass heisst ich bearbeite diese zuerst in einer Funktion und das Resultat will ich in die ungebunden Felder schreiben
Du kannst ja den Aufruf deiner Funktion auch in die Abfrage einbinden und so die Berechnungen in die Datenherkunft bringen.

Titel: Re: Feldlinhalte von Formular nach einer Aktion löschen
Beitrag von: MzKlMu am März 16, 2011, 14:59:05
Hallo,
ich frage mich sowieso sehr oft, warum man sich das antut und mit ungebundenen Formularen und Berichten arbeitet.
Access bietet serienmäßig so viele Standardfunktionen, dass man sich die Programmierarbeit dazu sparen kann. Das leeren der Felder würde schon mal vollständig entfallen. Besser wäre es die Programmierenergie auf die Gestaltung der Formulare und eine Plausibilitätsprüfung zu verwenden. Letzteres ist auch bei ungebundenen Objekten erforderlich.

Nur so nebenbei.
Titel: Re: Feldlinhalte von Formular nach einer Aktion löschen
Beitrag von: smily68 am März 16, 2011, 19:18:41
Mir geht es eigentlich um folgendes in meinem Bericht:

Ich habe in einer Tabelle die Firmenadresse abgespeichert insgesamt 5 Zeilen. Diese soll nun auf einem Rechnungsformular angezeigt werden. So weit so gut, wenn nun eine Zeile fehlt soll das ganze nach oben geschoben werden. Nun kann die Firmenadresse nur aus 2 oder 3 Zeilen bestehen usw.

Ich habe früher mit einem Reportgenerator gearbeitet, da konnte ich diese 5 Zeilen in einen Behälter setzten und jede Zeile schrumpfen lassen, wenn kein Wert vorhanden ist. Auch konnte ich mehrer Bausteine eröffnen diese an einen Hauptbaustein anhängen wie ein Gruppe und mit einer Logik versehen, wenn dieser angezeigt werden soll. All dies fehlt mir ein wenig im Access um wirklich gute Formulare zu erstellen.

Ich versuchte nun also mit Funktionsgenerator die Logik zu erstellen wenn die Adresse fehlt und der NamenZusatz fehlt, dann schreibst die du schon den Ort in die zweite Zeile usw. Aber das wurde sehr unübersichtlich, die ersten drei Zeilen funktionierten bei der 4 habe ich es nicht hingekriegt, so dass ich dachte mit einem VB schript kannst du das ganze einfacher und übersichtlicher erstellen. Doch ich habe es nicht geschafft einen Wert in ein ungebundenes Feld zu schreiben, es funktioniert nur wenn das Feld an einer anderen Stelle schon im Report eingefügt habe. Doch das kann es auch nicht sein.

Grundsätzlich interessiert mich natürlich, wie ich in in einem Report auf ein ungebundenes Feld schreiben kann, denn ich möchte ja dazulernen, doch vielleicht könnt ihr mir ja eine bessere Lösung vorschlagen.

Gruss Daniel
Titel: Re: Feldlinhalte von Formular nach einer Aktion löschen
Beitrag von: MzKlMu am März 16, 2011, 19:36:23
Hallo,
ZitatIch habe früher mit einem Reportgenerator gearbeitet, da konnte ich diese 5 Zeilen in einen Behälter setzten und jede Zeile schrumpfen lassen, wenn kein Wert vorhanden ist.
Auch das würde mit einem gebunden Bericht mit einer Art Behälter gehen.
Man kann eine Adressfeld zusammensetzten und nur Felder verwenden die auch einen Inhalt haben. Es ergibt sich dann für die Adresse ein genau passendes Feld. Mit + statt dem & zur Textverkettung geht da schon ein Teil automatisch wenn ein Feld (z.B. Titel) nicht gefüllt ist.
ZitatAuch konnte ich mehrer Bausteine eröffnen diese an einen Hauptbaustein anhängen wie ein Gruppe und mit einer Logik versehen, wenn dieser angezeigt werden soll. All dies fehlt mir ein wenig im Access um wirklich gute Formulare zu erstellen.
Solche Dinge lassen sich zum großen Teil bereits über das Datenmodell steuern. Leere Felder sollte es im Regelfal möglichst wenig bis idealerweise keine geben.

Für detailiertere Vorschläge müsste man das Datenmodell kenne. Für ungebundene Objekte besteht jedenfalls kein Grund.
Titel: Re: Feldlinhalte von Formular nach einer Aktion löschen
Beitrag von: smily68 am März 16, 2011, 20:42:33
Hallo MzKlMu

Du schreibst von einem Art Behälter und dass man die Felder mit einem + zusammenfügen soll. Kannst du mir erklären wie das genau geht, vielleicht mit einem Beispiel.

Auch wenn du sehr davon abräts mit ungebunden Feldern zu arbeiten, bitte ich doch mir zu erklären, wie ich so etwas mache, vielleicht auch mit einem Beispiel.

Vielen Dank

Daniel
Titel: Re: Feldlinhalte von Formular nach einer Aktion löschen
Beitrag von: DF6GL am März 16, 2011, 21:21:06
Hallo,


so genau habe ich nicht verstanden, was Du machen willst...

Hast Du nun mehrzeiligen Text schon in einem Feld (also Text mit Zeilenschaltungen) und willst bei Abwesenheit z. B. der Straße eine Leerzeile dafür einsetzen oder hast Du mehrere separate Felder für die einzelnen Adress-Teile, die Du zu einem Adressblock zusammensetzen willst und für leere Felder eine Leerzeile spendieren möchtest?

Titel: Re: Feldlinhalte von Formular nach einer Aktion löschen
Beitrag von: MzKlMu am März 16, 2011, 23:47:35
Hallo,
Zitatbitte ich doch mir zu erklären, wie ich so etwas mache, vielleicht auch mit einem Beispiel.
ich habe mit ungebundenen Objekten keinerlei Erfahrung, das habe ich bis jetzt weder verwendet noch gebraucht. Ich kann Dir daher dazu nicht helfen. Demzufolge habe ich auch kein Beispiel.
Das mit dem Feld muss ich mal schauen.
Titel: Re: Feldlinhalte von Formular nach einer Aktion löschen
Beitrag von: smily68 am März 17, 2011, 14:14:50
Hallo

Ich habe mehrere separate Felder Firmenname, FirmenZusatz, Adresse, PLZ, Ort und Land sowie Tel und EMail, Nun möchte ich einen Adressblock im Formular machen, welcher fehlende Zeile wie z.B. Adresse oder Firmenzusatz nicht anzeigt und die nachfolgenden Felder wie Ort nach oben schiebt.

Gruss Daniel
Titel: Re: Feldlinhalte von Formular nach einer Aktion löschen
Beitrag von: imp666 am März 17, 2011, 15:17:44
Also du kannst sowohl mit gebundenen als auch mit ungebundenen Feldern folgende Eigenschaften abrufen/setzen:

Me!Feldname.Top = wert ' Position der Oberkante des Feldes anpassen
Me!Feldname.Height = wert ' Höhe des Feldes anpassen
Me!Feldname.Visible = False ' ausblenden
Me!Feldname.Value = "" ' Inhalt des Feldes setzen
Me.Detailbereich.Height = wert ' Höhe des Detailbereichs anpassen
Me.Detailbereich.CanGrow = true ' Detailbereich kann sich vergrößern
Me.Detailbereich.CanShrink = true ' Detailbereich kann sich verkleinern


Man kann auch Felder "markieren" mit der Eigenschaft ".Tag" und dann eine Abfrage auf alle Controls machen.
Hier ein paar Beispiele, wie man elegant mit Controls und Tags umgehen kann:

FOR EACH ctl in Me.Controls
 ' Alle Controls bei denen in der Eigenschaft ".Tag" (zu Deutsch "Marke") ein "x" eingetragen ist Feldinhalt leeren
 IF ctl.Tag="x" THEN
   ctl.Value=""
 END IF

 ' z.B.: alle Controls die keinen Inhalt haben ausblenden
 IF NZ(ctl.Value)="" THEN  
   ctl.Visible=false
 END IF

 ' Alle Controls bei denen in der Eigenschaft ".Tag" (zu Deutsch "Marke") ein "L" eingetragen ist Feldinhalt leeren
 IF ctl.Tag="L" THEN
   ctl.locked=true
 END IF

 ' Alle Controls bei denen in der Eigenschaft ".Tag" (zu Deutsch "Marke") ein "_" eingetragen auf Höhe 0 setzen
 IF ctl.Tag="_" THEN
   ctl.height=0
 END IF

 ' Alle Controls bei denen in der Eigenschaft ".Tag" (zu Deutsch "Marke") eine Zahl ist: Die linke Position des Feldes auf diese Zahl setzen
 IF CLNG("0" & ctl.Tag)>0 THEN
   ctl.left=CLNG(ctl.Tag)
 END IF
NEXT

Titel: Re: Feldlinhalte von Formular nach einer Aktion löschen
Beitrag von: DF6GL am März 17, 2011, 19:46:33
Hallo,


naja, man kann ja Vieles um 20 Ecken erledigen...  


(Luftcode)
Dim strAdresse as String

strAdresse= Me!Firmenname & vbCrLf
strAdresse= strAdresse & IIf(Isnull(Me!FirmenZusatz),"",Me!FirmenZusatz & vbCrLf)
strAdresse= strAdresse & IIf(Isnull(Me!Adresse),"",Me!Adresse & vbCrLf)
strAdresse= strAdresse & IIf(Isnull(Me!Land + Me!Plz + Me!Ort),"","" & Me!Land & Me!Plz & Me!Ort  & vbCrLf)
strAdresse= strAdresse & IIf(Isnull(Me!Tel),Me!EMail,Me!Tel & vbCrLf & Me!EMail)

Me!Adressfeld=strAdresse
Titel: Re: Feldlinhalte von Formular nach einer Aktion löschen
Beitrag von: imp666 am März 18, 2011, 08:44:04
Zitatwelcher fehlende Zeile wie z.B. Adresse oder Firmenzusatz nicht anzeigt und die nachfolgenden Felder wie Ort nach oben schiebt.

Schau dir einfach mal den Anhang an.

[Anhang gelöscht durch Administrator]
Titel: Re: Feldlinhalte von Formular nach einer Aktion löschen
Beitrag von: smily68 am März 19, 2011, 11:01:33
Hallo

Ich habe nun die Lösung von Franz umgesetzt. Ich habe nur ein Feld und das kann ich genau dort plazieren wo der Platz für das Sichtfenster ist im Umschlag. Die Lösung wo ich die die Felder auf Höhe = setze und bein Inhalt vergrössere kannte ich schon, mir gefällt bei dieser Lösung aber nicht, dass ich im Berichtsentwurf die Felder nicht mehr sehe.

Vielen Dank an alle die mir einen konstruktiven Tipp gegeben haben. Ich habe wieder einiges gelernt.

Gruss Daniel