tekst opslaan tussen //

Status
Niet open voor verdere reacties.

mbakker71

Gebruiker
Lid geworden
25 mei 2012
Berichten
163
hallo,

Ik ben bezig met een bestand database te maken en hierbij kan de gebruiker een bestandplaats intypen zoals C:\Users\Martijn\Desktop\Games en nu wil ik dus dat hij deze zin in stukken kan maken en dan zet
map1 = C:
Map2 = Users
Map3 = Martijn
Map4 = Desktop
map5 = games

ik gebruik access 2013 en ik zou het prettig vinden als iemand een code weet deze dan ook meteen uittleggen

Please help me!!!

bij voorbaat dank,
Martijn Bakker
 
Test dit maar eens. Als het goed werkt kun je dat vast naar je eigen situatie aanpassen.

Code:
Sub tst()
Dim i As Integer
Dim pad() As String
pad = Split("C:\Users\Martijn\Desktop\Games", "\")

For i = 1 To UBound(pad)
    Debug.Print pad(i)
    Next i
End Sub
 
Dankje voor je snelle reactie

Ik heb het nog niet getest maar hoe krijg ik die waardes in txtmap1, txtmap2, txtmap3,enz?
en ik begrijp niet wat de I doet?

met vriendelijke groeten,
Martijn Bakker
 
Ok, wat extra uitleg erbij

Maak een variabele die als tellertje gaat dienen
Dim i As Integer

Maak een array variabele waarin de verschillende delen van de string worden opgeslagen

Dim pad() As String

Vul de array variabele. De functie split verdeeld de onderdelen naar de array
pad = Split("C:\Users\Martijn\Desktop\Games", "\")

Maak een loopje die loopt van 1 t/m het hoogste (Ubound) lidnummer van de array en toon de waarde van array lidnummer i
For i = 1 To UBound(pad)
Debug.Print pad(i)
Next i
 
Doe jezelf een lol, en vergeet je vraag. Waarom zou je in hemelsnaam een sting opsplitsen in tekstvakken? Op het moment dat je één of meer van die onderdelen nodig hebt, haal je ze dan wel uit elkaar. Volgens mij ben je de normalisering van je db moedwillig om zeep aan het helpen...
 
de code werkt!!! dank je wel!!

alleen ik zou graag willen dat hij de locaties afdrukt in verschillende textboxes die genoemd zijn naar txtmap1,txtmap2, enz

misschien is het een domme vraag en moet ik alleen 1 knopje indrukken haha

met vriendelijke groet,
Martijn Bakker

ps: octofish ik vindt jou reactie zeer vreemd omdat jij niet weet waarvoor ik het ga gebruiken!
 
Je kunt de inhoud van de array gebruiken om de velden te vullen:
txtMap1 = Pad(1)

Enz.

Wat ik wel vergeten ben te vertellen is dat de array niet bij 1 maar bij 0 begint
In het voorbeeld zal dus C: in Pad(0) staan.
 
Laatst bewerkt:
Als ik je vraag zo lees, dan is het ook niet nodig om dat te weten; zo weet ik ook dat een heggeschaar niet geschikt is voor hartoperaties terwijl ik geen geneeskunde heb gestudeerd... Dat je niet jofel bezig bent, blijkt hier al uit:
... en hierbij kan de gebruiker een bestandplaats intypen zoals C:\Users\Martijn\Desktop\Games
Je laat een gebruiker natuurlijk geen pad intypen, maar daarvoor gebruik je een FileDialog, zodat ze de map kunnen aanwijzen. En het resultaat sla je op in één veld, niet in 20 velden. Bovendien: als je een paar niveau's dieper wilt gaan, kom je weer tekstvakken tekort. Je hebt heel wat uit te leggen voordat je mij ervan overtuigd hebt dat je met iets nuttigs bezig bent met die tekstvakken.
Gelukkig voor jou hoeft dat niet, en staat niets of niemand in je weg om het op je eigen manier te doen. Zolang je maar weet dat het vermoedelijk veel makkelijker en slimmer kan :).
 
Hoewel je helemaal gelijk hebt, iedereen moet ergens beginnen met het leren van een omgeving en database ontwerp.
 
ik geef het toe octofish je hebt deels gelijk alleen ik moet die locaties filteren en dat ga ik doen met die textboxes. Maar je hebt mij wel op een briljant idee gebracht met die filedialog!! dankje daarvoor

weet jij misschien hoe je zo dialog krijg??

martijn
 
haha ja ik zit nu 1ste jaar mbo en daar krijg ik ook lessen zoals Visual basic en raad eens wel vak ik bijna alle opdrachten heb gemaakt haha

maar weet iemand misschien een oplossing voor als iemand bijvoorbeeld een locatie heeft van 15 mappen(is wel heel extreem). ik had ontworpen voor maximaal 10 mappen ik ga namelijk in een form 10 listboxes maken en hierbij krijg je zeg maar alle mappen te zien die er zijn zoals

listbox1 listbox2
Schijven | | map2
C | | Huiswerk
D | | Stage
E | | Visual basic

zo bijvoorbeeld Stage staat in de C schijf en als ik dus C aanklik dan krijg ik dus alleen maar Stage te zien.

martijn,

ik zie nu dat mijn tekening anders is geworden door de website
 
Laatst bewerkt:
Volgens mij staat er in je voorbeeld achter C --> Huiswerk, en is D:\Stage. Maar buiten dat: ik snap je vraag eigenlijk niet. Want wat wil je nu precies? In de 1e keuzelijst wil je blijkbaar de schijven zien (C, D etc). Keuzelijst 2 moet dan, zolang er niks is gekozen, niks laten zien lijkt mij. En zodra je een optie kiest uit lstBox1, dan moet lstBox2 gevuld worden met de mappen die in lstBox1 te zien zijn? En zo verder, dus als je een map in lstBox2 selecteert dat je dan in lstBox3 de inhoud qua mappenstructuur ziet?
Verklaart overigens nog steeds niet waarom je de gesplitste boomstructuur in zoveel verschillende tekstvakken terug wilt zien. Daarvoor zou ik toch één tekstvak gebruiken waarin je de afzonderlijke waarden bijvoorbeeld onder elkaar zet. Kun je met VBA de hoogte nog aanpassen aan het aantal lagen. Maar goed, met een loopje kun je dat ook nog wel uitlezen in aparte tekstvakken.
Code:
For i = LBound(pad) To UBound(pad)
    me("txtmap" & i) = pad(i)
Next i
Het probleem dat ed aanstipte (de array begint ofwel met 0 ofwel met 1, afhankelijk van een instelling) omzeil je met LBound en UBound.
 
ik kan natuurlijk ook 1 listbox maken en dan als je ergens op klikt dat dan alle waardes er uitgaan en dan allemaal nieuwe waardes er in komen te staan of bedoelde jij dat al?

martijn
 
bedank voor het idee!!

ik weet alleen niet hoe ik dan terug ga naar de vorige map. ik weel wel hoe je de map moet gaan openen en dan gewoon filteren

martijn
 
Wat bedoel je met 'ik weet alleen niet hoe ik dan terug ga naar de vorige map'? Map openen is dan neem ik aan klikken op de laatstse map, en de mapstring opbouwen op basis van alle voorgaande keuzelijsten.
 
ik ziet nu nog in de ontwerp fase om dus een idee te krijgen hoe alles eruit gaat zien en hoe de opdrachtgever het vindt heb ik een paar tekeningen gemaakt in visio.

het formulier waar wij net constant over hebben gepraat ziet er zo uit:
bestanden.png

er komt nog een knop dat je terug gaat naar het vorige map. hierbij gaat dus als je een map opent gaan dus de mappen die je hiervoor hebt geopend naar de linker lst en dan komen de mappen die in de geselecteerde map staan in het rechter mapje. en als je terug gaat dan gaat het precies anders om.

hopelijk heb je een beetje het idee gekregen wat ik ongeveer wil gaan maken.
misschien heb je nog ideen waardoor het beter kan?

met vriendelijke groet,
Martijn Bakker
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan