Toon posts:

VB integer optie??

Pagina: 1
Acties:

Verwijderd

Topicstarter
Ik moet voor een applicatie een uniek ID genereren. Van 1 t/m 99
Het probleem is alleen dat ik de notatie wil hebben van twee digits.

Als ik for voor i een integer heb b.v. 2.
Kan ik dit met een bestaande v.b. functie omzetten naar 02.

Format(i, "##") werkt niet!

Iemand :?

Verwijderd

zelf een functie maken, die er aan de linkerkant nullen aan plakt, tot de gewenste functie :?

  • mulder
  • Registratie: Augustus 2001
  • Laatst online: 08:26

mulder

ik spuug op het trottoir

Niet als het een integer is. Een string wel. Als het je er omgaat dat het een unqiue id is, moet je eens naar GUIDs kijken.

oogjes open, snaveltjes dicht


Verwijderd

Topicstarter
El Mundo,

Het is wel een integer maar ik zet hem inderd, om in een string.

zie source:
Public Function GetUniqueID(sDeviceType As String) As String
Dim i, iSame As Integer
Dim First As String
Dim sNewDevice As String
Dim Device As clsDevice

'Bepaal de eerste letter van het device-id
First = Switch(sDeviceType = "Actuator", "A", sDeviceType = "Sensor", "S", sDeviceType = "Timer", "T")
i = 1
iSame = 1
'Totdat er een unieke device-id gemaakt is genereren we telkens een nieuw device-id
While iSame = 1
'Maak het eerste device-id met de eerste letter + en een getal
sNewDevice = First + LTrim(Str(i))
'Ga na of het device al bestaat in de collectie
For Each Device In DeviceCol
'Als het huidige device een zelfde device-id heeft dan...
If Device.DeviceID = sNewDevice Then
iSame = 2
End If
Next
iSame = iSame - 1
'Verhoog het getalgedeelte van het device-id met 1
i = i + 1
Wend
'Retourneer het nieuwe nog niet bestaande device-id
GetUniqueID = sNewDevice
End Function

Waar staan deze GUID dan?

Verwijderd

Topicstarter
Oke.... ik heb er maar zo opgelost!

Dim sSecond As String
sSecond = IIf(i < 10, Str(0) + LTrim(Str(i)), LTrim(Str(i)))

Bedankt voor de moeite!
Mag gesloten worden...

  • mulder
  • Registratie: Augustus 2001
  • Laatst online: 08:26

mulder

ik spuug op het trottoir

Over GUIDs kun je wel wat in MSDN vinden. Deze zijn als string te gebruiken. Misschien iets te pittig.

Voor je eerste vraag:
code:
1
2
3
4
5
if i<10 then
  sNewDevice = First & "0" & i
else
  sNewDevice = First & i
end if

En dan nog iets, kan ook nog beter maar dit is al wat netter:
code:
1
2
3
4
5
6
7
8
9
10
11
12
Dim bUnqiueId As Boolean

  bUnqiueId = False
  Do While Not bUnqiueId
    sNewDevice = First + LTrim(Str(i))
    'Ga na of het device al bestaat in de collectie
    For Each Device In DeviceCol
    'Als het huidige device een zelfde device-id heeft dan...
     bUnqiueId = (Device.DeviceID <> sNewDevice)
    Next
    i = i +1
  Loop

Edit:
Iif is inderdaad ook een leuke..

oogjes open, snaveltjes dicht


Verwijderd

format(i,"00") was te simpel uiteraard

  • Mr. B.
  • Registratie: Mei 2000
  • Niet online
Op maandag 14 januari 2002 22:57 schreef Yarvieh het volgende:
format(i,"00") was te simpel uiteraard
Tuurlijk, waarom ff op F1 drukken als je het ook op een moeilijke manier kunt doen?

StatBar.nl - @GoT

Het verschil tussen theorie en praktijk is in de praktijk altijd veel groter dan in theorie.


  • mulder
  • Registratie: Augustus 2001
  • Laatst online: 08:26

mulder

ik spuug op het trottoir

Geeft die format een string terug...hmrmnrmnrmnr..VB...oh ja...*kuch*

oogjes open, snaveltjes dicht

Pagina: 1