Record dupliceren vanuit formulier

Status
Niet open voor verdere reacties.

Robbin R

Gebruiker
Lid geworden
14 jul 2010
Berichten
29
Hoi,

ik heb in Access nu een frmProd gemaakt met daarin een tabbesturingselement.
Op de tabs zijn gegevens te vinden van het product van het hoofdformulier:

2cz6p14.png

Bovenaan (koptekst) zijn verschillende knoppen, zo ook Duplicate. Hiermee wil
ik alle gegevens uit het formulier dupliceren, zodat ik niet altijd alles opnieuw hoef te typen.
(Veel van de producten (boeken) zijn nl herdrukken, met veelal dezelfde specificaties).

Dit werkt prima, echter alleen voor de gegevens van het hoofdformulier.
Heeft iemand een idee hoe ik ervoor kan zorgen dat ook de gegevens van de subformulieren worden
gedupliceerd?

Groeten,
Robbin
 
Als je een routine hebt die werkt voor je hoofdformulier, dan zou je die toch ook moeten kunnen gebruiken voor je subformulieren. Misschien is het handig als je eerst uitlegt waar het probleem zit, want dat kan op een aantal plekken liggen. Je kunt bijvoorbeeld de gegevens van het subformulier niet uitgelezen krijgen, of je kunt de gegevens wel lezen, maar niet in een tabel opslaan etc.
 
Wel, de gegevens in het formulier en subformulier worden keurig gedupliceerd.
Zodra ik dan echter de ID van het boek wijzig en naar een volgend veld spring,
worden alle velden in het subformulier leeggemaakt.
Ik zou juist graag zien dat deze gegevens behouden blijven.
 
OK, dus het probleem is niet dat je de gegevens niet kunt dupliceren, het probleem is dat je ze vervolgens niet terugziet op je formulier. Correct?
 
293c7me.png

Ik heb het frmProdCopy. Rechtsboven klik ik op Duplicate.
Vervolgens worden alle gegevens (inclusief van de subformulieren) gedupliceerd.

Nu wijzig ik ID van 100000-1 naar 100000-2, omdat het de tweede druk is.

In het subformulier worden alle gegevens leeggemaakt. Ik wil deze echter wel behouden,
want je begrijpt dat een tweede druk, qua kleur en papier niet verschilt van een eerst druk.

Dus het dupliceren gaat wel goed en alle gegevens worden gedupliceerd,
maar zodra ik de ID aanpas zie ik de gegevens inderdaad niet meer terug in het subformulier.
 
Laatst bewerkt:
We schuifelen vooruit.... :)
In het plaatje heb je in het formulier rechts een kopie van het record links. Zo te zien gebruik je geen Autonummering voor het ID veld, of want je kunt het nummer blijkbaar bewerken. Maar als je een duplicaat maakt van een record, lijkt het mij logisch dat het ID nummer automatisch wordt aangepast. Want het ID veld zal toch wel je sleutelveld zijn. Dus waarom moet je het handmatig aanpassen? En hoe is het mogelijk om een kopie te maken van een record met dezelfde ID waarde als het origineel? Want dat kan alleen als het ID veld geen sleutelveld is...
 
Het veld ID is de primaire sleutel. Het heeft Gegevenstype 'Tekst'.

De kopie heb ik gemaakt met behulp van de 'Wizards voor besturingselementen' voor een 'Knop'.
Bij de 'Wizard Opdrachtknop' heb ik gekozen voor 'Recordbewerkingen' > 'Dubbele record'.

Maar ik weet ook al waardoor de velden worden leeggemaakt.
Formulier en subformulier zijn namelijk gekoppeld via ID.

Alleen voor de nieuwe ID zijn nog geen waardes ingegeven,
dus in het subformulier is alles leeg.

Maar vanwege jouw opmerking:
Weet je dan toevallig hoe je ervoor kan zorgen dat alle waardes worden gekopieerd (formulier & subformulier),
waarbij het ID automatisch wordt aangepast bv van 100000-1 naar 100000-2 of van 100000-1 naar 100000-1Copy
 
Zit er een logica in de nummering? Dus is de eerste sleutel altijd van het type 100000-1 en de nieuwe 100000-2? Of heb je nog andere varianten?

Waarschijnlijk heb je met de knop deze code gemaakt:
Code:
    DoCmd.DoMenuItem acFormBar, acEditMenu, 8, , acMenuVer70
    DoCmd.DoMenuItem acFormBar, acEditMenu, 2, , acMenuVer70
    DoCmd.DoMenuItem acFormBar, acEditMenu, 5, , acMenuVer70 'Paste Append

Daar zou je zoiets aan toe kunnen voegen:
Code:
    Dim sID As String, sLinks As String, sGetal As Integer
    me.ID.Setfocus
    sID = Me.ID
    sLinks = Left(sID, InStr(1, sID, "-") - 1)
    sGetal = Mid(sID, InStr(1, sID, "-") + 1, Len(sID) - InStr(1, sID, "-")) + 1
    Me.ID = sLinks & "-" & sGetal
 
Er zit geen logica in de nummering. De code kan bijvoorbeeld ook een lettercode BOEK123 zijn.
Ik heb nu gewoon geen subformulieren gebruikt, maar één groot formulier.
Wanneer ik dan ID aanpas, blijven de waardes in de andere velden staan.

Bedankt voor je hulp!
 
Dan heb je denk ik een klein probleem om het volgnummer uit de ID te halen... Misschien kun je nog iets met een functie die alle tekens van rechts probeert uit te lezen die numeriek zijn, en die waarde met 1 te verhogen?
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan