Toon posts:

[VB6] Kan dit eenvoudiger? (cijfers uit datum halen)

Pagina: 1
Acties:
  • 109 views sinds 30-01-2008
  • Reageer

Verwijderd

Topicstarter
Hallo,

onderstaand stukje code :

code:
1
2
3
4
5
6
7
8
9
10
Dim tekst As String
Dim tekst2 As String
Dim tekst3 As String
Dim tekst4 As String
Dim tekst5 As String
tekst2 = Left$(Text1.Text, 2)
tekst3 = Mid$(Text1.Text, 4, 2)
tekst4 = Right$(Text1.Text, 2)
tekst5 = tekst2 & tekst3 & tekst4
tekst = """" & tekst5 & """"


Het is de bedoeling dat ik uit een datum (bv.: 22-06-07) alleen de cijfers ervan over houd.
Nu werkt dit stukje software goed, alleen ik denk dat het héél spartaans geschreven is.
Hoe kan ik dit 'netter' schrijven ?

Thankx

  • F_J_K
  • Registratie: Juni 2001
  • Niet online

F_J_K

Moderator CSA/PB

Front verplichte underscores

Wat voor code is dat? Vrij belangrijk :+ Afhankelijk van de taal zal het beter in bijv. OFF of PW passen.

Ik gok VB(A), maar omdat je het niet in Officesuites en -software hebt geplaatst kan dat haast niet. En afhankelijl van de taal: waar komt de info vandaan; is het een string of kan je niet gewoon beter een aanroep gebruiken dat je meteen de juiste getallen krijgt. En je wilt natuurlijk bedenken of andere datumformaten mogelijk zijn wanneer je data uit een ander land krijgt.

'Multiple exclamation marks,' he went on, shaking his head, 'are a sure sign of a diseased mind' (Terry Pratchett, Eric)


  • _VpS_
  • Registratie: September 2002
  • Laatst online: 14-04-2023
Heeft de datum een vaste delimiter?
In Vbscript kun je dan deze functie gebruiken: (voor andere VB varianten heb je vast een equivalente functie ;-))
code:
1
Replace(string,find,replacewith[,start[,count[,compare]]])


De delimiter en eventuele spaties vervangen door een lege string..

(bb) || !(bb)


Verwijderd

Topicstarter
Ja eh eh ik denk dat deze inderdaad verkeerd staat.

Het is in VB6 geschreven de info komt uit een text vak.

sorry

  • Spockz
  • Registratie: Augustus 2003
  • Laatst online: 19-11 13:44

Spockz

Live and Let Live

Ten eerste, vertrouw nooit op user-input.

Ten tweede, kun je niet iets als een regular expression gebruiken om dit op te lossen?

C'est le ton qui fait la musique. | Blog | @linkedin
R8 | 18-55 IS | 50mm 1.8 2 | 70-200 2.8 APO EX HSM | 85 1.8


  • F_J_K
  • Registratie: Juni 2001
  • Niet online

F_J_K

Moderator CSA/PB

Front verplichte underscores

Aha, [VB6] dus. Dit heeft dan niets te maken met Client Software Algemeen en verplaats ik het naar het juiste subforum. Check ajb even de policies aldaar (de 'sticky topics' bovenaan) om te zien of je nog info mist.

'Multiple exclamation marks,' he went on, shaking his head, 'are a sure sign of a diseased mind' (Terry Pratchett, Eric)


  • Creepy
  • Registratie: Juni 2001
  • Laatst online: 30-11 15:10

Creepy

Tactical Espionage Splatterer

En voor hier in PRG geef je nog wat te weinig informatie. Dus heb je zelf al wat geprobeerd? Zo ja, wat? Zo nee, waarom niet? ;)

"I had a problem, I solved it with regular expressions. Now I have two problems". That's shows a lack of appreciation for regular expressions: "I know have _star_ problems" --Kevlin Henney


Verwijderd

Topicstarter
DE software werkt naar behoren ik vroeg mij alleen af of dit niet eenvoudiger kon.

