Access-o-Mania

Access-Forum (Deutsch/German) => Tabelle/Abfrage => Thema gestartet von: Off147 am November 15, 2018, 11:16:58

Titel: Prüfung Text - dann hinzufügen von X
Beitrag von: Off147 am November 15, 2018, 11:16:58
Hallo.
Bin Neu hier ,-)
Zu mir: Leider habe ich keine Ahnung vom Programmieren ... und erst wenig Ahnung von Access. Wollte mich damit jetzt aber befassen ....
Und schon taucht bei mir ein "Einstiegsproblem" auf.
Da ich nicht alles "fertigmachen" will und dann mittendrin Probleme lösen will, gleich meine Frage zum Anfang.
Ich nutze WIN10 mit Access16.

Eine Tabelle mit dem Namen "tbl_aufgaben" wurde erstellt.
Beim zweiten Feld stockt es (schon) - ich habe dort:
ID = Autowert = OK
Bezeichnung = Text = ... Beispielwert "ABC123-18-x"
weitere Felder folgen.

Zur Info: Sonst existiert noch nichts (keine Abfragen, Formulare etc.).

Damit hätte ich beim ausgeben zB folgende Liste:
ABC123-18-a
ABC123-18-b
ABC123-17-a
ABÜ123-17-a
YYZ890-15-a
YYZ890-15-b
YYZ890-15-c
YYZ890-15-d
YYZ891-15-a

Das sah/sieht schon gut aus.
Jetzt möchte ich das ganze natürlich automatisieren (um "Fehler" zu vermeiden/eleminieren).

Mein Ziel ist: Wenn ich eine Bezeichnung eingebe (Tabelle oder Formular?) wie zum Beispiel "ABC123-18" soll Access die Datenbank bzw. das Feld prüfen.
A) Liegt eine/mehrere Übereinstimmung vor, dann prüfe welches Zeichen als letztes da ist (in diesem Fall ist das letzte Zeichen "b") und setze das nächste logische Zeichen (in diesem Fall also "c").
B) Gibt es diese Bezeichnung "ABC123-18" noch nicht, füge den ersten Buchstaben an (wäre dann "a") = ABC123-18-a.

Ich komme mit den Buchstaben hin, da es mit Sicherheit keine 26 werden (oder sind Zahlen bei diesem Problem besser?).

Bitte für einen Anfänger schreiben. Ich danke Euch schon mal im Voraus.

VG
Frank
Titel: Re: Prüfung Text - dann hinzufügen von X
Beitrag von: MzKlMu am November 15, 2018, 11:30:41
Hallo,
das Feld sollte in mehrere Felder aufgeteilt werden. Jeder Teil des Feldes hat ja eine Bedeutung.
In einem Datenbank feld speichert man immer nur einen Wert (1.Normalform, atomare Inhalte).

Erkläre mal die Bedeutung der einzelnen Teile des Textes.
Titel: Re: Prüfung Text - dann hinzufügen von X
Beitrag von: Off147 am November 15, 2018, 11:45:55
Hallo Klaus.
Also ...
1) Die ersten 3 Buchstaben (ABC) sind die Anfangsbuchstaben einer Straße (oder ausserhalb von unserer Stadt der Ort). Für die Kurfürstenallee wäre es also KUR (für Kassel wäre es KAS).

2) Die nächsten drei Zahlen sind die Hausnummer. Für die Hausnummer 99 wäre das daher also die 099.

3) Die nächste Zahl ist die Jahreszahl. Das ist aber nicht gleichzusetzen mit dem aktuellen Jahr. für 2017 wäre es daher die 17.

4) Und dann kommt eben die weitere fortlaufende Bezeichnung A-Z ... in dewm Fall also z.B. ein c.

Ich hatte mir die Zerlegung auch schon überlegt - aber bei maximal insgesamt 500 Projekten pro Jahr macht das für "mich" zumindest mengentechnisch keinen Sinn, sondern verkompliziert es (wohlbemerkt für mich - wahrscheinlich aus DB Sicht nicht) ?!

