Een veld uit meerdere records samenvoegen in nieuw memoveld

Status
Niet open voor verdere reacties.

jhdw

Gebruiker
Lid geworden
15 dec 2012
Berichten
166
Goedenavond,

Ik heb een ogenschijnlijk simpel probleem maar ik zie niet hoe dit op te lossen.

Voor mijn werk heb ik een werkorder registratie database gemaakt die goed werkt.
Nu willen ze de tekst die de monteurs in de werkorder plaatsen in één keer kopieren en dan in een ander (SAP) programma plakken. Ik zou een memoveld in de bestaande tabel kunnen plaatsen maar dat is niet handig omdat ik nu een aantal vaste keuze teksten heb. De monteurs hoeven dan alleen maar een keuze uit de lijst te maken en die kunnen ze dan ook nog aanvullen met hun eigen teksten
Ik heb nu een tabel met werkorder regels, dit kan variëren van 1 tot ca. 10 records per werkorder.
Nu zat ik zelf te denken om een nieuwe tabel te maken met daarin o.a. Werkorder_ID en een memoveld.
Hieronder een paar records als voorbeeld: werkorder_ID 1 heeft 4 records en de inhoud van het veld Uitgevoerd wil ik dan samenvoegen, gescheiden door een komma, en in het memoveld van de nieuwe tabel plaatsen.
Het zou er dan zo uit komen te zien:
1 6 liter transmissie olie erbij op gedaan., Afleveringsklaarmaken volgens pickbon, Proefrijden, Vermogenstest

Werkorder_ID Uitgevoerd
1 6 liter transmissie olie erbij op gedaan.
1 Afleveringsklaarmaken volgens pickbon
1 Proefrijden
1 Vermogenstest
2 2 extra werklampen gemonteerd op de handrail van de cabine
2 Afleveringsklaarmaken volgens pickbon
2 Proefrijden
2 Vermogenstest
3 Afleveringsklaarmaken volgens pickbon
3 showroom vullen voor de cumela bijeenkomst MF plus werktuigen
4 Afleveringsklaarmaken volgens pickbon
4 Proefrijden
4 Vermogenstest

Hopelijk is er iemand die mij een zetje in de goede richting kan geven.

Mvg
Jan
 
Ik zou een memoveld in de bestaande tabel kunnen plaatsen maar dat is niet handig omdat ik nu een aantal vaste keuze teksten heb.
Wat heeft het één met het ander te maken? Zie ik eerlijk gezegd niet zo...
Je kunt je aantekeningen op 2 manieren gebruiken: ofwel je maakt een memoveld in de tabel Werkorder, ofwel je maakt een memoveld in de tabel Werkorder_Regels. Of allebei, mag natuurlijk ook. Maar je hebt blijkbaar een keuzelijst in Werkorder_Regels waarin de monteurs m.b.v. een keuzelijst die vaste teksten kiezen. Dus een werkorder met 10 orderregel records heeft dan maximaal 10 omschrijvingsvelden. Zelf zou ik, vanuit het subformulier Werkorder_Regels die teksten gelijk toevoegen aan het memoveld in de tabel Werkorder. Daarbij kun je nog nadenken over hoe je dat veld wilt vullen. Want wat doe je als een monteur een andere keuze maakt bij een van de werkorderregels? Ik zou dus zeggen: bij elke mutatie van dat veld het memoveld opnieuw samenstellen, zodat je altijd de juiste teksten ziet. En staat het eenmaal in je memoveld, dan kun je dat makkelijk overhalen naar je SAP systeempje.
 
Hallo Michel,

Bedankt voor de snelle reactie.

Voor mij hoeft het geen memoveld te worden want ik hoef de gegevens niet in het SAP systeempje te zetten. Ik wil het degene die het wel moeten doen wat gemakkelijker maken.
Kun je mij aangeven hoe ik de werkorder_regels in één memoveld zet. Ik ga op jouw advies geen aparte tabel maken maar een memoveld aan de werkorder toevoegen.

