Neuigkeiten:

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

Mobiles Hauptmenü

Generieren von Zahlen in Access 2010 und mehr?

Begonnen von Snugel, August 07, 2013, 22:30:38

⏪ vorheriges - nächstes ⏩

Snugel

Hallo Forum,

ich habe keinen Plan von VB oder davon wie man es in einer DB zum Laufen bringt, ich bin also auf hilfe und geduld angewiesen.
Ich habe absolut keine anhung in Access wenn es um VB geht. Auch so bin ich eher ein blutiger Anfänger.

Ich habe die Suchfunktion benutzt aber nichts gefunden.

Ich benötige hilfe für eine bestimmte Sache, was eine besondere Funktion in meinen Augen darstellt.

Ich versuche die Sache mal zu erklären.

Ich habe eine Datenbank, in der Kunden verwalltet werden sollen.

Damit jeder Kunde eine eindeutige Identifikation hat, benötige ich einen Zufallszahlengenerator.
Der soll, sobald ein neuer Kunde angelegt wird, Automatisch dem Kunden innerhalb des Datensatzes
des Kunden in der Zelle "Kunden-ID" diese erzeugte Nummer Automatisch ablegen/zuweisen.


Die Nummer soll nach bestimmten Kriterien erstellt werden.

Kriteruim 1.) Nummer darf nie doppelt vorkommen, also muss einzigartig in der DB sein.
Kriteruim 2.) Es sollte nicht der Felddatentyp "AutoWert" benutzt werden.
Kriteruim 3.) Der Name für die Spalte darf nicht "ID" sein. Wenn dann "Kunden-ID".
Kriteruim 4.) Es dürfen keine trenn- oder Sonderzeichen vorkommen wie ,;.:-_ oder ähnliches.
Kriterium 5.) Die Nummern müssen Automatisch in den Datensatz des neu angelegten Kunden geschrieben werden.
                      Die Zelle nennt sich "Kunden-ID".
Kriteruim 6.) Nummer muss folgendes Schema erfüllen:
                       - Nummer muss 9 stellig sein
                       - aus den Zahlen 0 bis 9 bestehen.
                       - Die erste Zahl darf nie eine 0 sein.
                       - Beispiele:      608448784      ist ok, denn die erste Zahl ist keine 0 und es sind 9 stellen belegt.
                                               065449465      ist Falsch, denn die erste Zahl ist eine Null.
                                               05846589        ist Falsch, weil 0 am Anfang und am Ende Fehlt die neunte Zahl.



Ich hoffe ich konnte es gut erklären.

MzKlMu

Hallo,
das meiste, was das Feld erfüllen soll, legst Du ja im Tabellenentwurf selbst fest.
Mit Kunden-Id verstößt Du schon gegen die eigene Regel mit den Sonderzeichen. Wenn dann KundenID. Oder Kunden_ID, der Untertrich ist erlaubt und wird im Regelfall auch verwendet. Der Bindestrich ist nicht erlaubt. Ein Feld des Typ LongInteger erfüllt Deine Vorgaben. Bereich 100000000 bis 999999999.
Das Feld noch auf Duplikate=Nein stellen und schon kann es keinen doppelten Eintrag geben.

Warum soll das eine Zufallszahl sein, genügt nicht einfach das Hochzählen immer um 1 ?

Das geht alles ohne VB(A), das macht man im Tabellenentwurf.
Gruß Klaus

DF6GL

#2
Hallo,

und welchen Sinn hat eine solche Spezifikation?



Kriterium1:  Tabellenfeld mit einem eindeutigen Index (Primärschlüssel)  versehen.
Kriterium2:  Warum nicht?
Kriterium3:  Kein Problem, Tabellenfeld nach Deinem Wunsch benennen.  (siehe Anmerkung unten)
Kriterium4:  In Deinem Beispiel für die Kundennummer kommt aber ein Sonderzeichen ("-") vor. (siehe Anmerkung unten)
Kriterium5:  Kein Problem, wenn das Neuanlegen über ein Formular erfolgt (Was IMMER so sein sollte)
Kriterium6:  Welchen Sinn hat das bei Vorgabe durch einen "Zufallszahlengenerator" ? (die Nummer ist also nicht sprechend) . Allenfalls kann man von einem definierten Nummernkreis ausgehen... Die Nummer hat , wenn Datentyp Zahl, Long benutzt wird, eh keine führende Null.



Anmerkung zu Kriterium 3 und 4:  Diese Forderung sollte IMMER bei der Entwicklung einer DB gelten. (Nochmal: ein "Minus" ist auch ein Sonderzeichen, ein Unterstrich ("_") dagegen nicht..)


Die "bestimmte Sache" reduziert sich hier auf die Generierung einer 9-Stelligen Zahl für ein Feld mit eindeutigen Index (ohne Duplikate)  in der Tabelle ("tblKunden") . Das kann man relativ einfach durch einen solchen Eintrag in einem Standard-Formular erreichen, das die Datensätze der Tabelle darstellt und anzeigt:

In der Eigenschaft "Standardwert" eines Formular-Textfeldes, das die Kundennummer (Wert aus dem Tabellenfeld "KundenID", Datentyp Zahl, Long) aus der Tabelle anzeigt :

=nz(DMax("KundenID";"tblKunden");99999999)+1



Dabei sollte anfänglich kein Datensatz in der Tabelle sein, oder schon eine "richtige" Kundennummer drinstehen.

Snugel

Guten Morgen,

nun für die vorgaben kann ich nichts! Die habe ich mir nicht selber auferlegt. Das hochzählen immer um eins,
ist wahrscheinlich zu berechenbar. Da ist eine Zufallszahl schon schwieriger zu berechnen. Auch wenn es nicht unmöglich ist.

Wie setze ich das mit der Null im Tabellenentwurf um?
Wie kann ich Ihm beibringen, dass er von dieser Zahl immer alle neun Stellen auszufüllen hat?


Kriterium2:  Warum nicht?
Antwort - weil der Zählvorgang der Datensätze von Access selbst immer noch bestehend bleiben soll.

Kriterium3:  Kein Problem, Tabellenfeld nach Deinem Wunsch benennen.  (siehe Anmerkung unten)
Antwort - ok.

Kriterium4:  In Deinem Beispiel für die Kundennummer kommt aber ein Sonderzeichen ("-") vor. (siehe Anmerkung unten)
Antwort - kann man ändern. (Bin anfänger :-))

Kriterium5:  Kein Problem, wenn das Neuanlegen über ein Formular erfolgt (Was IMMER so sein sollte)
Antwort - Kann man veranlassen.

Kriterium6:  Welchen Sinn hat das bei Vorgabe durch einen "Zufallszahlengenerator" ? (die Nummer ist also nicht sprechend) . Allenfalls kann man von einem definierten Nummernkreis ausgehen... Die Nummer hat , wenn Datentyp Zahl, Long benutzt wird, eh keine führende Null.
Antwort - Ich versteh dich nicht. Bitte erkläre "die Nummer ist also nicht sprechend"

bahasu

Hi,

im Anhang ein Beispiel für eine Tabelle mit einer KundenId, die als auto-Wert deklariert ist, der mit 600000000 anfängt.
Damit sind alle Deine Anforderungen erfüllt, bis auf:
- es darf kein auto-Wert sein darf und
- die Zahlen sollen zufällig erstellt werden.



Frage:
Ist die Vorgabe (darf kein auto-Wert sein) tatsächlich durch die "Realität" vorgeschrieben oder soll das ganze eine reine Übung sein, bei sich man sich in VBA austobt (vielleicht Teil einer Hausaufgabe?)?


Das Vorgehen zum Einstellen des Anfangswertes ist in der access Hilfe beschrieben:
Ändern des Anfangswertes eines AutoWert-Feldes (MDB)
Anmerkung  Die Informationen in diesem Thema gelten nur für eine Microsoft Access-Datenbank (MDB).

Bei einer neuen Tabelle, die keine Datensätze enthält, können Sie den Anfangswert eines Feldes vom Typ AutoWert ändern, dessen NeueWerte-Eigenschaft auf einen anderen Inkrement-Wert als 1 festgelegt ist. Bei einer Tabelle, die Datensätze enthält, können Sie mithilfe dieses Verfahrens auch den nächsten, einem Feld vom Typ AutoWert zugewiesenen Wert in einen anderen Wert ändern.

Wenn die ursprüngliche Tabelle Eigenschafteneinstellungen enthält, die NULL-Werte in Feldern verhindern, müssen Sie diese Eigenschaften vorübergehend ändern. Dazu zählen die folgenden Einstellungen:
Das Feld Erforderlich ist auf Ja festgelegt
Die Feldeigenschaft Indiziert ist auf Ja (ohne Duplikate) festgelegt
Eine Feld- und/oder Datensatzeigenschaft Gültigkeitsregel, die NULL-Werte in Feldern verhindert
Erstellen Sie eine temporäre Tabelle mit einem einzigen Feld des Datentyps Zahl. Legen Sie dessen Feldgröße-Eigenschaft auf Long Integer fest, und geben Sie ihm denselben Namen wie dem Feld vom Typ AutoWert in der Tabelle, dessen Wert Sie ändern möchten.
Geben Sie in der Datenblattansicht einen Wert im Zahlenfeld der temporären Tabelle ein, der um 1 niedriger ist als der Anfangswert, den Sie dem Feld vom Typ AutoWert zuweisen möchten. Wenn z. B. das Feld vom Typ AutoWert mit 100 beginnen soll, geben Sie im Zahlenfeld 99 ein.
Erstellen Sie eine Anfügeabfrage, und führen Sie sie aus, um die temporäre Tabelle an die Tabelle anzufügen, deren AutoWert-Wert Sie ändern möchten.
Wie wird's gemacht?

Erstellen Sie eine Abfrage auf der Basis der Tabelle, aus der Sie Datensätze an eine andere Tabelle anfügen möchten.
Wie wird's gemacht?

Klicken Sie im Datenbankfenster unter Objekte auf Abfragen  und dann auf der Symbolleiste des Datenbankfensters auf Neu.
Klicken Sie im Dialogfeld Neue Abfrage auf Entwurfsansicht und dann auf OK.
Klicken Sie im Dialogfeld Tabelle anzeigen auf die Registerkarte für die Tabellen oder Abfragen, mit denen Sie arbeiten möchten.
Doppelklicken Sie auf den Namen jedes einzelnen Objekts, das Sie zur Abfrage hinzufügen möchten, und dann auf Schließen.
Fügen Sie Felder zur Zeile Feld im Entwurfsbereich hinzu, und geben Sie bei Bedarf Kriterien und eine Sortierreihenfolge an.
Klicken Sie zum Anzeigen der Abfrageergebnisse auf der Symbolleiste auf Ansicht .
Klicken Sie in der Abfrageentwurfsansicht auf der Symbolleiste auf den Pfeil neben Abfragetyp , und klicken Sie dann auf Anfügeabfrage. Das Dialogfeld Anfügen wird angezeigt.
Geben Sie im Feld Tabellenname den Namen der Tabelle ein, an die Sie Datensätze anfügen möchten.
Führen Sie eine der folgenden Aktionen aus:
Falls sich die Tabelle in der aktuell geöffneten Datenbank befindet, klicken Sie auf Aktuelle Datenbank.

Falls sich die Tabelle nicht in der aktuell geöffneten Datenbank befindet, klicken Sie auf Andere Datenbank und geben den Pfad der Datenbank ein, in der die Tabelle gespeichert ist, oder klicken Sie auf Durchsuchen, um nach der Datenbank zu suchen. Sie können auch einen Pfad zu einer Microsoft FoxPro-, Paradox- oder dBASE-Datenbank oder eine Verbindungszeichenfolge zu einer SQL-Datenbank angeben.

Klicken Sie auf OK.
Ziehen Sie die Felder, die Sie anfügen möchten, sowie die Felder, für die Sie Kriterien festlegen möchten, aus der Feldliste in den Abfrageentwurfsbereich.
Wenn die Feldnamen beider Tabellen identisch sind, können Sie das Sternchen (*) in den Abfrageentwurfsbereich ziehen. Wenn Sie mit einem Replikat einer Datenbank arbeiten, müssen Sie stattdessen alle Felder hinzufügen.

Falls ein Feld vom Datentyp AutoWert ist, führen Sie eines der folgenden Verfahren durch:
Automatisches Hinzufügen von Werten vom Typ "AutoWert"

Wenn Microsoft Access die Werte für das Feld vom Datentyp AutoWert automatisch hinzufügen soll, ziehen Sie dieses Feld beim Erstellen der Abfrage nicht in den Abfrageentwurfsbereich.

