Announcement

Collapse
No announcement yet.

Automatische Nummernvergabe

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • Automatische Nummernvergabe

    Hallo,

    kann mir bitte jemand sagen, was ich machen muss, dass jeweils beim Erstellen eines neuen Datensatzes automatisch einem Feld eine bestimmt neue Nummer zugeweist wird. Die Nummer soll mit "GQM" beginnen, dann "07" für das Jahr 2007 folgen und dann "001". (bsp. GQM07001, GQM07002...)

    Die Access-Datenbank soll über einen SQL-Server laufen und von mehreren Benutzern gleichzeitig benutzt werden können.

    Ich habe die Frage schon mal gestellt, aber da hat mir irgentwie keiner so richtig weiterhelfen können. Ich hab dann mal mit nem "couter" usw versucht aber des hat bei mir überhaupt nicht funktioniert. Ein weiteres Problem ist das bereits ca 120 Datensätze in der Datenbank stehen und somit der Zähler nicht bei 1 anfängt.
    Vielleicht muss ich auch dazu sagen, dass ich MS Access07 hab und das Beispiel, das ich hatte, mit dem Couter in Access00 war.

    Was soll ich nun machen????


    Schon mal danke für die Hilfe.

    Tobias
    Gruß Tobias

  • #2
    Hallo Tobias,

    was nutzt Du den nun als DBMS, Access oder MS SQL Server?
    Wie stellts Du Dir das vor, wenn wir auf einmal 2008 haben? Hängt das vom Systemdatum ab oder von einem Datumswert im Datensatz?

    Olaf
    Olaf Helper

    <Blog> <Xing>
    * cogito ergo sum * errare humanum est * quote erat demonstrandum *
    Wenn ich denke, ist das ein Fehler und das beweise ich täglich

    Comment


    • #3
      Hi O.Helper,

      ich verwende Access 07.

      Es soll vom Systemdatum abhängen. Wenn des Jahr 2008 ist soll die Nummer "GQM08001, GQM08002,..." entstehen.
      Gruß Tobias

      Comment


      • #4
        Hallo Tobias,

        schade, in Access geht das nicht automatisch als Standdard-Wert beim Tabellenentwurf.
        Da musst Du den Wert halt beim Füllen der Daten vom Programm her vorgeben.

        Olaf
        Olaf Helper

        <Blog> <Xing>
        * cogito ergo sum * errare humanum est * quote erat demonstrandum *
        Wenn ich denke, ist das ein Fehler und das beweise ich täglich

        Comment


        • #5
          hallo,

          ich habs jetzt so gelöst:

          Code:
          Private Sub Befehl37_Click()
          
          Dim rsInTable As New ADODB.Recordset
          Dim OldGQMNr As String
          Dim NewGQMNR As String
          Dim LastGQMNR As String
          Dim YearGQMNR As Byte
          Dim ActualYear As Byte
          Dim ReturnValue As String
          
          
          ActualYear = Mid(CStr(Year(Now())), 3)
          
          
          Set rsInTable = New ADODB.Recordset                        ' Recordset-Objekt instanziieren
          rsInTable.ActiveConnection = CurrentProject.Connection     ' Connection zuweisen
          rsInTable.CursorType = adOpenDynamic                         ' Zugriffsmodus für DB-Cursor
          rsInTable.LockType = adLockOptimistic
          rsInTable.Open "SELECT Last(Stammdaten.[Stammdaten-ID]) AS [Stammdaten-ID], Last(Stammdaten.[GQM-Nr]) AS [GQM-Nr] " & _
                          "FROM Stammdaten " & _
                          "ORDER BY Last(Stammdaten.[GQM-Nr]);"
          OldGQMNr = [rsInTable]![GQM-Nr]
          If IsNull(OldGQMNr) Then
                      Me.QM_Nr = "Fehler"
              Exit Sub
          Else
          LastGQMNR = Mid(OldGQMNr, 6)
          YearGQMNR = Mid(OldGQMNr, 4, 2)
          
                      If ActualYear = YearGQMNR Then 'Neuer Datensatz ist im gleichen Jahr -> Nummer + 1
                      ReturnValue = "GQM" & Mid((YearGQMNR + 100), 2) & Mid((LastGQMNR + 1000 + 1), 2)
                      Else
                      ReturnValue = "GQM" & Mid((ActualYear + 100), 2) & "001"
                      End If
                      
                      Me.QM_Nr = ReturnValue
          
          End If
          
          
          rsInTable.Close
          Set rsInTable = Nothing
          End Sub
          Gruß Tobias

          Comment

          Working...
          X