Neuigkeiten:

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

Mobiles Hauptmenü

Größte zahl die Mit 0 beginnt

Begonnen von mmaatouk, Juli 30, 2015, 11:42:58

⏪ vorheriges - nächstes ⏩

mmaatouk

Hallo

Ich habe ein spalte von zahlen und möchte durch ein Funktion VBA die größte(Maximal) zahl suchen die mit 0 beginen und in einem Textfeld [invnr] ausgeben (String) und muss so aussehen dann (M- und die zahl )


LG

MaggieMay

Hi,

Zahlen beginnen nicht mit 0, das könnte dann höchstens ein Text sein.

Aber mir scheint, du beginnst hier zum x-ten Mal mit einer bereits anderorts ausdiskutierten Frage...   ???
Freundliche Grüße
MaggieMay

mmaatouk

#2
ich möchte die größte zahl suchen in eine Spalte und tut mir leid wegen mein nicht gute erklärung

MaggieMay

Du kannst den Präfix "M-" über das Format hinzufügen. Wenn sich der Wert aus zwei Tabellenfeldern zusammensetzt, dann kannst du die in einer Abfrage zu einem Feld zusammenführen. Um dir die für dich richtige Lösung vorschlagen zu können, werden aber weitere Details benötigt.

Wie sieht die Tabellenstruktur aus?
Wo wird die neue InvNr benötigt?
Was entscheidet, welches Präfix ("M-" oder ???) genommen werden soll?
Beschreibe bitte auch den Ablauf, wie diese Situation entsteht. Welche Ereignisse spielen dabei eine Rolle?
Wir sprechen von einem Formular - oder?

Eine kleine Beispiel-DB wäre wohl hilfreich.
Freundliche Grüße
MaggieMay

mmaatouk

Inv-Nr ist ein Tebellen feld die so aussieht ( M-xxxx) von M-0001 bis jetzt 2345 gerät
und neue Inv-Nr wir benötigt bei neue gerät die in einem Formulare ausgefüllt wird aber muss die Inv-Nr automatisch ausgegeben mit achten aus Filiale
M-0xxx für Filiale 10
M-1xxx für Filiale 11
M-2xxx für Filiale 12

und bei ausfüllung wird die Filiale durch kombinationsFeld gewählt dann muss die neue Inv-Nr ausgegeben  die für gewählte Filiale gehört
bei 10 muss mit M-0 beginnt und weiter 3 zahlen
bei 11 mus  mit M-1 beginnt und witer 3 zahlen
wenn 11 zum beispiel gewählt dann die 3 zahlen müssen die größte Inv-Nr die mit M-1 beginnt +1  sein

MaggieMay

Es handelt sich bei dem Datenfeld also um einen Text und nicht um eine Zahl.

Was ist denn nun das konkrete auslösende Ereignis zur Ermittlung einer InvNr?
Der Code dazu könnte folgendermaßen aussehen:
Dim strFilKz As String, strNeueInvNr As String
strFilKz = "M-" & Right(Me!cboFiliale, 1)
strNeueInvNr = strFilKz & Format(NZ(DMax("Right(InvNR, 3)", "tabelle", "Left(InvNr, 3)='" & strFilKz & "'"),0) + 1, "000")

Unter der Annahme dass die Auswahl der Filiale über ein Kombifeld namens "cboFiliale" erfolgt.
Freundliche Grüße
MaggieMay

MzKlMu

Hallo,
das hatten wir doch schon mal:
http://www.access-o-mania.de/forum/index.php?topic=20600.0

Ich dachte, es wäre inzwischen klar, dass nur die Lfdnr gespeichert werden sollte. Und da kann man die nächste Nummer einfach mit der Maxfunktion und einem Kriterium ermitteln. Und wenn die Filiale in dem Datensatz als Fremdschlüssel gespeichert ist, kann man die Inv Nr einfach zusammensetzen. Wie in obigem Link auch schon vorgeschlagen.
Gruß Klaus

mmaatouk

aber diese Lösung ist für meine Datenbank gegeignet deswegen Erkläre ich nochmal

mmaatouk

#8
Public Function ZahlenFinden(InvNr As String)

    Dim strFilKz As String
    strNeueInvNr As String
   
    strFilKz = "M-" & Right(Me!Kombo_NB, 1)
    strNeueInvNr = strFilKz & Format(Nz(DMax("Right(InvNr, 3)", "tbl_Geraete", "Left(InvNr, 3)='" & strFilKz & "'"), 0) + 1, "000")
End Function

Ich habe DIeses Function jetzt
und ich habe die aufgerufen so

Private Sub Kombo_NB_AfterUpdate()
If Nz(Me!Kombo_NB, 0) = True Then
Me!InvNr = ZahlenFinden([Inv-Nr])
End If
End Sub

aber zeigt mir nichts noch
wo kann das Problem Liegen
InvNr ist Textfeld name in Formular
[Inv-Nr] ist Textfeld name in Abfrage

MaggieMay

#9
ZitatIf Nz(Me!Kombo_NB, 0) = True Then
Die Prüfung ist ungeeignet, versuche es mal hiermit:If Nz(Me!Kombo_NB, 0) <> 0 Then
"NB" steht vermutlich für "Filiale"? ;-)

PS:
Die Funktion gibt ja gar nichts zurück, da macht die Zuweisung keinen Sinn. Anstelle einer nicht vorhandenen Inv-Nr solltest du lieber den Präfix übergeben.
Public Function ZahlenFinden(FilKz As String)
    ZahlenFinden = FilKz & Format(Nz(DMax("Right(InvNr, 3)", "tbl_Geraete", "Left(InvNr, 3)='" & FilKz & "'"), 0) + 1, "000")
End Function

Private Sub Kombo_NB_AfterUpdate()
    If Nz(Me!Kombo_NB, 0) <> 0 Then
        Me!InvNr = ZahlenFinden("M-" & Right(Me!Kombo_NB, 1))
    End If
End Sub


PS-2:
Zitat[Inv-Nr] ist Textfeld name in Abfrage
Nimm den Bindestrich aus dem Feldnamen raus. Du solltest außerdem die Feldnamen einheitlich vergeben, letztlich verwirrst du dich damit nur selbst.
Freundliche Grüße
MaggieMay