Ga naar inhoud

Nullen


Aanbevolen berichten

Een vraagje: In een tekstvak heb ik een nummerieke code staan, die begint met nullen. Dit tekstvak leest hij de data uit een access bestand.. Hier staan de nullen wel voor, maar in visual basic niet.... hoe kun je programmeren dat de nullen in het tekstvak wel blijven staan? dus dat er in een tekstvak bv. 00021 staat i.p.v. 21! Alvast bedankt
Link naar reactie
Volgens mij kun je met een masked-edit control makkelijk voorloopnullen bij een numerieke waarde krijgen. Wat is het datatype in de database? Numeric of String? In het laatste geval wordt de waarde exact weergegeven zoals hij in de database staat. Als het numeric is, lijkt het me onwaarschijnlijk dat je in access wel voorloopnullen ziet.
Link naar reactie
datatype in de database = nummeriek ik heb zelf in access ingesteld dat de nummerieke waarden bestaat uit 4 cijfers.... zodoende staan daar wel voorloop nullen... (dit heb ik gedaan d.m.v. bij standaardwaarde 0000 in te vullen. Hierdoor komen er in access wel vier cijferig getal te staan.. bv. dus 0001, 0002 enz.) maar in visual basic komt er dan 1, 2 enz. te staan... Hoe kan ik dat doen?
Link naar reactie
Ik ben zelf niet zo dol op de masked edit control. Als jij een getal wilt hebben met voorloopnullen, dan zul je er een string van moeten maken. In onderstaand voorbeeld ga ik er even vanuit dat je het getal reeds hebt opgeslagen in de variabele intNummer. [code:1:bc09a438bd] Dim strNummer As String * 4 strNummer = "0000" strNummer = Left(strNummer, 4 - Len(CStr(intNummer))) & CStr(intNummer) [/code:1:bc09a438bd] Het masked edit control is wel handig als je de data nog wilt aanpassen, je kunt 'm namelijk zo maken dat je enkel nummers kunt ingeven. Echter ook dit kan met code (bij voorkeur in een algemene module): [code:1:bc09a438bd] Private Declare Function GetWindowLong Lib "user32" Alias "GetWindowLongA" (ByVal hWnd As Long, ByVal nIndex As Long) As Long Private Declare Function SetWindowLong Lib "user32" Alias "SetWindowLongA" (ByVal hWnd As Long, ByVal nIndex As Long, ByVal dwNewLong As Long) As Long Private Const GWL_STYLE = (-16) Private Const ES_NUMBER = &H2000& Public Sub OnlyNumbers(NumberText As TextBox, Flag As Boolean) Dim curstyle As Long Dim newstyle As Long curstyle = GetWindowLong(NumberText.hWnd, GWL_STYLE) If Flag = True Then curstyle = curstyle Or ES_NUMBER Else curstyle = curstyle And (Not ES_NUMBER) End If newstyle = SetWindowLong(NumberText.hWnd, GWL_STYLE, curstyle) NumberText.Refresh End Sub [/code:1:bc09a438bd] Met de code [code:1:bc09a438bd] Call OnlyNumbers(mijnTextbox, True) [/code:1:bc09a438bd] Zorg je ervoor dat er enkel nummers in die textbox kunnen. Roep je het aan met False, dan wordt het weer een normale textbox.
Link naar reactie
[quote:a75a4cd158="RubeL"] Het masked edit control is wel handig als je de data nog wilt aanpassen, je kunt 'm namelijk zo maken dat je enkel nummers kunt ingeven. Echter ook dit kan met code (bij voorkeur in een algemene module): [code:1:a75a4cd158] Private Declare Function GetWindowLong Lib "user32" Alias "GetWindowLongA" (ByVal hWnd As Long, ByVal nIndex As Long) As Long Private Declare Function SetWindowLong Lib "user32" Alias "SetWindowLongA" (ByVal hWnd As Long, ByVal nIndex As Long, ByVal dwNewLong As Long) As Long Private Const GWL_STYLE = (-16) Private Const ES_NUMBER = &H2000& Public Sub OnlyNumbers(NumberText As TextBox, Flag As Boolean) Dim curstyle As Long Dim newstyle As Long curstyle = GetWindowLong(NumberText.hWnd, GWL_STYLE) If Flag = True Then curstyle = curstyle Or ES_NUMBER Else curstyle = curstyle And (Not ES_NUMBER) End If newstyle = SetWindowLong(NumberText.hWnd, GWL_STYLE, curstyle) NumberText.Refresh End Sub [/code:1:a75a4cd158] Met de code [code:1:a75a4cd158] Call OnlyNumbers(mijnTextbox, True) [/code:1:a75a4cd158] Zorg je ervoor dat er enkel nummers in die textbox kunnen. Roep je het aan met False, dan wordt het weer een normale textbox.[/quote:a75a4cd158] Dit werkt alleen vanaf een bepaalde versie van de shell/common controls. Ik weet zo even niet meer welke versie. Bovendien vangt dit alleen de rechtstreekse 'karakterinvoer' af. Je kan gewoon ongeldige tekens in het tekstvak tevoorschijn krijgen door bijvoorbeeld het plakken (CTRL+V) van deze tekens uit het klembord.
Link naar reactie
Het werkt met een masked-edit control... Maar als ik de data wijzig, zijn de voorloop nullen weer weg... nu heb ik zelf een oplossing bedacht, nl.: [code:1:62947e32cf] 'volgnummer, 1 optellen Form2.Txtvolgno.Text = Form2.Txtvolgno + 1 a$ = Form2.TxtVoorletters.Text 'Voorletters b$ = Form2.TxtJaar.Text 'Jaar c$ = Form2.Txtmaand.Text 'Maand d$ = Form2.TxtDatum.Text 'Datum e$ = Form2.Txtvolgno.Text 'Volgnummer 'uniek nummer samenstellen Form2.txtFields(4) = "Cd" & "-" & b$ & "." & c$ & "." & d$ & "." & Right("0000" & Form2.Txtvolgno, 4) & ""[/code:1:62947e32cf] Het werkt nu perfect, en allemaal bedankt voor jullie inspanning! Erwin
Link naar reactie

Om een reactie te plaatsen, moet je eerst inloggen

Gast
Reageer op dit topic

×   Geplakt als verrijkte tekst.   Herstel opmaak

  Er zijn maximaal 75 emoji toegestaan.

×   Je link werd automatisch ingevoegd.   Tonen als normale link

×   Je vorige inhoud werd hersteld.   Leeg de tekstverwerker

×   Je kunt afbeeldingen niet direct plakken. Upload of voeg afbeeldingen vanaf een URL in

  • Populaire leden

    Er is nog niemand die deze week reputatie heeft ontvangen.

  • Leden

    Geen leden om te tonen

×
×
  • Nieuwe aanmaken...