Danke Dir schon mal für Deine Rückinfo im Voraus.

VG
Frank
Titel: Re: Prüfung Text - dann hinzufügen von X
Beitrag von: MzKlMu am November 15, 2018, 12:00:09
Hallo,
wenn die Jaheszahl aus einem Datum, die Hausnummer und die Stadt aus einer Adresse ermittelt werden kann, so sind für die erten 3 Bestandteile des Ges.Textes keine Tabellenfelder erforderlich, weil die entsprechenden Texte aus bereits vorhanden Text ermittelt werden kann und dann automatisch zusammengesetzt werden können. Nur die fortlaufende Bezeichnung benötigt ein Tabellenfeld.

Du solltest Dir erst mal eine Gesamtstruktur anlegen, bevor Du Dich mit anderen Dingen beschäftigst.

Was machst Du eigentlich wenn die ersten 3 Buchstaben bei Straße oder Stadt gleich sind ?

Und die Grundlagen zu Access wären auch noch wichtig.
Hier 2 Links dazu.
https://www.hdm-stuttgart.de/~riekert/lehre/db-kelz/
https://www.access-tutorial.de/
Titel: Re: Prüfung Text - dann hinzufügen von X
Beitrag von: Off147 am November 15, 2018, 12:13:01
Hy,

diese Bezeichnung wird nicht aus anderen Adressen generiert, da es diese in Datenform nicht gibt.

Die doppelte Bezeichnung ;-) Ja ... das ist bekannt - wurde aber immer mit einer anderen Nummer (Hausnummer) gelöst. Finde ich persönlich nicht schick - ist aber auch nicht so dramatisch.

Dieses System gibt es seit ca. 10 Jahren ....
Ich bin ja schon mal froh, da man sich dazu durchgerungen hat, bei einem weiteren Projekt unter der gleichen Adresse nicht die gleiche Nummer zu verwenden ... ... da war die Suche vorher wunderbar ;-/

Daher kommt jetzt hinter jedem Projekt (auch wenn es ein Projekt dort schon gibt). ein weiteres Zeichen - somit kann man diese auseinander halten.

Ich hätte das aus einem Mix aus Stadt und Str.  gemacht - hatte damit aber keinen Anklang gefunden ... zu lang die Begründung.

VG
Frank
Titel: Re: Prüfung Text - dann hinzufügen von X
Beitrag von: MzKlMu am November 15, 2018, 12:23:49
Hallo,
dann verwende 4 Felder und setze das zusammen. Das 4. Feld wird hochgezählt. Am besten mit einer Zahl, aus der sich zur Ansicht auch ein Kleinbuchstabe gewinnen lässt.
Titel: Re: Prüfung Text - dann hinzufügen von X
Beitrag von: Off147 am November 15, 2018, 13:14:07
Hy.
Du meinst 4 Felder = Str | Nr | Jahr | LfdNr  ... ?
Und Zahl wie a=1 b=2 etc ?

.... Wenn ich eine TestDB baue - dürfte ich Dir diese dann senden / hier posten?

VG
Frank
Titel: Re: Prüfung Text - dann hinzufügen von X
Beitrag von: Off147 am November 15, 2018, 13:19:28
Nochmal ich.
Baue ich denn in die Tabelle die laufende Zahl/Buchstabe schon direkt ein - oder generiere ich diese erst bei einer Abfrage o.ä.?

Die muss ja später nicht nur virtuell da stehen sondern auch im Projekt verankert sein ..

Titel: Re: Prüfung Text - dann hinzufügen von X
Beitrag von: MzKlMu am November 15, 2018, 13:28:50
Hallo,
die Zahl/Buchstabe muss in die Tabelle. In einer Abfrage macht das keinen Sinn. Bei einem neuen Datensatz wird der Maximale Wert der Zahl bestimmt und 1 addiert.
Aber das ist nicht ganz so einfach wie sich das anhört, denn das Hochzählen erfolgt mit den 3 anderen Felder als Kriterium.