Auf diese Weise fügt Access Datensätze an und fügt automatisch Werte in das Feld vom Typ AutoWert ein. Der erste angefügte Datensatz erhält einen Wert, der um 1 größer ist als der bisher größte im Feld vom Datentyp AutoWert enthaltene Wert (dies gilt auch dann, wenn der Datensatz, der den größten Wert im Feld vom Typ AutoWert enthält, bereits gelöscht wurde).

Verwenden Sie diese Methode, wenn das Feld vom Typ AutoWert der Tabelle, an die Sie anfügen, ein Primärschlüssel ist und außerdem die Originaltabelle und die Tabelle, an die Sie anfügen, im Feld AutoWert Duplikatwerte enthalten.

Beibehalten der Werte vom Typ "AutoWert" aus der ursprünglichen Tabelle

Wenn Sie die Werte aus dem Feld vom Typ AutoWert der Originaltabelle beibehalten möchten, ziehen Sie das Feld beim Erstellen der Abfrage in den Abfrageentwurfsbereich.

Wenn die Namen der ausgewählten Felder in beiden Tabellen identisch sind, trägt Microsoft Access automatisch die entsprechenden Namen in der Zeile Anfügen an ein. Wenn die ausgewählten Namen in den beiden Tabellen nicht übereinstimmen, geben Sie in die Zeile Anfügen an die Feldnamen der Tabelle ein, an die Sie Datensätze anfügen.
Geben Sie in der Zelle Kriterien für die Felder, die Sie in den Entwurfsbereich gezogen haben, die Kriterien ein, anhand derer Anfügungen vorgenommen werden sollen.
Zum Anzeigen der Datensätze, die von der Abfrage angefügt werden, klicken Sie auf der Symbolleiste auf Ansicht . Um zur Entwurfsansicht der Abfrage zurückzukehren, klicken Sie auf der Symbolleiste erneut auf Ansicht . Nehmen Sie die gewünschten Änderungen in der Entwurfsansicht vor.
Klicken Sie auf der Symbolleiste auf Ausführen , um die Datensätze hinzuzufügen.
Löschen Sie die temporäre Tabelle.
Löschen Sie den durch die Anfügeabfrage angefügten Datensatz.
Mussten Sie in Schritt 1 Eigenschafteneinstellungen deaktivieren, kehren Sie wieder zu den ursprünglichen Einstellungen zurück.
Wenn Sie einen Datensatz in die verbleibende Tabelle eingeben, verwendet Microsoft Access ein Feld vom Typ AutoWert, dessen Wert um 1 größer ist als der Wert, den Sie in die temporäre Tabelle eingegeben haben.

Harald

[Anhang gelöscht durch Administrator]
Servus

Snugel

Hallo bahasu,

zu deiner Frage ist das eine Hausaufgabe? Nein, ist es nicht.

Ich benötige einen Dolmetscher, der mir das Übersetzt was du geschrieben hast.

Was ist...
... eine Anfügeabfrage?
... eine Verbindungszeichenfolge zu einer SQL-Datenbank?
... ein Replikat?

1. Ich darf den Felddatentyp "Autowert" nicht benutzen (VORGABE). Steht in meinem ersten Beitrag.
2. Ich habe noch was vergessen. Die Access interne Datensatz Nummerirung muss weiter bestehen bleiben (1, 2, 3, 4...). Ich weis nicht, ob dass noch gewährleistet ist, wenn ich den Felddatentyp "AutoWert" und den "Primärschlüßel" ändere. Soweit ich richtig Infomiert bin, werden Nummern, die vom Felddatetyp AutoWert sind und gelöscht wurden nicht wieder verwendet, oder irre ich da? Das ist Teil meiner (VORGABE). Denn wenn geprüft wird ob die Nummer vorhanden ist und diese nicht festgestellt wird, darf sie neu belegt werden. Also, so lange Nr. vorhanden in der DB, darf sie nicht doppelt vorkommen. Ist sie dagegen gelöscht, darf sie neu belegt werden.
3. Die Zahlen sollen/müssen Zufällig erstellt werden (VORGABE). Steht in meinem ersten Beitrag.

Wegen der Namensgebung der Spalte habe ich nachgesehen, sie heißt "Kunden_Nr".

Ich hoffe ich konnte weiter zur klärung missverständlicher äußerungen von mir beitragen.

DF6GL

Hallo,

1. na, denn soll es halt so sein..