Das alles.

  • urk_forever
  • Registratie: Juni 2001
  • Laatst online: 29-11 17:06
Visual Basic:
1
2
3
4
5
6
Dim sTeksten() as string
Dim sInput as string

  sInput = "31-12-2007"

  sTeksten = Split(sInput, "-")


zal nog ff checken of dit klopt.

Dit zou moeten werken, je krijg nu een array met daarin 3 elementen met de strings.

Of je zou zoiets kunnen doen:

Visual Basic:
1
2
3
4
5
6
Dim dtDatum as Date
Dim sTekst as string

  dtDatum = DateValue("31-12-2007")

  sTekst = Month(dtDatum) & Day(dtDatum) & Year(dtDatum)


En wat hij hieronder zegt werkt ook.

[ Voor 53% gewijzigd door urk_forever op 22-06-2007 20:07 ]

Hail to the king baby!


  • Boss
  • Registratie: September 1999
  • Laatst online: 16:27

Boss

+1 Overgewaardeerd

Wat dacht je van format(MijnDatum, "ddmmyy"), of een vergelijkbare functie in de taal van je keuze?

The process of preparing programs for a digital computer is especially attractive, not only because it can be economically and scientifically rewarding, but also because it is an aesthetic experience much like composing poetry or music.


  • remco_k
  • Registratie: April 2002
  • Laatst online: 21:24

remco_k

een cassettebandje was genoeg

Zoals Spockz al zegt: vertrouw nooit op user input. Het zijn net apen. Typen gerust 6&22_2007 als datum in en verwachten dan dat het goed gaat.
Maak een goede gui, da's minstens zo belangrijk als de onderliggende code, gebruik de juiste controls (dus geen TEdit om een datum in te vullen). Er bestaan ook in VB6 vast wel calendar controls oid. Gebruik die, dan kan je daar de Date property van lezen en kan je vanaf daar -veel- betrouwbaarder verder met de info.

Nog een tegenvraag: wat zou je willen doen met de losse getallen?

[ Voor 3% gewijzigd door remco_k op 22-06-2007 20:20 ]

Alles kan stuk.


Verwijderd

Topicstarter
Is het werkelijk zo eenvoudig ? ?

Wellicht toch maar eens een cursus gaan doen of zo.

Bedankt.

Verwijderd

Topicstarter
@ remco_k:

Het is om op een barcodekaartje te printen. Ik moet daar 2 x een datum en 2x een tijd opzetten.
Alleen daar is het kaartje te klein voor. Als ik de - en : tussen uit haal past het wel.

  • remco_k
  • Registratie: April 2002
  • Laatst online: 21:24

remco_k

een cassettebandje was genoeg

Verwijderd schreef op vrijdag 22 juni 2007 @ 20:22:
@ remco_k:

Het is om op een barcodekaartje te printen. Ik moet daar 2 x een datum en 2x een tijd opzetten.
Alleen daar is het kaartje te klein voor. Als ik de - en : tussen uit haal past het wel.
In dat geval zeker een calendar control gebruiken en met de Date property (of formatstring functie ofzo) een string formatteren zoals: yyyymmdd (en eventueel hhnnss). (of een andere volgorde zoals jij het wilt hebben.)
De output voor een geselecteerde datum van 22 juni 2007 word dan 20070622.
Je weet (omdat je een calendar control gebruikt) heel zeker dat de user (alias aap) een goede datum heeft ingevuld / geselecteerd, en dat je nooit voor verassingen komt te staan. Is nu een half uurtje meer werk (voor de beginner that is) maar je hebt er echt profijt van.

Edit:
Als je het nu een TEdit laat, komt er vroeg of laat een moment van spijt en denk je terug aan deze post. :P

[ Voor 6% gewijzigd door remco_k op 22-06-2007 20:40 ]

Alles kan stuk.


Verwijderd

Topicstarter
Dan ga ik nu een halfuurtje verder, want dat is op termijn snel gewonnen.

  • urk_forever
  • Registratie: Juni 2001
  • Laatst online: 29-11 17:06