Du wirst hier auch etwas VBA benötigen.
Titel: Re: Prüfung Text - dann hinzufügen von X
Beitrag von: Lachtaube am November 15, 2018, 13:49:05
Im Bei Änderung Ereignis kannst Du die Anzahl geschriebener Zeichen feststellen und nach dem 9. Zeichen, DMax() bemühen,Dir den höchsten Wert zu suchen und einzutragen.

Luftcode:Private Sub EinTextCtrl_Change()
   Dim v As Variant
   
   With Me.EinTextCtrl      'funktioniert nicht beim Einfügen über die Zwischenablage
      If Len(.Text) = 9 Then
      v = DMax("DerFeldname", "DerTabellenname", _
               BuildCriteria("DerFeldname", dbText, "LIKE " & .Text & "*"))
      If IsNull(v) Then
         .Text = .Text & "-a"
      Else
         .Text = .Text & "-" & Chr$(Asc(Right(v, 1)) + 1)
      End If
   End With
End Sub

Private Sub EinTextCtrl_KeyDown(KeyCode As Integer, Shift As Integer)
   'nicht mehr als 9 Zeichen bei der Eingabe zulassen
   If Len(Me.EinTextCtrl.Text) = 9 Then KeyCode = 0
End Sub

PS: für das Feld sollte ein eindeutiger Index definiert werden.
Titel: Re: Prüfung Text - dann hinzufügen von X
Beitrag von: Off147 am November 15, 2018, 15:18:24
Uiihh ... ;-)
Verstehe davon (VBA) nicht viel.
Ich schaue mir das mal an .. und melde mich dann wieder.

Derweil hatte ich angefangen eine neue Tabelle anzulegen (siehe Anlage) mit den getrennten Werten (siehe Post von Klaus).

Könnt Ihr Euch das mal anschauen ob das so ist wie es Klaus gemeint hatte?
Ich habe ein Feld gemacht, in dem ich die Projektnummer zusammensetzen lasse ...

VG
Frank
Titel: Re: Prüfung Text - dann hinzufügen von X
Beitrag von: MzKlMu am November 15, 2018, 15:36:45
Hallo,
auf die Projektnummer in der Tabelle solltest Du verzichten, das ist auch nicht notwendig. Die gleiche Berechnung kannst Du auf die gleiche Art auch in einer Abfrage machen.
Die Nummer sollte natürlich eine Zahl sein (Integer) und kein kurzer Text. Auch das Jahr ist eine Zahl.

Was machst Du eigentlich, wenn es in einer Stadt/Ort mit den 3 gelichen Anfangsbuchstaben auch eine Straße gibt mit den 3 gleichen Anfangsbuchstaben und der gleichen Hausnummer ?
Dann wird für 2 unterschiedliche Orte/Straße/Hnr die lfd.Nummer hochgezählt.
Das System hinkt.
Titel: Re: Prüfung Text - dann hinzufügen von X
Beitrag von: Off147 am November 15, 2018, 15:43:53
Hallo Lachtaube.

----------
und nach dem 9. Zeichen,
-------------
Das wir wohl so nicht gehen. Ich hatte zwar geschrieben das die Hausnummer 3 Stellen hat, macht aber keinen Sinn diese so "auf"zufüllen ... zumal es auch Hausnummern mit "3c" oder "3-5" gibt. Das Ergebnis sieht bis jetzt wie die Anhänge vom letzten Post aus. Da gibt es dann bis zum ersten "-" eine unterschiedliche Anzahl von Zahlen und/oder Buchstaben.


@Klaus - OK.
Da kann/muss ich die "Formel" auch so wie in der Tabelle hinterlegen oder? Liege ich da falsch mit - aber wenn ich es in einer Abfrage mache - wie/wo ist denn dann diese gesamte Projektnummer gespeichert?