2. Es gibt keine interne Datensatz-Nummerierung. Datensätze werden nur über den Primärschlüsselwert definiert. Da besteht Defizit in den Grundlagenkenntnissen von Access.

3. Im Anhang findest Du die dahingehend modifizierte DB von Harald mit der Situation, die ich vorher beschrieben habe (Datenpflege über Formulare, NIE in Tabellen direkt)



ZitatIch benötige einen Dolmetscher, der mir das Übersetzt was du geschrieben hast
Das ist ein Auszug der Access-Hilfe, die man schon verstehen sollte.  Insofern ist ein "Einlesen" in die Access-Grundlagen dringend erforderlich.


Vermutlich kommt der Ersteller der Vorgaben aus der Excel-Ecke und versucht, Access in den selben Topf zu werfen. Weiterhin beißen sich "Zufälligkeit"  und Wertebereich im Hinblick auf die Forderung nach "Nicht-Berechenbarkeit"


Zu "sprechend":  eine Zahl ist dann sprechend, wenn anhand des Wertes weitere Eigenschaften des damit definierten Objektes (hier: eines Kunden) abgelesen werden können.

Zur "Zahl" grundsätzlich:  Ein "Zahl" ist eine Zahl im numerischen Sinn.  "Ziffern" sind (einzelne) Zeichen, mit denen eine numerische Zahl visualisiert werden kann.  Eine numerische Zahl hat , wie gesagt, keine führende 0 , so dass auch in der Tabelle ein Feld mit Datentyp Zahl, Long keine führende 0 haben kann. Die Vorgabe nach 9 Stellen wird allein durch den Minimum-Wert und den Maximum-Wert der Zahl (genauer: des Wertebereiches) erfüllt.



[Anhang gelöscht durch Administrator]

bahasu

#7
hi,

denkbar wäre also, im Formular im Steuerlement der Kunden_Nr die Default-Eigenschaft zu setzen auf:
=fKdNr()

Im Modul ist die Funktion vorhanden:
Public Function fKdNr() As Long
   Dim KdNr As Double
   
   Do
       Randomize
       KdNr = Int((699999999 - 600000000 + 1) * Rnd + 600000000)
   Loop Until Nz(DLookup("Kunden_Nr", "Ku_2", "Kunden_Nr = " & KdNr), 0) = 0
   
   fKdNr = KdNr
End Function

Beispiel anbei.

Namenskonvention und ggf. weitere Details bitte selber anpassen.

Harald

[Anhang gelöscht durch Administrator]
Servus

ebs17

Gedanken:

Diese neue Datenbank wird wohl nicht in nächster Zeit oder vielleicht nie eine ernsthafte Bedeutung bekommen außer für den jenigen, der da Zeit und Herzblut hineinsteckt. Wenn teilweise diskutable Vorgaben (durch Praxisferne und Halbwissende?) von einem Plan- und Ahnungslosen (nach eigener Beschreibung) umgesetzt werden sollen, es dazu aber offensichtlich keine Anleitung oder ein Bildungsangebot gibt, sondern die Hilfe bei Dritten gesucht wird (bei den allertiefsten Grundlagen schon), dann ist diese Aufgabe eher eine Beschäftigung und ein Vorantreiben eines Selbststudiums, aber nicht die Lösung eines betrieblichen Erfordernisses.

Grundsätzlich:
- Wenn es um die Erstellung einer Datenbank geht, gibt es am Anfang andere Schwerpunkte als bisher genannt. Stichwort Datenmodellierung. In einer Tabelle einen bestimmten Primärschlüssel zu erzeugen ist da nur ein Nebenkriegsschauplatz. Schlüssel werden ja auch irgendwie verwendet.
- Klar kann man Datensätze auch zusätzlich zählen, wenn sie bereits durchgehend nummeriert sind. In der Regel wird man das sogar müssen, es sei denn, man kann absichern. dass nicht Datensätze nachträglich wieder gelöscht werden oder dass eine abgebrochene Eingabe zu einem ungewollten Verbrauch eines Autowertes führt.
Also erst die nachfolgende Verwendung und Absicherung, was dann durchaus komplex werden kann, bestimmt den Erfolg der eingangs gemachten Festlegungen.
- Klar kann man Zufallszahlen erzeugen (beliebig je nach Entwicklergeschick). Gerade bei den einfacheren Methoden muss man dann aber zusätzlich prüfen, ob eine ermittelte neue Zahl nicht doch schon vorhanden ist, dann sogar in Folge, wenn die Anzahl der vorhandenen Datensätze eine sichtbare Größe angenommen hat.
Dem Fachmann ist dabei auch bewusst: Die physische Sortierung von Datensätzen in Tabellen erfolgt nach dem Primärschlüssel, z.B. anlässlich des Komprimierens der Datenbank. Wenn dann also neue Zufallszahlen angefügt wurden, muss ein kräftiges Umsortieren erfolgen, was dann in einer "richtigen" Datenbank (große Datenmengen) ein erheblicher (berechtigter?) Aufwand ist.

