Top-Themen

Aktuelle Themen (A bis Z)

Administrator.de FeedbackApache ServerAppleAssemblerAudioAusbildungAuslandBackupBasicBatch & ShellBenchmarksBibliotheken & ToolkitsBlogsCloud-DiensteClusterCMSCPU, RAM, MainboardsCSSC und C++DatenbankenDatenschutzDebianDigitiales FernsehenDNSDrucker und ScannerDSL, VDSLE-BooksE-BusinessE-MailEntwicklungErkennung und -AbwehrExchange ServerFestplatten, SSD, RaidFirewallFlatratesGoogle AndroidGrafikGrafikkarten & MonitoreGroupwareHardwareHosting & HousingHTMLHumor (lol)Hyper-VIconsIDE & EditorenInformationsdiensteInstallationInstant MessagingInternetInternet DomäneniOSISDN & AnaloganschlüsseiTunesJavaJavaScriptKiXtartKVMLAN, WAN, WirelessLinuxLinux DesktopLinux NetzwerkLinux ToolsLinux UserverwaltungLizenzierungMac OS XMicrosoftMicrosoft OfficeMikroTik RouterOSMonitoringMultimediaMultimedia & ZubehörNetzwerkeNetzwerkgrundlagenNetzwerkmanagementNetzwerkprotokolleNotebook & ZubehörNovell NetwareOff TopicOpenOffice, LibreOfficeOutlook & MailPapierkorbPascal und DelphiPeripheriegerätePerlPHPPythonRechtliche FragenRedHat, CentOS, FedoraRouter & RoutingSambaSAN, NAS, DASSchriftartenSchulung & TrainingSEOServerServer-HardwareSicherheitSicherheits-ToolsSicherheitsgrundlagenSolarisSonstige SystemeSoziale NetzwerkeSpeicherkartenStudentenjobs & PraktikumSuche ProjektpartnerSuseSwitche und HubsTipps & TricksTK-Netze & GeräteUbuntuUMTS, EDGE & GPRSUtilitiesVB for ApplicationsVerschlüsselung & ZertifikateVideo & StreamingViren und TrojanerVirtualisierungVisual StudioVmwareVoice over IPWebbrowserWebentwicklungWeiterbildungWindows 7Windows 8Windows 10Windows InstallationWindows MobileWindows NetzwerkWindows ServerWindows SystemdateienWindows ToolsWindows UpdateWindows UserverwaltungWindows VistaWindows XPXenserverXMLZusammenarbeit
GELÖST

Fortlaufende Nummer in Access (kein AutoWert...)

Frage Entwicklung Datenbanken

Mitglied: Godlike

Godlike (Level 1) - Jetzt verbinden

09.05.2008, aktualisiert 14.05.2008, 26464 Aufrufe, 6 Kommentare

Hallo, ich habe eine Access-Tabelle ähnlich dieses Aufbaus:

ID | Auftrag | Artikel | etc.
1 | 123 | A
2 | 123 | B
3 | 456 | A
4 | 456 | C
5 | 456 | D

und möchte dies in eine neue Tabelle einfügen, die aber noch eine Pos-Nr hat:

ID | Auftrag | Artikel | Pos
1 | 123 | A | 1
2 | 123 | B | 2
3 | 456 | A | 1
4 | 456 | C | 2
5 | 456 | D | 3

Sortiert wird nach Auftrag und Artikel.

Wie muss der Befehl aussehen, damit ich diese fortlaufenden IDs erzeugen kann?
Ich zerbreche mir da schon den ganzen Tag den Kopf darüber...

Vielen Dank schonmal!
Mitglied: misterdemeanor
09.05.2008 um 17:15 Uhr
Hallo Godlike!

Ohne jetzt mal den Sinn des ganzen zu hinterfragen:

  1. Tabelle im Datenbankfenster kopieren (mit Daten)
  2. Dein Pos-Nr Feld in die neue Tabelle einfügen
  3. Eine Funktion (VBA) schreiben in der Du ein Recordset erstellst. Füttern tust Du das mit dem entsprechenden Select und Order By Klausel.
  4. Nun ratterst Du das Recordset einmal durch und setzt das Pos-Nr Feld mit einer CounterVariablen

also in etwa so:
01.
Public Function SetzePos() 
02.
  Dim sql As String 
03.
  Dim rs As DAO.Recordset 
04.
  Dim i As Integer 
05.
    i = 1 
06.
    sql = "SELECT * FROM Tabelle ORDER BY Auftrag, Artikel;" 
07.
    Set rs = CurrentDb.OpenRecordset(sql) 
08.
    Do Until rs.EOF 
09.
      rs.Fields("Pos-Nr") = i 
10.
      i = i + 1 
11.
      rs.MoveNext 
12.
    Loop 
13.
End Function
BG, Felix -misterdemeanor-
Bitte warten ..
Mitglied: Godlike
09.05.2008 um 17:22 Uhr
Setzt die angegebene Funktion nicht eine fortlaufende Nummer von 1..n?
Er soll ja für jeden Auftrag wieder bei 1 anfangen.
Hab was VBA betrifft leider keine Ahnung ;)
Bitte warten ..
Mitglied: misterdemeanor
09.05.2008 um 17:38 Uhr
Setzt die angegebene Funktion nicht eine fortlaufende Nummer von 1..n?

Jepp. Hatte ich wohl falsch verstanden, bzw. Deine Darstellung nicht genau angeschaut *g

Also dann würde ich mir wohl die einzelnen "Aufträge" holen und in einer inneren Schleife dann die PosNr setzen...also in etwa:

01.
Public Function SetzePos() 
02.
  Dim sql As String 
03.
  Dim rsAuftraege As DAO.Recordset 
04.
  Dim rs As DAO.Recordset 
05.
  Dim i As Integer 
06.
    sql = "SELECT DISTINCT Auftrag FROM Tabelle;" 
07.
    Set rsAuftraege = CurrentDb.OpenRecordset(sql) 
08.
     
09.
    Do Until rsAuftraege.EOF 
10.
      sql = "SELECT PosNr FROM Tabelle " _ 
11.
        & "WHERE Auftrag=" & rsAuftraege.Fields("Auftrag") _ 
12.
        & " ORDER BY Auftrag, Artikel;" 
13.
      Set rs = CurrentDb.OpenRecordset(sql) 
14.
      i = 1 
15.
      Do Until rs.EOF 
16.
        rs.Fields("Pos-Nr") = i 
17.
        i = i + 1 
18.
        rs.MoveNext 
19.
      Loop 
20.
      rsAuftraege.MoveNext 
21.
    Loop 
22.
End Function
Hb ich das nun richtig verstanden?

Angenehmes WE.
Bitte warten ..
Mitglied: Biber
09.05.2008 um 19:41 Uhr
Moin Godlike,

falls das eine einmalige Aktion bleibt und Du schnell die jetzige Tabelle "Auftrag" nicht so richtig viele Positionen je Auftrag hat geht es relativ fix per SQL...

Vorgehen:
  • Kopieren [nur die Struktur] der (ich sach ma) Tabelle "Auftrag" in "Auftragneu"
  • Erweitern der neuen Tabelle um ein Feld "Pos"
  • [Optional] Ich würde bei der Gelegenheit gleich dieses AutoId-Feld wegwerfen. Du hast doch den eindeutigen PK "Auftrag+Pos+Artikel"[/Optional]
  • "Neue Abfrage" erstellen, falls irgendein Access-Abfrage-Assistent um die Ecke biegt. gleich eins auf die Schnauze und in die SQL-Ansicht

Wenn dann folgende Abfrage das Ergebnis darunter bringen würde:
01.
Select * from Auftrag 
02.
ID	auftrag	artikel	attribut1	etc 
03.
1	123	A	blau	extralarge 
04.
2	123	B	orange	mini 
05.
3	456	A	blau	extralarge 
06.
4	456	C	lila	pervers 
07.
5	456	B	schwatt	cool
... dann feuere folgendes Statement ab.
01.
Insert  INTO AuftragNeu (Auftrag, Artikel, Pos, Attribut1, Etc) 
02.
 
03.
Select Auftrag, ThisArtikel, Pos, Thisattribut1, ThisEtc 
04.
FROM ( 
05.
Select Auftrag, first(Artikel) as ThisArtikel,  
06.
(select IIF(max(pos) is NULL, 0, max(pos))+1 from auftragneu) as POS,  
07.
first(attribut1) as ThisAttribut1, First( etc) as Thisetc 
08.
FROM Auftrag  
09.
Where Auftrag & Artikel not in (Select Auftrag & Artikel  from AuftragNeu) 
10.
GROUP by Auftrag 
11.
)
  • Du bekommst die Sicherheitsabfrage. "Sie beabsichtigen, x Sätze anzufügen. Im Ernst?"
  • Solange der Wert von x nicht Null (0) ist, kannst Du immer weiter diese Abfrage nochmal starten.

Danach sieht die "AuftragNeu"-Tabelle so aus:
01.
Select * from AuftragNeu 
02.
ID	auftrag	artikel	Pos	attribut1	etc 
03.
1	123	A	1	blau	extralarge 
04.
2	456	A	1	blau	extralarge 
05.
3	123	B	2	orange	mini 
06.
4	456	C	2	lila	pervers 
07.
5	456	B	3	schwatt	cool
-bzw- unter Berücksichtigung des neuen PKs
01.
 SELECT auftrag,artikel,Pos, etc 