Alvast bedankt voor het meedenken.

Mvg
Jan
 
Ik heb je db niet, dus dat wordt een beetje blind schieten. Maar in essentie is het simpel: op je subformulier heb je een link met het hoofdformulier (WerkOrderID zoiets) dus je kunt m.b.v. een Recordset alle records van het subformulier met dat ID uitlezen. Die velden zet je dan, als ze niet leeg zijn, in één stringvariabele (ik zou dat met een VbCrLF doen en niet met een komma). En als laatste vul je het memoveld op het hoofdformulier. Dat kun je met Me.Parent aanspreken. En dat memoveld vul je dan uiteraard met de string die je net hebt gevuld.
 
Ik zou er vanaf blijven, hoe goed bedoeld doet.
Als hier iemand mee aan de slag gaat vanuit SAP, dan zal dat in de regel een SAP deskundige zijn.
Die weet beter dan jij wat ze naar SAP willen interfacen en hoe dat in SAP gebruikt gaat worden.

Tardis
 
Goedenavond,

Hallo Michel,

Mijn probleem is hoe ik de records in één stringvariabele krijg, dat is de kern van mijn probleem.
Ik wil echt niet de gegevens op de één of andere manier de data in SAP schieten. Mijn bedoeling is dat ik (lees iemand anders) uiteindelijk de gegevens in het memoveld selecteer, kopieer en dan in SAP in het desbetreffende veld kan kopiëren. Dat is en blijft handwerk.

Als het helpt om een db te uploaden, dan kan ik wel een nieuwe dB maken met een paar tabellen.

Alvast beankt voor de hulp.

Mvg
Jan
 
Goedenavond,

Ik heb even een simpele database in elkaar geknutseld om aan te geven wat ik graag zou willen bereiken.

In het formulier "frm_werkorder" heb ik een paar knoppen gemaakt. Het gaat om de linkse knop "Regels kopiëren naar memoveld".
In het eerste record heb ik het memoveld handmatig gevuld met de data op het subformulier "sfrm_tbl_wo_regels".
Bij de volgende records heb ik alleen een aantal regels gevuld, al dan niet volgens de keuzelijst.

Nu zou ik graag met de linkse knop het memoveld WO_tekst gevuld zien en de code die dat kan bewerkstelligen gaat mijn kennis te buiten.
Met de rechtse knop kan ik dan die inhoud naar het klembord kopiëren en in een veld in SAP plakken.

Alvast bedankt voor de hulp.

Mvg
Jan
 

Bijlagen

  • Werkorder_test.rar
    28,1 KB · Weergaven: 31
Ik heb een procedure gemaakt op basis van je huidige knop; die zou je dus zo kunnen plakken en gebruiken.
Code:
Private Sub cmd_regels_kopieren_Click()
Dim f As Form
Dim rs As Recordset
Dim s As String

    Set f = Me.sfrm_tbl_wo_regels.Form
    Set rs = f.RecordsetClone
    rs.MoveFirst
    Do While Not rs.EOF
        If Not s = vbNullString Then s = s & vbNewLine
        s = s & rs.Fields("Regeltekst").Value
        rs.MoveNext
    Loop
    Me.memWO_tekst.Value = s
End Sub
 
Goedemorgen Michel,

Je hebt het wel laat gemaakt.
Hartstikke bedankt voor de snelle reactie en de oplossing voor mijn probleem. Het werkt precies zoals ik het graag wil hebben.
Nu moet ik het nog overzetten naar de eigenlijke dB, dat gaat lukken.

Een kleine opmerking: Me.memWO_tekst.Value = s moet zijn Me.WO_tekst.Value = s


Mvg
Jan
 
Niet in mijn versie :). Zodra ik dit soort technieken ga gebruiken, zorg ik er altijd voor dat de objecten anders heten dan de onderliggende velden.
 
Status
Niet open voor verdere reacties.
Steun Ons

Nieuwste berichten

Terug
Bovenaan Onderaan