Wat ze allemaal hierboven zeggen zou ik zeker doen. Probeer eens de DateTime picker toe te voegen. Zie ook hier:

http://msdn2.microsoft.co...rary/aa276346(VS.60).aspx

Hail to the king baby!


  • farlane
  • Registratie: Maart 2000
  • Laatst online: 30-11 00:17
Kweetniet of het van belang is maar het invoeren van een datum in een aantal tekstvakken is nog altijd vele malen minder handelingen voor de gebruiker dan het gebruik van zo'n calendar control.

Je zou bijvoorbeeld voor dag-maand-yaar 3 aparte tekstvakken kunnen gebruiken. Het controleren of het en valide datum is kun je doen met IsDate( .. ). Deze houdt volgens mij ook rekening met schrikkeljaren en dat soort dingen.

Somniferous whisperings of scarlet fields. Sleep calling me and in my dreams i wander. My reality is abandoned (I traverse afar). Not a care if I never everwake.


  • remco_k
  • Registratie: April 2002
  • Laatst online: 21:24

remco_k

een cassettebandje was genoeg

farlane schreef op maandag 25 juni 2007 @ 08:55:
Kweetniet of het van belang is maar het invoeren van een datum in een aantal tekstvakken is nog altijd vele malen minder handelingen voor de gebruiker dan het gebruik van zo'n calendar control.

Je zou bijvoorbeeld voor dag-maand-yaar 3 aparte tekstvakken kunnen gebruiken. Het controleren of het en valide datum is kun je doen met IsDate( .. ). Deze houdt volgens mij ook rekening met schrikkeljaren en dat soort dingen.
Een DateTimePicker is een soort Edit, met dropdown calendar functionaliteit.
De user (alias aap) kan kiezen: typen of selecteren. Hoef je als programmeur nergens druk over te maken want de DateTimePicker controleerd zelf of de ingevoerde datum geldig is.

Alles kan stuk.


  • sopsop
  • Registratie: Januari 2002
  • Laatst online: 01-12 14:29

sopsop

[v] [;,,;] [v]

farlane schreef op maandag 25 juni 2007 @ 08:55:
Kweetniet of het van belang is maar het invoeren van een datum in een aantal tekstvakken is nog altijd vele malen minder handelingen voor de gebruiker dan het gebruik van zo'n calendar control.

Je zou bijvoorbeeld voor dag-maand-yaar 3 aparte tekstvakken kunnen gebruiken. Het controleren of het en valide datum is kun je doen met IsDate( .. ). Deze houdt volgens mij ook rekening met schrikkeljaren en dat soort dingen.
IsDate is dan weer lastig, aangezien je dd-mm en mm-dd kunt omdraaien. En je kunt eigenlijk nooit zeker weten wat er nou ingevoerd wordt.

  • farlane
  • Registratie: Maart 2000
  • Laatst online: 30-11 00:17
remco_k schreef op maandag 25 juni 2007 @ 09:50:
Een DateTimePicker is een soort Edit, met dropdown calendar functionaliteit.
Ah ok, ik had zon ding in gedachten waarbij je alleen maar kunt clicken.
sopsop schreef op maandag 25 juni 2007 @ 10:39:
IsDate is dan weer lastig, aangezien je dd-mm en mm-dd kunt omdraaien. En je kunt eigenlijk nooit zeker weten wat er nou ingevoerd wordt.
Vandaar die drie gescheiden vakken :)

Somniferous whisperings of scarlet fields. Sleep calling me and in my dreams i wander. My reality is abandoned (I traverse afar). Not a care if I never everwake.


Verwijderd

farlane schreef op maandag 25 juni 2007 @ 12:52:
Vandaar die drie gescheiden vakken :)
nogsteeds. amerikanen zouden typen: 12-1 voor 1 december, terwijl een europeaan daar 12 januarie ziet staan. en de gebruiker AKA bovengenoemde aap leest echt niet of dat textvakje nou voor de maand of de dag was. die ziet datum en begint meteen knoppen te rammen.
Pagina: 1