02.
FROM AuftragNeu 
03.
ORDER BY auftrag, Pos; 
04.
auftrag	artikel	Pos	etc 
05.
123	A	1	extralarge 
06.
123	B	2	mini 
07.
456	A	1	extralarge 
08.
456	C	2	pervers 
09.
456	B	3	cool
[oder optional halt ohne diese AutoID]

Grüße
Biber
Bitte warten ..
Mitglied: Godlike
14.05.2008 um 11:44 Uhr
Danke, hat wunderbar geklappt ;)
Bitte warten ..
Mitglied: misterdemeanor
14.05.2008 um 13:49 Uhr
Danke, hat wunderbar geklappt ;)

Schön!

Nichtsdestotrotz ist Bibers Variante empfehlenswerter.
Den Lösungsweg den ich aufzeigte ist für mich einfach der schneller erstellte; um Biber´s SQL Statement zu bauen hätte ich sicher drei- bis viermal so lange benötigt als es schnell in VBA zu tippen.

Nun ja, wenn es bei einem einmaligen Rollover in einer Access DB bleibt...
Ansonsten hast Du dann ja Biber´s SQL Statement

BG, Felix -misterdemeanor-
Bitte warten ..
Ähnliche Inhalte
JavaScript
Fortlaufende Nummer für Textfeld im PDF Dokument
Frage von xXEddiXxJavaScript15 Kommentare

Hallo, ist es möglich in einem PDF-Dokument ein Textfeld einzufügen welches bei jedem öffnen oder optimalerweise nach jedem speichern ...

Microsoft Office
Access 2010 Autowert anpassen
gelöst Frage von lordofremixesMicrosoft Office10 Kommentare

Hallo zusammen, ich habe in einer Accessdatenbank mit zugehörigem Formular ein Feld ID, welches vom Datentyp Autowert ist und ...

Microsoft Office
Access 2013, aus einem Formular mit Hauptnummer eine Anzahl Formulare mit fortlaufender Unternummer erzeugen
Frage von MuseumMLMicrosoft Office

Hallo liebe Freunde, habe eine Reihe von Foren durchgeforstet ohne fündig zu werden In meinem Zeichnungsarchiv sind Zeichnungen in ...

Batch & Shell
Batch, Suche der Nummer in der Datei!
Frage von SportiiiBatch & Shell8 Kommentare

Hallo, mir wurde bereits durch jodel32 sehr geholfen es fehlt nur ein kleines Stück: Folgendes: Wenn ich eine Nummer ...

Neue Wissensbeiträge
Sicherheits-Tools

Achtung: Sicherheitslücke im FortiClient VPN-Client

Tipp von kgborn vor 11 MinutenSicherheits-Tools

Ich weiß nicht, wie häufig die NextGeneration Endpoint Protection-Lösung von Fortinet in deutschen Unternehmen eingesetzt wird. An dieser Stelle ...

Internet

USA: Die FCC schaff die Netzneutralität ab

Information von Frank vor 14 StundenInternet2 Kommentare

Jetzt beschädigt US-Präsident Donald Trump auch noch das Internet. Der neu eingesetzte FCC-Chef Ajit Pai ist bekannter Gegner einer ...

DSL, VDSL

ALL-BM200VDSL2V - Neues VDSL-Modem mit Vectoring von Allnet

Information von Lochkartenstanzer vor 18 StundenDSL, VDSL1 Kommentar

Moin, Falls jemand eine Alternative zu dem draytek sucht: Gruß lks

Windows 10

Microsoft bestätigt DMA-Policy-Problem in Win10 v1709

Information von DerWoWusste vor 18 StundenWindows 10

Wer sein Gerät mit der DMA-Policy absichert, bekommt evtl. Hardwareprobleme in v1709 von Win10. Warum? Weil v1709 endlich "richtig" ...

Heiß diskutierte Inhalte
Netzwerkmanagement
Mehrere Netzwerkadapter in einem PC zu einem Switch zusammenfügen
Frage von prodriveNetzwerkmanagement21 Kommentare

Hallo zusammen Vorweg, ich konnte schon einige IT-Probleme mit Hilfe dieses Forums lösen. Wirklich klasse hier! Doch für das ...

Hardware
Links klick bei Maus funktioniert nicht
gelöst Frage von Pablu23Hardware16 Kommentare

Hallo erstmal. Ich habe ein Problem mit meiner relativ alten maus jedoch denke ich nicht das es an der ...

Windows Server
Anmeldung direkt am DC nicht möglich
Frage von ThomasGrWindows Server16 Kommentare

Hallo, ich habe bei unserem Server 2016 Standard ein Problem. Keine Ahnung wie das auf einmal passiert ist. Ich ...

TK-Netze & Geräte
VPN-fähige IP-Telefone
Frage von the-buccaneerTK-Netze & Geräte14 Kommentare

Hi! Weiss noch jemand ein VPN-fähiges IP-Telefon mit dem man z.B. einen Heimarbeitsplatz gesichert anbinden könnte? Habe nur einen ...