VG
Frank
Titel: Re: Prüfung Text - dann hinzufügen von X
Beitrag von: MzKlMu am November 15, 2018, 15:49:05
Hallo,
Zitatwie/wo ist denn dann diese gesamte Projektnummer gespeichert?
nirgends, ist auch nicht notwendig.
Warum verkettest Du eigentlich einen Leerstring (& "") ?
Immer wenn die Projektnummer benötigt wird, verwendest Du eine Abfrage.
Man verwendet beim Zugriff auf die Daten ohnehin im Regelfall eine Abfrage und nicht die Tabelle direkt, sodass sich da kein Nachteil ergibt.

Hast Du meine Einwände zu den Doppelungen gelesen ?
Titel: Re: Prüfung Text - dann hinzufügen von X
Beitrag von: Off147 am November 15, 2018, 15:56:14
Ok mit der Projektnummer.

Mit der Dopplung ... Ja, gerade gelesen und verstanden.
----
Dann wird für 2 unterschiedliche Orte/Straße/Hnr die lfd.Nummer hochgezählt.
Das System hinkt.
------
Stimmt.
Allerdings ist das in 10 Jahren bisher noch nie vorgekommen ... aber ich verstehe Deine Einwände ...
Hast Du eine Idee (vielleicht ja schon mal ähnlich vorgekommen) wie man da im kleinen ändern könnte? ich möchte jetzt nicht unbedingt eine neue Struktur in der Projektbezeichnung reinbringen ...
Titel: Re: Prüfung Text - dann hinzufügen von X
Beitrag von: Off147 am November 15, 2018, 15:59:50
---
Warum verkettest Du eigentlich einen Leerstring (& "") ?
----
Ähem - keine Ahnung - weil ich eine ähnliche Formel woanders gesehen hatte - und jetzt für mich umgebaut habe.
Ist das meine denn falsch oder "nur" überflüssig?
Titel: Re: Prüfung Text - dann hinzufügen von X
Beitrag von: MzKlMu am November 15, 2018, 16:07:06
Hallo,
wenn das selten vorkommt, könnte man in der Tabelle über die 3 Felder einen zusammengesetzten eindeutigen Index legen. Dann gibt es eine Fehlermeldung und man kann ein Textfeld manuell ändern.
Das Ganze ist für mich ehe eher eine Krücke, was will man aus einer solchen Projektnummer erkennen, wenn die Buchstabenkürzel nicht eindeut sind ?
Garade bei großen Städten wird es doch zu Doppelungen der Straßenkürzel kommen ? Auch bei den Städten selbst kann es doppelte Kürzel geben.
Welchen Wert hat dann das Kürzel wenn ich ohnehin nicht weiß, was es nun genau für eine Straße ist. Ein einfacher Autowert als Projektnummer hätte da die gleiche Aussagekraft.

Wenn man das richtig machen will, muss man Tabellen anlegen für die Städte und die Straßen und noch eine Tabelle in der die Straßen den Städten zugeordnet werden. In die jetzige Tabelle kommt dann nur ein Fremdschlüssel für die Kombination Stadt/Straße.
Die Städte und die Straßentabelle erhält dann je ein Feld für ein eindeutiges Kürzel.
Titel: Re: Prüfung Text - dann hinzufügen von X
Beitrag von: Off147 am November 15, 2018, 16:25:58
Hallo Klaus.
Ok ...
Ich kann ja mal eben erzählen, warum wir diese Art und Weise bevorzugen.
Es arbeiten ca. 15 Leute an diversen Projekten. Wenn von ausserhalb Anfragen kommen (und sie kommen zahlreich - und wissen die Projektnummer natürlich "nicht"), konnte man mit dieser Methode recht schnell den dem entsprechenden Ordner finden. Auch wenn man selber nicht an diesem Projekt arbeitet. Sowohl auf dem Server wie auch in Papierform/Aktenorder sind diese so benannt.

