MS-Office-Forum

Zurück   MS-Office-Forum > Microsoft Access & Datenbanken > Microsoft Access
Registrieren Forum Hilfe Alle Foren als gelesen markieren

Banner und Co.

Antworten
Ads
Themen-Optionen Ansicht
Alt 29.01.2015, 04:38   #1
NorbertK
MOF User
MOF User
Standard Acc2003 - Positionen hochzählen

Hallo allerseits,

ich mal wieder...

Ich habe ein Unterformular für die Objektverwaltung. Auf diesem Unterformular befinden sich u.a. die folgenden Felder:
Firma_ID
ObjektNr

Jetzt möchte ich den Wert ObjektNr wenn man bei einer Firma ein Objekt anlegt automatisch von 1 ab hochzählen lassen.
Das sollte sich doch eigentlich mit DMax machen lassen!?
Hier meine Funktion:
Code:

If Nz(Me!ObjektNr, "") = 0 Then
Me!ObjektNr = Nz(DMax("ObjektNr", "Objekt", "Forms![Hauptformular]![Firma_ID] = '" & Me!Firma_ID & "'"), 0) + 1
End If
Ich prüfe also zunächst, ob der Wert für ObjektNr 0 ist (das ist er auch bei einem neuen Objekt, da der Standartwert aus der Tabelle eine 0 vorgibt.
Wenn ich die Funktion DMax richtig verstanden habe, sind die Parameter Wert, Tabelle und Kriterium.
Also ObjektNr in der Tabelle Objekt, wenn die Firma_ID mit der Firma_ID des Hauptformulars übereinstimmt.

Der gesamte Code sieht so aus:
Code:

Private Sub comboSachgebietKuerzel_AfterUpdate()
On Error GoTo Err_comboSachgebietKuerzel_AfterUpdate

    Dim lng As Long
    lng = Me!Objekt_ID

    Me.Painting = False
    Forms!Hauptformular!formU_Objekt.Form.Requery
    Me.Recordset.FindFirst "Objekt_ID=" & lng
    Me.Painting = True
    If Nz(Me!ObjektNr, "") = 0 Then
        Me!ObjektNr = Nz(DMax("ObjektNr", "Objekt", "Forms![Hauptformular]![Firma_ID] = '" & Me!Firma_ID & "'"), 0) + 1
    End If
    
Exit_comboSachgebietKuerzel_AfterUpdate:
    Exit Sub

Err_comboSachgebietKuerzel_AfterUpdate:
    MsgBox Err.Description
    Resume Exit_comboSachgebietKuerzel_AfterUpdate

End Sub
Aus meiner Sicht müsste also bei einem Wechsel der Firmen im Hauptformular jedes neue Objekt wieder bei 1 beginnen (wenn es noch keines für diese Firma gab) oder eben darauf aufbauend hochzählen.

Nun habe ich aber bei Firma1 19 Objekte angelegt. Bei Firma2 lege ich mit dem obigen Code ein neues (das erste) Objekt an und erhalte die ObjektNr 20 (anstatt der erwarteten 1).

Wo ist mein Denkfehler?

Tausend Dank für Eure Hilfe!

__________________

Freundliche Grüße aus Bagband im wunderschönen Ostfriesland

Norbert
NorbertK ist offline  
verlinken auf Del.icio.us Diese Seite zu Mister Wong hinzufügen
Antworten Auf Beitrag antworten
Alt 29.01.2015, 05:00   #2
hcscherzer
MOF Guru
MOF Guru
Standard

Du musst ein Kriterium bezogen auf die Tabelle bilden, in der Du den MaxWert suchst (und nicht auf den Wert im Formular):
Code:

       Me!ObjektNr = Nz(DMax("ObjektNr", "Objekt", "Firma_ID = '" & Forms!Hauptformular!Firma_ID & "'"), 0) + 1

__________________

Freundlichen Gruß
Hans-Christian
-----------------------------------------
Oft erwünscht, selten beachtet: nach Erledigung des Problems den Thread als erledigt zu markieren
-----------------------------------------
Ich möchte nur Mitglied in einem Verein sein, der Leute wie mich nicht als Mitglied aufnimmt (Groucho Marx).
-----------------------------------------
Ab sofort regelmässig: MOF Stammtisch in Bremen. Näheres hier.
hcscherzer ist offline  
verlinken auf Del.icio.us Diese Seite zu Mister Wong hinzufügen
Antworten Auf Beitrag antworten
Alt 29.01.2015, 05:27   #3
NorbertK
Threadstarter Threadstarter
MOF User
MOF User
Standard

Hallo Hans-Christian,

wenn ich den Code so wie von Dir vorgeschlagen umsetze:
Code:

Me!ObjektNr = Nz(DMax("ObjektNr", "Objekt", "Firma_ID = '" & Forms!Hauptformular!Firma_ID & "'"), 0) + 1
bekomme ich die Fehlermeldung:

Zitat:

Datentypen in Kriterienausdruck unverträglich.

Ich nehme an, das bezieht sich auf die Firma_ID; die ist aber in der Tabelle Objekt Zahl, Long Integer und in der Tabelle Firmendaten (aus der das Feld im Hauptformular stammt) ebenfalls Zahl, Long Integer (allerdings Indiziert, ohne Duplikate).

Was mache ich falsch?

Hab es selbst gefunden! So muss der Code aussehen (ich hatte auf Textinhalt formatiert und nicht auf eine Zahl:
Code:

Me!ObjektNr = Nz(DMax("ObjektNr", "Objekt", "Firma_ID =" & Me!Firma_ID), 0) + 1
Ich danke Dir herzlich für die Gedankenstütze!

__________________

Freundliche Grüße aus Bagband im wunderschönen Ostfriesland

Norbert

Geändert von NorbertK (29.01.2015 um 06:00 Uhr).
NorbertK ist offline  
verlinken auf Del.icio.us Diese Seite zu Mister Wong hinzufügen
Antworten Auf Beitrag antworten
Ads
Antworten


Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Besucher: 1)
 
Themen-Optionen
Ansicht

Forumregeln
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge anzufügen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.

vB Code ist An.
Smileys sind An.
[IMG] Code ist An.
HTML-Code ist An.
Gehe zu


Alle Zeitangaben in WEZ +1. Es ist jetzt 21:20 Uhr.


Partner und Co.
Access-Paradies -Alles rund um die Datenbank Microsoft Access -Code -Programme-Tools -Tipps   Kostenlose Tipps & Tricks, Downloads und Programme   www.kulpa-online.com - Tipps - Tricks - Tutorials - Meinungen - Downloads uvm...   vb@rchiv · Willkommen in der Welt der VB Programmierung   Access-Garhammer - Hier finden Sie jede Menge Beispiel-Datenbanken zu Access und mehr ...   mcseboard.de   Die Top Seite für Excel-VBA-Makros uvm.

Powered by: vBulletin Version 3.6.2 (Deutsch)
Copyright ©2000 - 2018, Jelsoft Enterprises Ltd.

Copyright ©2000-2018 MS-Office-Forum. Alle Rechte vorbehalten.
Copyright ©Design: Manuela Kulpa ©Rechte: Günter Kramer
Eine Verwendung der Inhalte in anderen Publikationen, auch auszugsweise,
ist ohne ausdrückliche Zustimmung der Autoren nicht gestattet.