Check alle échte Black Friday-deals Ook zo moe van nepaanbiedingen? Wij laten alleen échte deals zien

[MS Access 2003/2007]

Pagina: 1
Acties:

  • YellowOnline
  • Registratie: Januari 2005
  • Laatst online: 28-03-2023

YellowOnline

BEATI PAVPERES SPIRITV

Topicstarter
(versie maakt niet echt uit)

Ik ben al de hele avond aan het zweten om de logica van de naamgeving (ADS) in ons systeem te automatiseren. De systemen krijgen bij ons een naam volgens de volgende regel (niet mijn idee):

X2XXX0000XXXX

Waarbij: X2 slaat op het type (tower/laptop/server), XXX op het gebouw, 0000 op een volgnummer en - hier komt het probleem - de laatste XXXX op de drie eerste letters van de achternaam en de eerste letter van de voornaam.

Behalve: voor namen die beginnen met 'Van', "De", "Op", "Der",...

Voorbeelden (fictieve namen):
  • Zager Willem -> zagw
  • Van Brussel Henk -> vbrh
  • Vanbrussel Marc -> vanm
  • Op De Beeck Els -> odbe
  • Opdebeeck Rita -> opdr
  • Van Der Meers Carine -> vdmc
  • Lecompte Rene -> lecr
  • Le Compte Aurelie -> lcoa
  • ...
Hoe krijg ik dit in godsnaam in een query? De naamafkorting buiten beschouwing gelaten was alles nog eenvoudig:

code:
1
sname: [type] & "" & [build] & "" & Format([id],"0000") & "" & StrConv(left([lname],3),1) & "" & StrConv(left([fname],1),1)

(waarbij X2 = [type], XXX = [build]; 0000 = [id] en XXXX eerdergenoemde samentrekking van [lname] (last name) en [fname] (first name) is.)

Het eindresultaat is nu natuurlijk iets zoals S2LAX1105DEMG voor een server in Los Angeles van Gustaaf Demey.

Ik krijg het alleen al niet voor elkaar om af te korten rekening houdend met de uitzonderingen :(

Heeft iemand nog ideeën of zit er niets anders op dan een snelcursus VBA te volgen?

Edit: Oh fijn, ik ben de helft van de titel vergeten. Is er een lieve mod die er "puzzelen met strings" aan toe kan voegen? :+

[ Voor 19% gewijzigd door YellowOnline op 29-06-2009 23:52 . Reden: Hoezo een titel? ]


Verwijderd

Wat een systeem...Lijkt me ook heel lastig in één algoritme te persen. Je afkortingen mogen max. 4 letters hebben; wat ga je doen met namen als "Van de Ven Jan Willem", of "Van der Veen-Op De Beeck Anne Marie"?
Maw: hoe ga je het algoritme vertellen wat de achternaam is en wat de voornaam, en welke letters bij dit soort combinaties moeten worden meegepakt en welke niet?
Verder weet ik niet of het volgnummer dat ondervangt, maar het lijkt me ook niet echt handig als je deze methodiek op de namen "Buist Willem" en "Buizerd Wilma" gaat toepassen, als beide personen eenzelfde type computer hebben en in hetzelfde gebouw werken.

[ Voor 36% gewijzigd door Verwijderd op 29-06-2009 22:22 ]


  • YellowOnline
  • Registratie: Januari 2005
  • Laatst online: 28-03-2023

YellowOnline

BEATI PAVPERES SPIRITV

Topicstarter
Verwijderd schreef op maandag 29 juni 2009 @ 22:20:
Wat een systeem...Lijkt me ook heel lastig in één algoritme te persen. Je afkortingen mogen max. 4 letters hebben; wat ga je doen met namen als "Van de Ven Jan Willem", of "Van der Veen-Op De Beeck Anne Marie"?
Maw: hoe ga je het algoritme vertellen wat de achternaam is en wat de voornaam, en welke letters bij dit soort combinaties moeten worden meegepakt en welke niet?
Verder weet ik niet of het volgnummer dat ondervangt, maar het lijkt me ook niet echt handig als je deze methodiek op de namen "Buist Willem" en "Buizerd Wilma" gaat toepassen, als beide personen eenzelfde type computer hebben en in hetzelfde gebouw werken.
Ik ben geen fan van het systeem... blame the network admin :/ Bij samengestelde familienamen wordt de 2e naam weggelaten in het systeem (sowieso een zeldzaamheid in België), 2e voornamen zijn geen probleem aangezien enkel de eerste letter van de eerste voornaam meespeelt. Het is een bestaand systeem voor ... 25 000 gebruikers :+ De unieke ID zorgt er voor dat twee dezelfde namen in hetzelfde gebouw geen probleem zijn voor ADS. Momenteel wordt dit bij het creëren van nieuwe Pcs handmatig in een excelbestand bijgehouden en worden er (veel) fouten gemaakt en bepaalde informatie (datum & technieker) zelden ingevuld. Vandaar dat ik een en ander wil automatiseren (datum is NOW en technieker is de ingelogde domeinnaam).

[ Voor 14% gewijzigd door YellowOnline op 29-06-2009 22:36 ]


  • pedorus
  • Registratie: Januari 2008
  • Niet online
Ik ben het ermee eens dat deze naamgeving beroerd is; het lijkt wel bedoeld voor computers in plaats van voor mensen. :)
Afgezien daarvan is het niet zo moeilijk. Weet je wat, ik match je wel even:
Visual Basic:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
Public Function shortName(fullName As String) As String
    Dim parts() As String, last As Integer, i As Integer
    parts = Split(fullName, " ")
    last = UBound(parts)
    If last < 1 Or last > 3 Then
        Err.Raise vbObjectError + 968722, "shortName", _
            "The name " & fullName & " cannot be made shorter."
    End If
    For i = 0 To last - 2
        shortName = shortName + Left(parts(i), 1)
    Next
    shortName = shortName + Left(parts(last - 1), 4 - last)
    shortName = shortName + Left(parts(last), 1)
    shortName = LCase(shortName)
End Function

Vitamine D tekorten in Nederland | Dodelijk coronaforum gesloten


  • YellowOnline
  • Registratie: Januari 2005
  • Laatst online: 28-03-2023

YellowOnline

BEATI PAVPERES SPIRITV

Topicstarter
pedorus schreef op maandag 29 juni 2009 @ 23:12:
Ik ben het ermee eens dat deze naamgeving beroerd is; het lijkt wel bedoeld voor computers in plaats van voor mensen. :)
Afgezien daarvan is het niet zo moeilijk. Weet je wat, ik match je wel even:
Visual Basic:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
Public Function shortName(fullName As String) As String
    Dim parts() As String, last As Integer, i As Integer
    parts = Split(fullName, " ")
    last = UBound(parts)
    If last < 1 Or last > 3 Then
        Err.Raise vbObjectError + 968722, "shortName", _
            "The name " & fullName & " cannot be made shorter."
    End If
    For i = 0 To last - 2
        shortName = shortName + Left(parts(i), 1)
    Next
    shortName = shortName + Left(parts(last - 1), 4 - last)
    shortName = shortName + Left(parts(last), 1)
    shortName = LCase(shortName)
End Function
Het gaat idd over computernamen in ADS ;)

Oeps, ik had intussen zelf de eenvoudige versie met Left uitgedokterd (had het verkeerd begrepen toen ik er naar keek deze middag blijkbaar), maar ik ga zometeen de jouwe eens proberen.

Edit:
OMG, perfect. Karma+ voor jou _/-\o_ *O* Ik ga gewoon de error nog eens testen (een naam zoals Aa, Joost bijvoorbeeld) Meh, dat wordt gewoon aaj. Ook goed voor mij. Nogmaals bedankt!

[ Voor 8% gewijzigd door YellowOnline op 29-06-2009 23:38 ]


  • pedorus
  • Registratie: Januari 2008
  • Niet online
Ja, blijkbaar is er niet zo erg gedacht aan buitenlandse namen. Want wat doen jullie nu bij Ho, Li, Ye of Ng? ;)

[ Voor 7% gewijzigd door pedorus op 30-06-2009 00:00 ]

Vitamine D tekorten in Nederland | Dodelijk coronaforum gesloten


Verwijderd

Of "O" - komt veel voor in Cambodja, heb ik eens begrepen ;)
Pagina: 1