Eindeutiges Datenbankfeld bei zutreffen direkt aufrufen?

Hallo

Ich habe Acess 2007 und dort meine erste Datenbank gemacht. Eine ganz einfache Auflistung von Artikeln mit Beschreibung, Bewertung, Preis und so weiter.

Nun soll der Artikelname eindeutig sein, das habe ich auch bei der Erstellung so deklariert.
Wenn ich nun einen Namen eingebe, der bereits existiert, kommt eine Warnmeldung, dass (irgendein) Wert nicht korrekt eingegeben wurde.
Das ist nicht so schön, denn dann muß man erstmal suchen, welcher Wert das ist, da manche Felder Bestimmungen Haben (Datum, Preis usw).
Außerdem kommt diese Überprüfung erst wenn man den Datensatz speichert. Und da kann es schon mal sein, das man zweimal den selben Datensatz eingibt, bzw. in dem einen etwas steht und der andere eine Ergänzung erhält (es kann vorkommen, das ich bei einem Artikel erstmal nur den Preis eingebe oder nur eine Beschreibung). Auf beides will ich dann natürlich nicht verzichten.

Lange Rede kurzer Sinn; Ich frage mich, ob es möglich ist diese Überprüfung schon bei der Eingabe zu machen und ggf. einen Datensatz vorzuschlagen, den man dann (möglichst mit einer Tastatureingabe) auswählen kann. Bei meinem vorherigen Datenbankprogramm konnte ich ein Datenfeld als „Dropdown-Eingabefeld“ machen, das beim beschreiben eine Dropdownliste mit möglichen Treffern anzeigte, bis man eines auswählte, nur eines übrig blieb oder eben ein neues Wort entstand.
Geht so etwas in Access auch?

Weiterhin hätte ich noch folgende Fragen:
Wenn ich ein Datumsfeld habe und dieses Aktiv ist, erscheint daneben ein kleiner Button, auf dem man dann einen kleinen Kalender anklicken kann und dort das Datum oder „heute“ anklicken kann. Die Eingabe mit der Maus nervt ein wenig dabei und ich frage mich, ob es hierbei irgendwie eine Tastenkombination gibt um das heutige Datum dort einzugeben. Alternativ das heutige Datum bei der Datensatz-Erstellung automatisch füllen.

Ich habe einen Button für „Neuer Datensatz“ erstellt. Wenn ich drauf klicke, gibts (oh Wunder) einen neuen Datensatz. Der Curser verbleibt aber auf „neuer Datensatz“ und ich muß erst mehrmals Tab Drücken, bis ich im ersten Feld bin. Kann ich dem „neuen Datensatz“ Button einen Befehl hinzufügen, das er automatisch im ersten Feld landet?

Vielen Dank für alle Hilfen

Gruß
Taki

Hallo,

Ich habe Acess 2007 und dort meine erste Datenbank gemacht.
Eine ganz einfache Auflistung von Artikeln mit Beschreibung,
Bewertung, Preis und so weiter.

Nun soll der Artikelname eindeutig sein, das habe ich auch bei
der Erstellung so deklariert.

An sich ist das OK, sinnvoll ist aber das Hinzufügen eines Primärschlüssel(-Feldes) in der Artikel-Tabelle. Das könnte z. B. die Artikelnummer sein, oder wenn es so etwas nicht gibt, eine Autowertfeld.

Wenn ich nun einen Namen eingebe, der bereits existiert, kommt
eine Warnmeldung, dass (irgendein) Wert nicht korrekt
eingegeben wurde.

„Irgendein“ ist eher falsch ausgedrückt, es ist der Artikelname „falsch“, soll heißen der eingegebene Artikelname ist schon existent.

Das ist nicht so schön, denn dann muß man erstmal suchen,
welcher Wert das ist, da manche Felder Bestimmungen Haben
(Datum, Preis usw).

Wieso?, der (eingegebene) Artikelname ist doch hier bekannt.

Außerdem kommt diese Überprüfung erst wenn man den Datensatz
speichert. Und da kann es schon mal sein, das man zweimal den
selben Datensatz eingibt, bzw. in dem einen etwas steht und
der andere eine Ergänzung erhält (es kann vorkommen, das ich
bei einem Artikel erstmal nur den Preis eingebe oder nur eine
Beschreibung). Auf beides will ich dann natürlich nicht
verzichten.

?? Heißt das, Du willst keinen neuen Artikel eingeben, sondern einen vorhandenen Artikel (-Datensatz) vervollständigen?

Wenn so, solltest Du im Formular eine Suchfunktion einbauen, die auf den betroffenene Artikel (-Datensatz) positioniert, damit die Erweiterungsdaten an die richtige Stelle kommen.

Lange Rede kurzer Sinn; Ich frage mich, ob es möglich ist
diese Überprüfung schon bei der Eingabe zu machen

Sicherlich, aber NUR im Formular, das auf der Tabelle basiert und das solche Ablaufsteuerungen erlaubt.

und ggf.

einen Datensatz vorzuschlagen, den man dann (möglichst mit
einer Tastatureingabe) auswählen kann. Bei meinem vorherigen
Datenbankprogramm konnte ich ein Datenfeld als
„Dropdown-Eingabefeld“ machen, das beim beschreiben eine
Dropdownliste mit möglichen Treffern anzeigte, bis man eines
auswählte, nur eines übrig blieb oder eben ein neues Wort
entstand.
Geht so etwas in Access auch?

Natürlich geht das in Access auch… Kombifeld (Dropdown) an das Tabellenfeld „Artikelname“ binden und als Datensatzherkunft eine Abfrage mit Selektion des Artikelname-Feldes auf die Artikeltabelle angeben.
Die Kombifeld-Eigenschaft „Nur Listeneinträge“ ist auf Ja zu setzen. Dadurch wird bei Eingabe eines nicht vorhandenen Artikelnamens das Ereignis „Bei nicht in Liste“ ausgelöst, mit dem man dann z. B. mittels Ereignisprozedur und Aufruf eines „Eingabe“-Formulares die neuen Artikel-Daten eingeben kann.

Weiterhin hätte ich noch folgende Fragen:
Wenn ich ein Datumsfeld habe und dieses Aktiv ist, erscheint
daneben ein kleiner Button, auf dem man dann einen kleinen
Kalender anklicken kann und dort das Datum oder „heute“
anklicken kann. Die Eingabe mit der Maus nervt ein wenig dabei
und ich frage mich, ob es hierbei irgendwie eine
Tastenkombination gibt um das heutige Datum dort einzugeben.

Das gibt es und kann über das „AutoKeys“-Makro gelöst werden.

Alternativ das heutige Datum bei der Datensatz-Erstellung
automatisch füllen.

Auch das geht, indem man in die Eigenschaft „Standardwert“ des betroffenen Textfeldes

=Datum()

einträgt.

Ich habe einen Button für „Neuer Datensatz“ erstellt. Wenn ich
drauf klicke, gibts (oh Wunder) einen neuen Datensatz. Der
Curser verbleibt aber auf „neuer Datensatz“ und ich muß erst
mehrmals Tab Drücken, bis ich im ersten Feld bin. Kann ich dem
„neuen Datensatz“ Button einen Befehl hinzufügen, das er
automatisch im ersten Feld landet?

Ja, entweder mittels Makrobefehl „GeheZuSteuerelement“ oder per VBA-Code mit

Me!MeinTextfeld.Setfocus

Gruß
Franz,DF6GL

Hallo
Danke für die Schnelle Antwort.

Mit der Artikelnummer ist in diesem Speziellen Fall nicht nötig, bzw. unnütz. Ist auch keine Gewerbliche Datenbank, sondern was für den Privatgebrauch um eine große Sammlung zu katalogisieren, zu vervollständigen und zu ändern.

Das mit der Suche ist schon klar, wollte das nur etwas komfortabler haben.
Was ich mit der „Fehlermeldung“ gesagt habe, war quatsch. Vergessen wir mal schnell wieder. War mein Fehler :smile:

Das mit dem Datum hat geklappt, ich hatte nie einen „Standardwert“ gefunden, weil ich dummerweise nicht das Eingabefeld, sondern die Bezeichnung des Feldes angeklickt habe… Bin halt noch nicht so geübt mit dem Programm.
Auch das Aufsuchen des ersten Feldes hat wunderbar geklappt.
Danke dafür!

Das mit der Dropdownliste habe ich mir gerade noch einmal überlegt. Ich glaube, das geht nicht, oder? Ich meine, wenn ich einen neuen Datensatz erstelle, kann dieser ja nicht gleichzeitig einen vorhandenen „anwählen“, oder?
Wenn der Name schon bezeichnet ist, würde ja der neue „im Weg“ stehen und müsste erstmal gelöscht werden, oder? Deswegen baue ich da vielleicht doch eher ein Suchfeld ein oder so… Vielleicht dieses als „dropdown“, damit man hier schnell und einfach überprüfen kann (indem man z.B. die ersten Buchstaben eingibt), ob der Datensatz schon vorhanden ist… Naja… Werde mir schon was ausknobeln :smile:

Eine andere Sache habe ich jetzt noch:
Ich habe in der Tabelle heute noch ein paar Felder hinzugefügt. Diese möchte ich jetzt noch im Formular haben. Ich habe das Formular mit einem Assistenten gemacht und weiß daher nicht, wie man Felder manuell hinzufügt. Also im Reiter „Entwurf“ gibt es einige Sachen, weiß aber nicht so recht, welches ich davon nehmen soll, bzw. was ich dort nehme scheinen keine „normalen“ Eingabefelder zu sein…

Bin da wohl gerade etwas blind :smile:

Gruß
Taki

Eine andere Sache habe ich jetzt noch:
Ich habe in der Tabelle heute noch ein paar Felder
hinzugefügt. Diese möchte ich jetzt noch im Formular haben.
Ich habe das Formular mit einem Assistenten gemacht und weiß
daher nicht, wie man Felder manuell hinzufügt. Also im Reiter
„Entwurf“ gibt es einige Sachen, weiß aber nicht so recht,
welches ich davon nehmen soll, bzw. was ich dort nehme
scheinen keine „normalen“ Eingabefelder zu sein…
Bin da wohl gerade etwas blind :smile:

Hallo Taki,

Entwurfsansicht - Entwurf - Vorhandene Felder hinzufügen

Gruß - Wolfgang

Wie ich sehe ist schon alles beantwortet

Viel Erfolg bei Access                                                                                                      

F.Seiler

Ach… Da ganz rechts… Wunderbar… Schön intuitiv diese neue „Superleiste“… Ich hasse sie :smiley:

Danke für die Hilfe

Gruß
Taki

Hallo Taki,

leider habe ich kein Patentrezept für Dich.
Wenn ich es richtig verstanden habe befüllst Du die Tabelle direkt, oder?
Ich würde mittels VBA eine Oberfläche erstellen. Der Anwender sieht somit nie die eigentliche Tabelle sondern nur das was er sehen soll.
Wenn Du da dann bei einem Feld etwas wie das von Dir beschriebene Verhalten haben willst sollte das leichter zu realisieren sein, da Du dann „der Chef der Daten“ bist.

Ich hatte vor langer Zeit (Access 2000) mal eine Adressverwaltung mit Ansprechpartner pro Adresse auf diesem Weg erstellt.

Vielleicht hilft Dir das um den richtigen Weg zu finden.

Gruß

Karsten

Hallo, kleine frage, du hast nur eine Tabelle? Warum hast du nicht mind. 2 Tabellen die miteinander verknüpft sind? Dann kanst du doch immer was dazu eingeben.
VG
Anja

Hallo
Das ist jetzt meine erste Datenbank mit Accesss. Und ja, es ist nur eine Tabelle.
Für mich war es jetzt nur wichtig ein paar Daten zusammenzutragen.
Wie das mit den Tabellen verknüpfen geht und wo der Sinn überhaupt liegt weiß ich noch nicht, habe mich damit aber auch noch nicht so auseinandergesetzt.

Vielleicht später mal.

Gruß
Taki

Hallo
Es ist meine erste Datenbank mit Access und ich übe noch :smile:
Ja, die Datenbank ist nur für mich und dem eher Hobby zuzuordnen.

Im Moment versuche ich noch ein wenig hinter die generelle Bedienungs- und Anwendungsstruktur hinter Access zu kommen.
Ich habe links die Auswahl für die Tabelle, die meine Daten enthält, sich aber nicht autoamtsich aktualisiert, wenn ich in dem Formular einenen Datensatz hinzufüge.
Das kommt mir alles etwas sonderbar vor :smile:
Ich meine, es funktioniert alles, aber irgendwie verstehe ich das ganze noch nicht so richtig, wie es gedacht wurde…
Was mit „VBA“ gemeint ist, weiß ich leider nicht, sorry :frowning:
Visual Basic? Da kenne ich mich leider überhaupt nicht mit aus.

Gruß
Taki

Hallo,

Es ist meine erste Datenbank mit Access und ich übe noch :smile:
Ja, die Datenbank ist nur für mich und dem eher Hobby
zuzuordnen.

Im Moment versuche ich noch ein wenig hinter die generelle
Bedienungs- und Anwendungsstruktur hinter Access zu kommen.
Ich habe links die Auswahl für die Tabelle, die meine Daten
enthält, sich aber nicht autoamtsich aktualisiert, wenn ich in
dem Formular einenen Datensatz hinzufüge.
Das kommt mir alles etwas sonderbar vor :smile:

Die „links“ (im Navibereich) stehenden Tabellen sind für den Betrieb der DB und den User völlig unwichtig.

Ich meine, es funktioniert alles, aber irgendwie verstehe ich
das ganze noch nicht so richtig, wie es gedacht wurde…

Wie wurde es denn gedacht?

Grundlage einer relationalen(!) Access-DB sind die Tabellen zur „Datenspeicherung“ und deren Verbindung (Beziehungen) untereinander, die über die sog. Primär- und Fremdschlüsselfelder definiert werden. JEDE Tabelle sollte (muss) ein Primärschlüsselfeld enthalten, das zur EINDEUTIGEN Definierung eines bestimmten Datensatzes zu nutzen ist. NUR über einen solchen Primärschlüsselwert ist eine Datensatz genau definiert. (Stichwort „Normalisierung“ —> googlen!)

Access besteht aus zwei Teilen, der DB-Engine (Jet), die die Tabellen und ihre Beziehungen verwaltet und dem GUI, das sich in Form der verschiedenen Access-Fenster auf dem Monitor präsentiert.

Abfragen dienen dazu, bestimmte Datensätze und evtl. bestimmte Felder aus der Gesamtheit einer Tabelle zu filtern. Dabei wird die ANZEIGE des Abfrageergebnisses mittels Formularen/Berichten oder auch einzelnen Steuerelementen darin (Listenfelder, Kombifelder) erledigt. Das Öffnen einer TABELLE, bzw. ABFRAGE zur Datenansicht ist im Normalbetrieb der DB NICHT gedacht.

Dafür dienen Formulare, mit denen die Datenpflege (Eingeben, Ändern, Löschen) umgesetzt wird und als „User-Interface“ anzusehen sind. Berichte dienen zur Datenanalyse und zum Drucken von bestimmten Daten. Die Forms/Berichte werden an je eine Tabelle oder Abfrage „gebunden“, (in der Eigenschaft „Datenherkunft“ kommt die Tabelle oder die Abfrage zu stehen) damit der Zugang zu den Daten komfortabel hergestellt werden kann.

Alle Ablaufsteuerungen (Bedienvorgänge durch den User) werden in den Formularen erledigt. Forms/Berichte sind ereignisgesteuert, d. h. jedes Element im Formular und auch das Form selber besitzen eine gewisse Anzahl von „Ereignissen“, die je nachdem, was gerade mit dem Form/Bericht geschieht, entspr. auftreten und dadurch „behandelt“ werden können, d. h. das Auftreten eines Ereignisses kann eine VBA-Prozedur oder ein Makro aufrufen und ablaufen lassen.

Was mit „VBA“ gemeint ist, weiß ich leider nicht, sorry :frowning:
Visual Basic? Da kenne ich mich leider überhaupt nicht mit
aus.

VBA: Visual Basic for Applications

Jedes Office-Programm kann über diese Programmierschnittstelle eben „programmiert“ werden, d. h. alle und noch mehr der im Access (-Fenster) manuell erreichbaren Funktionalitäten sind damit automatisierbar.

So, genug des Grundlagenkurses… :wink:

Wie wäre es mit dem Durcharbeiten einiger Tutorials/Beispiel-Datenbanken und/oder Bücher?

www.yaccess.de
www.dbwiki.net
www.donkarl.com
.
.
.

Gruß
Franz,DF6GL

Alles Wichtige wurde bereits gesagt. Zu „mehrere Tabellen und ihr Sinn“: Normalisierung heißt hier das Zauberwort. Damit machen relationale Datenbanken erst richtig Sinn. Ansonsten wäre das nämlich in Excel mit dem Dateneingabeassistenten schon erledigt.

Was dahinter steckt, ist eigentlich simpel: Vermeidung von mehrfach vorkommenen Daten in der Datenbank. Beispiel: Wohnort bei 100 Leuten, 75 davon aus demselben Dorf - dann würde der Namen des Dorfes 75 mal in der Datenbank eingegeben. Bei Verknüpfung über z.B. PLZ als primärschlüssel stände der Ortsnamen nur einmal in einer Tabelle, würde in den verknüpften Formularen hingegen bei allen 75 auftauchen…

Anderes Beispiel: Artikelgruppen, die einem Artiekl zugeordnet werden, stehen in einer einzelnen Tabelle und werden dem einzelnen Artike über einen Schlüssel im Formular (Dropdowfeld) zugeordnet, und zugehörige Gruppendetails ebenfalls

Ja, das trifft auf meine DB (noch) nicht zu. Bisher sind alle Felder Individuell. Hin und wieder sind die Preise gleich, aber deswegen eine eigene Tabelle?

Aber Prinzipiell ist mir das bekannt. Früher hatte ich mit einem anderen Programm eine Warenwirtschaft gemacht und dort hatte ich mehrere Datenbanken, die miteinander verknüpft waren. Das war damals auch sehr Sinnvoll.

Gruß
Taki