Hallo Forum,
ich hoffe das ihr mir bei meinem Problem behilflich sein könnt. Es geht dabei um eine Spendenbescheinigung:
Wenn der Anwender das Formular aufruft soll er den Text "XYZ" sehen, klickt nun der Anwender ins Feld soll der Text verschwinden so dass er einen anderen TExt reinschreiben kann, dieser "andere Text" soll dann auch im Formular gedruckt werden.
Habt ihr eine idee??
Danke und grüßle
Canan
Hallo,
trage als Standardwert für das Feld ="XYZ" ein.
In das Ereignis "Bei Fokuserhalt" folgenden Code:
Private Sub Feldname_GotFocus()
If Me.Feldname= "xyz" Then Me.Feldname= Null
End Sub
Das Feld muss zum Speichern an eine Tabelle gebunden sein.
Ein Formular ist zum Drucken nicht geeignet. Erstelle lieber einen Bericht.
Hallo,
ist das Textfeld deines Formulars an ein Tabellenfeld gebunden?
Wenn nicht, solltest du vielleicht überlegen den Text in die Datenherkunft des Formulars aufzunehmen.
-weiter würde ich vorschlagen NICHT das Formular zu drucken sondern einen geeigneten BERICHT zu erstellen.
In einem Formular beim Öffnen bzw. beim Laden einen bestimmten Text in einem Formularfeld darzustellen ist keine besondere Hexerei:
Private Sub Form_Open(Cancel As Integer)
Me.DeinTextfeld = "IrgendEinText"
End Sub
Zum Entleeren des Feldes würde ich das Ereignis 'Beim Doppelklicken' vorschlagen
(Fokuserhalt ist denkbar ungeeignet ebenso das einfache Klicken):
Private Sub DeinTextfeld_DblClick(Cancel As Integer)
If me.DeinTextfeld = "IrgendEinText" Then
Me.DeinTextfeld = ""
End If
End Sub
HTH
Hallo,
ZitatFokuserhalt ist denkbar ungeeignet
daher frage ich ja ab, ob der Satndardwert noch enthalten ist.
Hallo Klaus,
das ist richtig - aber es wird dann das Entleeren auch dann ausgeführt, wenn der Fokuserhalt 'ungewollt und zufällig' passieren sollte.
Ist halt auch Ansichtssache wie man an die Geschichte rangeht... ;D
Wenn das Ganze eventuell nur der Hinweis zur Eingabenotwendigkeit ist ... gäbe es auch andere Lösungsmöglichkeiten.
p.s. .... sollte meine Antwort nicht als Kritik an deiner Empfehlung verstanden werden!
Leider kann ich (und auch sonst jemand) nicht sehen ob du an der Beantwortung einer Frage arbeitest, sonst hätte ich mir das Schreiben erspart.
Hallo,
vielen Dank für eure Antworten.
Zu euren Fragen:
- die Zelle hat ein Standardwert.
- wir möchten eigentlich nur das der Anwender weiß was er ins Feld einzugeben hat :)
Ich versuche euch mal unser Problem zu erklären.
Bis Dato haben wir die Spendenbescheinigungen über xls gemacht. Hier hatten wir zwei Tabellen, in dem ersten war das Formular für den Druck und in dem zweiten waren die Daten.
Da wir nun aber eine Datenbank haben wollen um Fehler zu vermeiden möchten wir was in Access machen.
Das mit dem Bericht haben wir nicht gemacht.
Beim Importieren versucht er das ganze immer als Tabelle zu machen, das möchten wir aber nicht. Wir wollen ja ein Formular und keine Tabelle.
Ich hoffe ihr könnt mir weiterhelfen.
:)
Hallo,
bist Du sicher, dafür überhaupt eine Datenbank verwenden zu wollen?
Wenn Du Daten eh nicht speichern willst und ein Anwender alle Daten einer Bescheinigung selber eintragen soll, dann würde ich lapidar zu einer entspr. gestalteten Word-Vorlage raten. Damit kann jeder Anwender seine "eigene" Spendenbescheinigung mit einem gewissen Layout ("Spendenbescheinigungs-Formular") erstellen und drucken.....
ZitatDa wir nun aber eine Datenbank haben wollen um Fehler zu vermeiden möchten wir was in Access machen.
Was für Fehler sollen vermieden werden?
ZitatDas mit dem Bericht haben wir nicht gemacht.
Warum nicht? Berichte sind für das Drucken gemacht/vorgesehen...
ZitatBeim Importieren versucht er das ganze immer als Tabelle zu machen, das möchten wir aber nicht. Wir wollen ja ein Formular und keine Tabelle.
Das ist ein Fehlverlangen bzgl. Access (bzw. jeder Datenbank) . Grundlage in einer Datenbank sind IMMER Tabellen, die die Daten aufnehmen. Deshalb können (standardmäßig) ext. Daten auch nur in Tabellen importiert werden. Die BEHANDLUNG (Eingeben/Ändern/Löschen) dieser Tabellendaten erfolgt (in der Regel) über den Anwender mittels Access-Formularen (die nichts zu tun haben mit einem auf einen Stück Papier stehenden "Formular" (--> Word-Vorlage). Der Ausdruck (auf Papier oder z. B. in eine PDF-Datei) geschieht mittels der o. a. Berichte.
Vielleicht beschreibst Du mal, welche Daten überhaupt vorhanden sind, wie diese Daten verwendet werden sollen und was damit (genau) passieren soll, d. h. erstell ein Daten- und Ablauf-Konzept dieses Spendenbescheinigungs-Vorgangs... wenn Du Access verwenden willst.
Hallo DF6GL,
du hast uns ein bisschen missverstanden. Bei der Excel-Datei haben wir ja 2 Blätter. Beim 1. Blatt pflegen wir die Daten unserer Mitglieder.
Diese Daten werden ja gespeichert. Das 2. Blatt ist ein Standartbrief/text wo Zellen sind, wie z.B. Name, Spendebescheinigungsart, die zum 1. Blatt verknüpft sind. Wir wählen die nummer im 2. Blatt aus und sofort erscheinen die Daten vom ersten Blatt. Dieses Konzept wollen wir übertragen.
Ich weiß nicht, wie wir das 2. Blatt in Access verwirklichen sollen. Da wir mit eindeutigen ID's arbeiten, d.h. z.B. Nummer 1 hat nur bestimmte
Daten, die man nachdem Ausdruck bzw. nach bestätigen zum nächsten Datensatz nicht mehr ändern dürfen, haben wir dies als Fehlervermeidung gemeint.
Das mit dem Bericht haben wir nicht gemacht, weil wir leider das 2. Blatt nicht richtig importieren können. Access versucht irgendwie jede Spalte von Excel als Feld zu importieren. Und im Formular haben wir Feldverknüpfung zu der Tabelle gemacht. Aber wenn wir die Ansicht vom Formular auf normale Ansicht ändern kann den Eingabebereich nicht mehr sehen. Wie bei Wetter.com, wo doch beim Klicken in den Eingabereich der Text verschwindet und man seine PLZ eingibt, wollten wir unseren Eingabereich gestalten.
Nochmal kurz: Eingabereich beim klicken und Datensatz sperren.
Ich hoffe jetzt, dass unser Problem eindeutig beschrieben worde. Für Fragen stehe ich bereit und vielen Dank für die Antworten.
Hallo,
vermutlich unterliegst Du (Ihr?) einem Verständnisproblem über Access (als Datenbanksystem), in erster Line, dass Access nicht Excel ist und sich die beiden grundlegend voneinander unterscheiden.
" Beim 1. Blatt pflegen wir die Daten unserer Mitglieder."
Ok, diese Daten können vermutlich ohne größere Probleme in eine Access-Tabelle ("tblMitglieder", "MitgliedID" als Primärschlüssel) importiert werden. Auf Grund dieser Tabelle kann ein Access-Formular erstellt werden, das alle Tabellenfelder mittels gebundenen Textfeldern anzeigt und somit erlaubt, die Daten in dieser Tabelle zu pflegen.
In Bezug auf diese Tabelle sollte (muss!!) eine Überprüfung der Normalisierungsregeln erfolgen. (siehe Link 1 und 1a in meiner Signatur). Offensichtliches Beispiel dazu ist die Speicherung der Bescheinigungsarten in einer weiteren Tabelle ("tblBSArten") und die Herstellung einer Beziehung zu tblMitglieder.
Im o. g. Formular ("frmMitglieder") kann dann im einfachsten Fall eine Schaltfläche eingebaut werden, mittels der ein Bericht ("rptBescheinigung") geöffnet wird, der den akt. Datensatz (Daten der Mitglieder) und z. B. die Höhe der Spende ausdruckt. Der Spendenbetrag kann dabei in einem (ungebundenen) Formular-Textfeld im eingetragen werden, bevor die Schaltfläche angeklickt wird und der anschliessend im Bericht erscheint.
Ein solches Vorgehen ist aber nur die MINIMALSTE Umsetzung der Aufgabe (aufgrund der vorliegenden Beschreibung des Sachverhaltes) . Es ist keine Registratur der ausgedruckten Bescheinigungen und keine Speicherung des jeweiligen Betrages möglich. Wird das gefordert, muss das Tabellenkonzept um weitere Tabellen erweitert werden, z. B. "tblBescheinigungen", die das Mitglied(die Mitglieds-ID), den Betrag, das Ausstellungsdatum etc. als Historie führt.
Hallo DF6GL,
vielen Dank für deine Antworten. Aber ich glaube, dass wir langsam vom Thema abschweifen. Liegt vielleicht daran, dass ich mich nicht richtig mit Fachbegriffe ausdrücken kann. Eigentlich war meine Frage, wie man den Standardwert des gebundenen Textfeldes beim Klicken löscht. Dafür habe ich ein Bild hochgeladen wie ungefähr das Formular aussieht. Die farbig markierten Felder sind die gebundenen Textfelder. Das rotfarbige ist die Primär-ID. Die gelben Felder sind zum eingeben gedacht, wo ein Standardwert drin steht. Beim grünfarbigen Feld erscheint das heutige Datum.
Außerdem habe ich ein zweites Bild hochgeladen, wo man die Beziehung zur Spendenart sehen kann.
:)
[Anhang gelöscht durch Administrator]
Moin Canan,
bin mir nicht ganz sicher, ob ich alles verstanden habe. Deswegen bitte ich um Nachsicht.
Im Anhang habe ich ein mini-Beispiel erstellt, in dem im Formular1 ein gebundenes Text-Feld mit Standardwert vorhanden ist. Dieser Standardwert wird bei einem neuen Datensatz angezeigt. Nach einer Eingabe verschwindet er. Ausgenutzt wird das Ereignis "Bei geändert". Das Klick-Ereignis habe ich NICHT ausgenutzt, da ansonsten auch beim zufälligen Klicken im Feld die Anzeige verschwindet.
Private Sub Inhalt_Text_Dirty(Cancel As Integer)
If Me.NewRecord Then Me.Inhalt_Text = ""
End Sub
Ist das Dein/Euer Ziel?
Wenn ja, sehe ich ein Problem bei Datums- und Zahl-Eingaben (siehe "#Fehler"). Die dürfen dann nicht in ein Datumsfeld bzw. Zahl-Feld eingegeben werden, sondern auch in Text-Felder. Damit verliert man die Eingabe-Überprüfung (z.B. ist Datum korrekt: z.B. "30.02.2012").
Warum schreibt Ihr nicht den "Standardwert" (also die Angabe, was einzutragen ist) als Feldbezeichnung neben die Eingabefelder?
Harald
[Anhang gelöscht durch Administrator]
Hallo,
ZitatEigentlich war meine Frage, wie man den Standardwert des gebundenen Textfeldes beim Klicken löscht.
und darauf gabe es bereits in der #1 Antwort einen Vorschlag, hast Du den ausprobiert?
Hallo Canan,
vermutlich reden wir aneinander vorbei, bzw. mir ist es immer noch nicht klar, was Ihr eigentlich machen wollt....
"Die gelben Felder sind zum eingeben gedacht, wo ein Standardwert drin steht."
Wenn das gebundene Felder sind, stehen darin die Werte aus dem akt. angezeigten Datensatz der Tabelle und ein evtl. Standardwert (Wert in der Eigenschaft "Standardwert" in der Tabelle oder im Formular) kommt da nicht zum Tragen. Wenn das Form im Eingabemodus ist (auf einem neuen Datensatz steht) , dann wird in diesen Feldern der jeweilige dazu in der besagten Eigenschaft eingetragene Wert übernommen und angezeigt.
Wenn das Form im Eingabemodus steht (ein neuer Datensatz erfasst werden soll) und dieser Wert im Textfeld (NICHT der "Standardwert") beim Klicken (auf ein solches gebundenes Textfeld?) gelöscht werden soll, dann eben wie Klaus anfänglich schon sagte:
Sub Textfeld1_Enter()
If Me!Newrecord Then Me!Textfeld1=Null
End Sub
Des Weiteren muss ich an den Beziehungen "herummeckern" ;)
-Es ist dort nur eine Tabelle "Zahlungsart", keine "Spendenart" zu sehen...
- Die Beziehung(slinie) ist, so es denn eine Beziehung sein soll, falsch. Die Beziehung muss über Schlüsselfelder hergestellt werden, in diesem Fall von Zahlungsart.ID nach Test.Zahlungsart, wobei beide Tabellenfelder den Datentyp Autowert ("ID") bzw. Zahl,Long ("Zahlungsart") aufweisen müssen. Denkbar wäre hier aber auch eine Tabelle "tblZahlungsart" mit nur einem Feld "Zahlungsart", das als Primärschlüssel definiert wird und mit dem Feld Test.Zahlungsart in Beziehung gesetzt wird. Hier muss dann aber der Datentyp beider Felder TEXT sein.
Vielen Dank für eure Hilfen,
wir haben jetzt das Problem umgangen indem wir es anders gelöst haben.
Hi,
Zitat von: Canan am August 14, 2012, 17:53:00
... es anders gelöst haben.
verrate uns doch, wie anders gelöst.
Harald
:D
Mit Access ???
;D