Access-o-Mania

Access-Forum (Deutsch/German) => Formular => Thema gestartet von: mmaatouk am Juli 30, 2015, 11:42:58

Titel: Größte zahl die Mit 0 beginnt
Beitrag von: mmaatouk am Juli 30, 2015, 11:42:58
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
Titel: Re: Größte zahl die Mit 0 beginnt
Beitrag von: MaggieMay am Juli 30, 2015, 12:19:35
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...   ???
Titel: Re: Größte zahl die Mit 0 beginnt
Beitrag von: mmaatouk am Juli 30, 2015, 12:25:52
ich möchte die größte zahl suchen in eine Spalte und tut mir leid wegen mein nicht gute erklärung
Titel: Re: Größte zahl die Mit 0 beginnt
Beitrag von: MaggieMay am Juli 30, 2015, 12:38:00
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.
Titel: Re: Größte zahl die Mit 0 beginnt
Beitrag von: mmaatouk am Juli 30, 2015, 12:48:49
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
Titel: Re: Größte zahl die Mit 0 beginnt
Beitrag von: MaggieMay am Juli 30, 2015, 13:05:49
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.
Titel: Re: Größte zahl die Mit 0 beginnt
Beitrag von: MzKlMu am Juli 30, 2015, 13:21:02
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.
Titel: Re: Größte zahl die Mit 0 beginnt
Beitrag von: mmaatouk am Juli 30, 2015, 13:22:24
aber diese Lösung ist für meine Datenbank gegeignet deswegen Erkläre ich nochmal
Titel: Re: Größte zahl die Mit 0 beginnt
Beitrag von: mmaatouk am Juli 30, 2015, 14:08:22
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
Titel: Re: Größte zahl die Mit 0 beginnt
Beitrag von: MaggieMay am Juli 30, 2015, 16:55:43
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.