Meine Idee die ich gerade habe: Ich könnte noch die PLZ einfügen. Würde dann so aussehen: BRE28195FLU45a-18-1 = Steht dann für Bremen, PLZ 28195, Flughafendamm, Hausnummer 45a, Jahr 2018, Lfd.Nr 1

Das müsste doch dann wirklich eindeutig sein - oder? Und man kann immer noch etwas daran erkennen.
Titel: Re: Prüfung Text - dann hinzufügen von X
Beitrag von: MzKlMu am November 15, 2018, 17:08:11
Hallo,
ich vermag da keinen Sinn erkenne. Und wenn Du jetzt noch die PLZ dazu nimmst, wer soll mit einem solchen Monstrum was finden ?
Und die alten Projektnummern stimmen dann nicht mehr überein. Dann kannst Du auch gleichen eine einfache Zählnummer (Autowert) und die auf den Ordner schreiben.
Wie läuft denn das ab, wenn von außen eine Anfrage kommt, wie findet der Sachbearbeiter dann die richtige Projektnummer, der fragt doch nach einem Namen (oder nach einer Stadt) etc. und nicht nach dem Kürzel.

Mir scheint diese Projektnummer übertrieben und im Grunde wenig hilfreich.
Titel: Re: Prüfung Text - dann hinzufügen von X
Beitrag von: Off147 am November 15, 2018, 17:33:30
ZitatWie läuft denn das ab, wenn von außen eine Anfrage kommt, wie findet der Sachbearbeiter dann die richtige Projektnummer, der fragt doch nach einem Namen
Richtig = Stadt / Straße / ggf. Projektinfos  .... und diese sind doch drin. Optisch wie auch auf Papier.
Dazu muss ich noch sagen, das wir zu 70% in einer Stadt arbeiten, 20% im Bundesland. Die restlichen 10% betreffen die restliche Republik.


ZitatUnd wenn Du jetzt noch die PLZ dazu nimmst, wer soll mit einem solchen Monstrum was finden

Daher wollte ich ja erst nichts dran ändern. Und ja du hast recht - es wird immer länger/größer - was nicht wirklich von Vorteil ist.
An der Projektnummer soll sich nichts/wenig ändern - das ist meine Vorgabe hier. Meinetwegen wäre es auch nur eine "Aufzählung" ...
Aber man will sich hier (noch) nicht nur an das Daten-System binden. Bisher hat man das "auf Papier" und Aktenordner geschrieben ;-)

-----
Ich mache mal eine kleinen Schnitt:
Über eine Access-Suche bekomme ich doch auch alles raus, was gespeichert ist -oder?

Dann könnte ich für die "altbackenen" hier im Haus die Projektnummer ABC123c-18-1 anzeigen lassen, aber im Datenbanksystem und auf Platte die 928459463, 928459464, 928459465 ...... o.ä. indizieren und speichern.

Für mich dann weiter gefragt/gedacht:
Wenn die DB später mal fertig sein sollte ... ich kann doch über Access die Straße, den Ort, die Projektbezeichnung, etc. automatisch auslesen lassen - und dieses dann in einer TXT Datei im Ordner "928459464" speichern lassen (wie das technisch geht weiß ich nicht - wird doch aber wohl gehen) - dann kann ich selbst bei einem DBChrash das Projekt finden. ???

Das wäre vielleicht eine Idee. Damit würde ich bei der DB-Struktur neu beginnen - aber das alte nicht aus den Augen verlieren.

Ich bedanke mich auf jeden Fall schon mal zwischendurch bei Dir - Du hast einige Sachen aufgezeigt, die ich/wir nicht wirklich auf dem Plan hatten.


VG
Frank
... für heute muss ich Schluss machen ... noch ein Termin und dann Feierabend.