Der Hinweis, dass man nur über Formular erfassen sollte, wäre eine arge Beschränkung. Man sollte schon Strategien dafür haben, auch einen Massenimport realisieren zu können, und das dann besser mit Datenbanktechnik statt mit Schleifenkonstruktionen.

Das waren wie gesagt nur ein paar Gedanken und sollen Dich nicht weiter irritieren.

Wenn Du Dir in der VBA-Hilfe (die solltest Du u.a. kennenlernen, weil häufig benötigtes Arbeitsmittel) die Funktion Rnd anschaust, wird in der Erläuterung auch die Erzeugung von Zufallszahlen beschrieben. So kannst Du fortschreiten in Deinen Bemühungen.

MfGA
ebs
Mit freundlichem Glück Auf!

Eberhard

Snugel

Ganz ehrlich, ich glaube ich will garnicht weiter fortschreiten. Das ist zu ernüchternd was ihr da schreibt. So wie Ihr das schreibt, seid Ihr Fachmänner
und habt das nötige Know-how, ich jedenfalls nicht. Ich werde das nicht weiter machen.

Ist es so schwer das Umzusetzen für einen der keinen Plan hat?
Wie seht ihr es, ist es sinnvoller die Sache an den Nagel zu hängen?
Ich habe gedacht, weil ich eben einfacher Technischer Produktdesigner bin, der mehr mit dem erstellen von Zeichungen zu tun hat und kein Profi in Sachen Access ist,
dass ich da, versteht dies bitte nicht falsch, mehr unterstützung bekomme im bezug auf vorgeschriebenen Code. Natürlich kann ich jetzt den vorwurfverstehen,
wenn man zu mir sagt, ich sei faul oder so. Aber Ihr habt Euren Beruf und Euere Intressen und ich eben meine Beruflichenqualifikationen und meine Interessen,
die anderer Natur sind. Was für Euch ein leichtes ist, ist für mich nicht zu durchdringen. Was gegebenfalls für mich leicht ist und für Euch schwer,
ist für Euch nicht sofort zu durchchecken. Was ich meine ist also ein gegenseitiges geben und nehmen.
Wie gesagt meine Kenntnisse sind fast gleich Null. Wie Ihr selber passend gesagt habt.
Was das erstellen von technischen Zeichnungen angeht oder das erkennen von technischen zusammenhängen, da bin ich eine eins im bezug auf metall etc.
Da unterstüze ich andere mit meinem wissen.
Aber das erstellen von Datenbanken...

Klar, dass keiner sich die Zeit stehlen kann, dessen bin ich mir bewusst. Ich auch nicht. Aber bevor ich ewig diskutier schreibe ich das was ich weis und gut. So kann
sich jeder wieder schnell auf seine Aufgabe konzentrieren und dennoch die benötigte hilfestellung geben. Nur ein Beispiel, wenn ein KFZ-Meister sagt: belese dich
und wechsele die schwungscheibe im Getriebe selber, würdet Ihr das auch nicht machen oder? Das Risiko ist zu hoch so das größerer Schaden entsteht kann oder?

So ist es bei mir. Ihr seid der KFZ-Meister, ich ein anhungsloser mensch der was machen soll, von dem er garnicht weis, was eine Schwungscheibe ist. Geschweige den
zu wissen wo sich die befindet, wenn es der KFZ-Meister nicht gesagt hätte. ??? ::)

Ich hoffe ich bekomme jetzt nicht nur Asche über mein Haupt, das wollte ich vermeiden. :D

MzKlMu

