viking
Goto Top

In Access Zähler mit Modul als Schleife einbinden

Hallo, ne kleine Frage an die Experten.
Bin bei Modulen, insbesondere Schleifen noch der absolute Laie, wäre daher schön, wenn ich es nachvollziehn könnteface-wink

Ich habe eine Access DB mit dem Namen Test.mdb Version 2003
In dieser habe ich eine Tabelle mit dem Namen Bestellpositionen, welche viele Felder hat.
Eines der Felder hat den Namen „Bestellnummer“, ist ein Textfeld und kommt öfters vor.
Dazu hat die Tabelle im Beispiel 3 weitere Felder mit den Feldnamen
Feld1 = Typ Double
Feld2 = Typ Datum
Feld3 = Typ Integer
Nun möchte ich mittels eines Moduls per Makro eine Tabelle „Bestellungen“ erzeugen lassen, welche die gleichen 4 Felder hat und zusätzlich ein Feld "Zaehler".
Das Feld Zähler soll sich pro Datensatz in Abhängigkeit zur Bestellnummer um 1 erhöhen.
Der "Zaehler" soll immer bei 1 beginnen.
Jedes Mal wenn ich das Modul starte soll die Tabelle „Bestellungen“ neu erzeugt werden.
Frage1:
Wie kann ich das am besten lösen?

Frage2:
Welche Datentypen bieten sich an um Fehler zu vermeiden?

Frage3:
Würde das auch klappen wenn die Tabelle „Bestellpositionen“ eine per ODBC verknüpfte Tabelle ist.
Was wäre dann da zu beachten?

Gruß viking

Content-Key: 156495

Url: https://administrator.de/contentid/156495

Printed on: April 19, 2024 at 04:04 o'clock

Member: NetWolf
NetWolf Dec 07, 2010 at 21:35:23 (UTC)
Goto Top
Moin Moin,

Eines der Felder hat den Namen „Bestellnummer“, ist ein Textfeld und kommt öfters vor.
Eine Tabelle sollte nur ein Feld mit der Bezeichnung "Bestellnummer" haben. Access würde doppelte Feldnamen auch nicht zulassen, daher dürfte das Feld auch nur einmal in der Tabelle vorkommen.
Der Feldtyp "Text" ist ungeeignet für eine "Bestell"- Nummer, der Typ "Zahl" wäre besser

Dazu hat die Tabelle im Beispiel 3 weitere Felder mit den Feldnamen
Feld1 = Typ Double
Feld2 = Typ Datum
Feld3 = Typ Integer
welchen Sinn machen Feldbezeichnungen (-Namen) Feld1, Feld2, Feld3 etc. pp. ?
Was ist denn dann Beispiel 1 und 2?
Die Feldtypen Double und Integer gibt es in Access-Tabellen nicht. Also welche Tabelle hast du eingebunden?

Nun möchte ich mittels eines Moduls per Makro eine Tabelle „Bestellungen“ erzeugen lassen,
warum?

Modul und Makro sind zwei Begriffe in Access, die nicht zusammen passen.
In einem Modul werden i.d.R. VBA Funktionen und Prozeduren programmiert. Makros sind wenig effektiv. Makros solle man schnell vergessen. Konzentriere dich auf VBA

welche die gleichen 4 Felder hat und zusätzlich ein Feld "Zaehler".
kein Problem, erstelle einfach eine Tabelle mit den Feldern

Das Feld Zähler soll sich pro Datensatz in Abhängigkeit zur Bestellnummer um 1 erhöhen.
ja, so was nennt man als Feldtyp "Autozähler"

Der "Zaehler" soll immer bei 1 beginnen.
ok, dafür kannst du dann eine entsprechende Abfrage erstellen

Jedes Mal wenn ich das Modul starte soll die Tabelle „Bestellungen“ neu erzeugt werden.
warum? ich würde die Tabelle leeren und den Zähler auf 1 zurücksetzen, dafür sind zwei Abfragen nötig, mehr nicht!

Frage1:
Wie kann ich das am besten lösen?
mit Abfragen und ein wenig VBA für den Aufruf

Frage2:
Welche Datentypen bieten sich an um Fehler zu vermeiden?
alle von Access unterstützten Datentypen. Man sollte den gesunden Menschenverstand walten lassen und einer PLZ z.B. keinen Datentyp "Datum" zuordnen.
Z.B. macht es auch keinen Sinn, einer Nummer einen Datentyp "Text" zuzuordnen.

Frage3:
Würde das auch klappen wenn die Tabelle „Bestellpositionen“ eine per ODBC verknüpfte Tabelle ist.
warum nicht? Diese Tabelle ist nur die datengebende Tabelle, also wird in diese nicht geschrieben, datentechnisch also ok.

Was wäre dann da zu beachten?
kommt drauf an....., aber wenn man noch nicht mal weiß um welchen Datenbanktyp es sich handelt face-sad

Grüße aus Rostock
Wolfgang
(Netwolf)
Member: viking
viking Dec 07, 2010 at 23:00:50 (UTC)
Goto Top
Hallo Netwolf,
ich glaube ich hab’s wahrscheinlich unklar formuliert.
Meine Datentabellen kommen alle von einer Oracle Datenbank, wobei ich als Treiber nicht den Standard Microsoft Treiber verwenden kann sondern auf die Oracle ODBC Treiber gehen muss.
Unter Win7 64 bit ist das der Oracle_11_2 11.02.00.01 oder aber eine ältere Version 9.02.00.00. bei Win XP
Die Datenbank stellt ein ERP System dar, welches in der Regel alphanummerisches Nummernverfahren auch für Bestellnummern hat.
Meine Bestelltabelle in der Oracel Datenbank hat über 256 Felder, oder besser gesagt Spalten.
Ich Beispiel wollte ich die Thematik jedoch auf 4 Felder bzw. Spalten begrenzen, damit auch ich verstehe wie ein Recordset aufzubauen ist, was mir die Anforderung mit dem Zaehler lösen sollte.
Mit geht es nicht darum Bestellungen oder Bestellpositionen zu erstellen, sondern vielmehr um die Auswertung mit dem Ziel in Abhängigkeit eines Wertes, im Beispiel Bestellnummer einen bei 1 beginnenden Zähler für alle Zeilen in welchen die gleiche Bestellummer steht einzubinden.
Unter den Begriffen „Double, Datum, Integer“ verstehe ich die Feldgröße des Felddatentyp Zahl.
Die zu erzeugende Tabelle „Bestellungen“ war von der Formulierung her dumm gewählt, da irreführend, hätte sie wohl besser Bestellpositionsanalyse nennen sollen.
Gruß viking
Member: NetWolf
NetWolf Dec 08, 2010 at 20:59:24 (UTC)
Goto Top
Moin Moin,

da muss ich ja mal Biber zitieren:
".. dann soll dieser fachliche Bedarf bitteschön an die Oracle-Fuzzies gemailt werden und die legen die richtigen Indices an, basteln eventuell in der Mittagspause eine 10-Zeilen-Stored-Procedure und fackeln das Ganze auf dem Server ab."

Wie sieht es bei dir in der Firma aus?

Grüße aus Rostock
Wolfgang
(Netwolf)