QR code importeren in velden

Status
Niet open voor verdere reacties.

jbusser

Gebruiker
Lid geworden
23 feb 2007
Berichten
147
Ik wil graag een QR code importeren in een tabel.
De QR code is eigenlijk gewoon een tekst- (of cvs) bestand en bestaat uit een aantal getallen met " ; " als veldscheidingsteken.
Nu dacht ik de QR code in te scannen in een tekstvak en dan de getallen in de tabelvelden te plaatsen, maar hoe kan ik nu de QR code na inscannen scheiden en plaatsen in die velden?
Dus: eerste getal in "veld 1", tweede getal in "veld 2" enzovoorts.

bij voorbaat dank, Jan
 
Uit hoeveel velden kan een QR code maximaal bestaan?
 
Bedoel je te zeggen dat het je al wel lukt om de QR code in te lezen in een tekstveld? Zo ja: hoe ziet die tekst er dan uit? Sowieso zou ik, bij een wisselend aantal gegevens die je er uit wilt trekken, dat niet doen door voor die getallen eigen velden te maken, maar een aparte tabel koppelen. Op die manier werkt je systeem namelijk altijd, en blijft je database correct genormaliseerd.
 
Het vullen van het tekstveld is geen probleem, ik krijg daar dus een reeks waarden met "puntkomma" als scheidingsteken. Hier een voorbeeld:

05;12323344;7955665555;AX1200999098787;51DTF;00110000220001100100000111001;0123;0124;0125;00990000KX;ZZT13;212233323225555332322232;17003656

Nu wil ik dus de waarden separaat in velden hebben
dus:
veld1 "05"
veld2 "1232344"
veld3 "7955665555"

etc.
Daarvoor is al een tabel aangemaakt
 
Op zich is wat je wil eenvoudig te doen met de import wizzard of in VBA met de methode TransferText.
Zoals OctaFish al aangaf is het opslaan in één record niet echt een nette oplossing. Ik blijf me ook afvragen uit hoeveel velden een QR code kan bestaan. Bedenk dat een tabel maximaal 255 velden kan bevatten.
 
QR codes kunnen tot een maximum van 7089 karakters worden samengesteld. Het is dan maar net de vraag hoe hoeveel karakters je waarden hebben (plus één veldschewidingsteken).
Als alle waarden maar 3 karakters (plus een ";", dat is dus 4 karakters) kun je 7089/4 = 1772 velden vullen.
De beperking blijft dus inderdaad de 255 velden per tabel (al kun je natuurlijk meerdere tabellen één op één aan elkaar relateren...)
 
Overigens zou ik niet weten hoe ik met docmd.TransferText het door mij gewenste voor elkaar zou moeten krijgen. Ik ken deze methode alleen voor het vullen van externe documenten... toch?
 
Met TransferText kan je zowel importeren als exporteren.

expression.TransferText(TransferType, SpecificationName, TableName, FileName, HasFieldNames, HTMLTableName, CodePage)
Het TransferType zal in dit geval acImportDelim moeten zijn (wat trouwens ook de defaultwaarde is).
 
Laatst bewerkt:
Hmmm.
Ik kan mij voorstellen dat je zo het hele tekstveld overzet naar een veld in de tabel.
Maar...
Mijn tekstveld moet worden opgesplitst, daar zijn de veldscheidingstekens voor.
Hoe kan ik dat dan met deze instructie?
 
Dat is nou precies waar TransferText voor bedoeld is. Probeer gewoon eens wat uit.
 
jbusser

Bedoel je nu record's of echt voor elk stukje tekst een veld?



groetjes
 
Elk stukje tekst een veld. Eén QR scan is één record dat is samengesteld uit 13 velden
 
@Pletter
Helemaal!
Hoe heb je dat gedaan?
 
Laatst bewerkt:
Eén QR scan is één record dat is samengesteld uit 13 velden
Ik had post #6 even gemist en er daarom nog niet op gereageerd. Nu dan de vraag hoe die 13 zich verhoudt tot de in post #6 genoemde 1772?

Het in één record opslaan van een QR-code was al geen goed idee (zie post #3). Als er inderdaad meer dan 255 velden kunnen zijn, is het spreiden over meerdere tabellen een nog slechter idee.
Ik denk echt dat je naar een ander ontwerp moet. Je kan dan per QR-code net zoveel velden kwijt als nodig of het er nou 13 zijn of 1772. Een demo is op verzoek te leveren.
Zou dan iets worden als:
 

Bijlagen

  • QR01.jpg
    QR01.jpg
    11,4 KB · Weergaven: 21
Laatst bewerkt:
Hoe heb je dat gedaan?
Het is heel makkelijk om een functie te maken die de waarde in één tekstveld leest en dat middels de SPLIT functie (arr = Split(me.tekstveld,”;”) in een matrix variabele zet. Vervolgens gebruik je een loop (For i= LBound(arr) To UBound(arr)) om de afzonderlijke waarden in de overeenkomende velden te zetten. Als je QR code altijd hetzelfde aantal velden bevat, kan je dat op die manier oplossen.
 
Dank jullie.
Ik heb nu inderdaad wat ik nodig heb. Ik heb Pletter's voorbeeld wat aangepast (de data moest niet uit een extern bestand komen maar uit een tekstvak) en ziet er nu zo uit

Code:
    Dim res() As String
    Dim x As Integer
    
    res = Split(QR_code, ";")
    DoCmd.GoToRecord , , acNewRec
    For x = LBound(res) To UBound(res)
           Me("Veld" & x + 1) = res(x)
    Next x
    QR_code = ""

Het werkt prima nu, Bedankt!
 
En dat had je op basis van mijn antwoord helemaal zelf kunnen maken. Had je nu trots op de bank gezeten :). Al had ik je deze code uiteraard ook zo gegeven als je er niet was uitgekomen. Maar zelfwerkzaamheid blijft bij mij nét iets hoger in de pikorde staan :d.
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan