Vraag : De code van de behoefte VB aan Autonumber een Alfanumeriek gebied…

Hello Deskundigen! geplakte

I am!   Ik kan niet schijnen om precies te vinden wat de behoefte van I van de oplossingen van EE (of iets die ik in wat kan omzetten de behoefte van I op mijn beperkte kennis van codage VB) baseerde - vergt I zo uw deskundigheid!  

I zou de Gebruiker willen toestaan om een het Indienen Type van een trekkracht onderaan menu Field1 (of FileIDType_A in de Code/het Beeld te selecteren hieronder) en code te hebben die VB Field2 (TempDocID in de Code/het Beeld hieronder) met een prefix van het het Indienen Type bevolken de gebruiker PLUS het volgende beschikbare aantal voor dat prefix.

wordt geselecteerd bijvoorbeeld:

If de Gebruiker koos „Correspondentie“ van het het Indienen pull-down van het Type menu (FileIDType_A), dan zou het gebied „TempDocID“ C00001 tonen als het het 1st aantal in de categorie OF C00002 als het het 2de aantal was, etc.

If de Gebruiker „Document“ van het het Indienen pull-down van het Type menu koos, dan „TempDocID D00001.

Where zou terugkeren ik ben geplakt ben dat de code die ik houdt terugkerend „00001“ en niet verhoogt heb gebouwd.  Een andere kwestie die ik heb willen om vermijden is: C00001, D00002, enz. - dat de prefix wordt erkend en tellen voor elke prefix afzonderlijk is (b.v. C00001, C00002, D00001, D00002). die mogelijke

Is??  Ik heb twee Codes vastgemaakt ik waarmee heb gewerkt.  Code1 is dichtst aan wat de behoefte van I.  Code2 is vrij ruw - ik begon enkel op het en omvat voor het geval dat het gemakkelijker is voor u om het in wat om te zetten de behoefte van I (het is slechts opstelling voor één prefix).  Ik heb ook de Mening van het Ontwerp van mijn vorm aan hopelijk help.

THANK U! vastgemaakt!
" codeBody "
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:
31:
32:
33:
34:
35:
36:
37:
38:
39:
40:
41:
42:
43:
44:
45:
46:
47:
48:
49:
50:
51:
52:
53:
54:
55:
56:
57:
58:
59:
60:
61:
62:
63:
64:
65:
66:
67:
68:
69:
70:
71:
72:
73:
74:
75:
76:
77:
78:
79:
80:
81:
82:
83:
CODE1

Privé Sub - dossier _TypeA_AfterUpdate ()
    
    Schemerige FileType als Koord
    Schemerige MaxVal als Koord
    
    FileType = me! FileIDType_A

    Selecteer FileType van het Geval
        Geval „Correspondentie“
            MaxVal = DMax („[TempDocID]“, „T_DocList“,“ [In_PR_AR] =2 ")
            Me! TempDocID = „C“ & Formaat (Juiste Val ((MaxVal, 5)) + 1, „00000“)
        Geval „Document“
            MaxVal = DMax („[TempDocID]“, „T_DocList“,“ [In_PR_AR] =2 ")
            Me! TempDocID = „D“ & Formaat (Juiste Val ((MaxVal, 5)) + 1, „00000“)
        Beoordeling van het geval de „ENV“
            MaxVal = DMax („[TempDocID]“, „T_DocList“,“ [In_PR_AR] =2 ")
            Me! TempDocID = „EA“ & Formaat (Juiste Val ((MaxVal, 5)) + 1, „00000“)
        Geval „Kaart/Grafisch“
            MaxVal = DMax („[TempDocID]“, „T_DocList“,“ [In_PR_AR] =2 ")
            Me! TempDocID = „M“ & Formaat (Juiste Val ((MaxVal, 5)) + 1, „00000“)
        Geval de „Betrokkenheid van het Publiek/van het Bureau“
            MaxVal = DMax („[TempDocID]“, „T_DocList“,“ [In_PR_AR] =2 ")
            Me! TempDocID = „P“ & Formaat (Juiste Val ((MaxVal, 5)) + 1, „00000“)
        Geval de „Bibliotheek van de Verwijzing“
            MaxVal = DMax („[TempDocID]“, „T_DocList“,“ [In_PR_AR] =2 ")
            Me! TempDocID = „R“ & Formaat (Juiste Val ((MaxVal, 5)) + 1, „00000“)
        Geval anders
            Annuleer = Waar
    Beëindig Uitgezocht

Beëindig Sub


CODE2

Privé Sub - dossier _TypeA_AfterUpdate ()
    
    Schemerige OB als DAO.Database
    Schemerige rst als DAO.Recordset
    Schemerige lngCntr zoals lang
    Schemerige intRetry als Geheel
    Schemerige intNum als Geheel, intA als Geheel, intB als Geheel
    Schemerige strANum als Koord

    Op Fout GoTo ErrorAlphaNumGenerate
    Als IsNull (File_TypeA) toen
        Annuleer = Waar
    Anders
    Vastgesteld OB = CurrentDb ()
    Reeks rst = DB.OpenRecordset („T_Counter“, DB_OPEN_DYNASET)
    rst.MoveFirst
    rst. Geef uit
    rst! Waarde = rst! Waarde + 1
    rst. Update
    lngCntr = CLng (rst! Waarde) - 1
    intNum = lngCntr Mod. 1000
    intA = (lngCntr \ 1000) Mod. 26
    intB = (lngCntr \ 1000) \ 26

    strANum = Chr$ (intB + 65) & Chr$ (intA + 65) & Format$ (intNum, „0000“)
    AlphaNumGenerate = strANum
    Me! TempDocID = strANum

ExitAlphaNumGenerate:
    Sub van de uitgang

ErrorAlphaNumGenerate:
    Als me = 3188 toen vergis
        intRetry = intRetry + 1
        Als intRetry < 100 toen
            Hervat
        Anders
            MsgBox Error$, 48, „Een andere gebruiker die dit aantal uitgeven“
            Hervat ExitAlphaNumGenerate
        Beëindig als
    Anders
        MsgBox Str$ (vergis me) & „„& Error$, 48, „Probleem die Aantal produceren“
        Hervat ExitAlphaNumGenerate
    Beëindig als
Beëindig als
Beëindig Sub

Antwoord : De code van de behoefte VB aan Autonumber een Alfanumeriek gebied…

Ik testte het niet… Ik probeerde enkel om erop te wijzen dat u zowel uw originele voorwaarde als 2de voorwaarde nodig hebt.

dmax (iets, iets, „condition1 EN condition2“)
Andere oplossingen  
 
programming4us programming4us