Hallo,
alle Deine Anforderungen (bis auf die Zufallszahl) lassen sich einfach im Tabellenentwurf/Formularentwurf einstellen, ohne irgend etwas programmieren zu müssen. Das ist Grundlagenwissen wenn man mit Access beginnt, das man sich vorher aneignen sollte.
Für die Kunden_ID lässt sich einfach eine Gültigkeitsregel in der Tabelle anlegen:
Zwischen 100000000 Und 999999999
Und eine Gültigkeitsmeldung dazu. In einem solchen Feld kann man keine 0 haben am Anfang, alles automatisch.

Wenn man nicht weis, was eine Anfügeabfrage ist (der Name ist fast selbsterklärend),  wird es schwierig zu helfen, man kann nicht die Grundlagen erklären, da müsste man einen Roman schreiben.
Gruß Klaus

DF6GL

Hallo,

hast Du Dir mal die DB aus einen vorherigen Posting von mir runtergeladen und angesehen?

Dort befindet sich ein Formular mit Basis zur Tabelle Kunden1, das alle Deine Vorgaben berücksichtigt..

Ansonsten ist es für Access nun mal unbedingt nötig, ein paar grundlegende Kenntnisse bzgl. DB-Design und VBA-Programmierung zu haben.. Da hilft das ganze Gejammer nichts, und Vorschläge können nun mal nur mit den Access-eigenen Möglichkeiten geben werden.


In der DB wird im Formular die Eigenschaft "Standardwert" des Textfeldes, das die KundenID anzeigt, über eine VBA-Funktion mit einer Zufallszahl belegt, die zwischen 100000000 und 999999999 liegt.  Nach der Eingabe anderer Daten in das Formular und dem Speichern des Datensatzes wird die angegebene KundenID in die Tabelle gespeichert.


Ansonsten solltest Du Dir überlegen, die Sache als Auftrag zu vergeben und nicht selber machen zu wollen. Dazu wäre aber eine genaue Beschreibung des gesamten Umfeldes, in der die DB laufen soll und die eigentliche Aufgabe der DB umfassend zu beschreiben.



bahasu

Hi,

Zitat von: Snugel am August 08, 2013, 13:42:40
dass ich da, versteht dies bitte nicht falsch, mehr unterstützung bekomme im bezug auf vorgeschriebenen Code.

Diese Unterstützung findest Du in den Anhängen von den Beiträgen der Nr 6 (df6gl) und Nr 7 (bahasu).

Harald
Servus

Snugel

bahasu,

das meinte ich nicht. Es bezieht sich auf das, was ich weiter unten schrieb. Interessen, KFZ-Meister etc. wäre schlimm wenn sich jeder die Grundlagen des Motors oder Getriebe aneignen müsste oder nicht? Würdest du dir wenn du keine ahnung hast von Getrieben das selber wechseln, evt. auch noch bei nem neu Wagen? Kein Mensch wenn er nicht versiert in technischen belangen ist, würde so etwas aus der Luftgegriffnes tun. Man geht zu einem Kollegen (in weiterem Sinn) der Ahnung hat und nicht so eine Idee in den Raum stellt, wie du kannst das nicht? Dann machs selbst. Eigne dir 3 Jahre Lehre an und die Erfahrung die ein KFZ-Geselle hat am besten auch noch alles in Eigeninitiative und gut.
Wenn ich so was dem Werkstatt Meister sage, eigne dir das erstellen von technischen Zeichnungen selber an und bringe dir X Vortbildungen am CAD Programm selber bei, mach am besten noch ne Festigkeitsanalyse und Simuliere noch die Funktionen auf Kolisionen. Der würd mir 100% ne Eisenwurz über den Schädel ziehen. Ich weis nicht wie das bei Euch im Umfeld ist, aber mit sicherheit nicht so oder? Wenn jemand Eure hilfe braucht dann helft Ihr Ihm. Wenn Ihr die seinige braucht, hilft er Euch oder? So kenne ich das. Ihr nicht? ???

bahasu

Hi,

Zitat von: Snugel am August 08, 2013, 21:44:59
Wenn jemand Eure hilfe braucht dann helft Ihr Ihm. Wenn Ihr die seinige braucht, hilft er Euch oder? So kenne ich das. Ihr nicht? ???

so, wie Du es schreibst, sehe ich es auch.
Und nach meinem Eindruck wurde hier schon vielen geholfen.
Nur bin ich mir nicht sicher, was wir konkret unternehmen können, um Dir zu helfen.

Harald
Servus