dubbele records

  • Onderwerp starter Onderwerp starter csm
  • Startdatum Startdatum
Status
Niet open voor verdere reacties.

csm

Gebruiker
Lid geworden
13 dec 2008
Berichten
80
Hallo

ik heb een access frontend gekoppeld aan sql database
hoe kan ik bij invoer van een artikel als deze al voorkomt in de order de eerste invoer overschrijven en als het aantal hoger ligt het aantal ook updaten.
onderstaande code zoekt het artikel op en wordt dan weggeschreven naar de tabel afnamebestand deze heeft als primaire key volnummer en artikelnummer

[SQL]Sub zoekprijs(strfilter)
Dim Begindatum As Date
Dim Einddatum As Date
Me!Uitassortiment = DLookup("Uitassortiment", "Artikelbestand", strfilter)
If Me!Uitassortiment = "Waar" Then
DoCmd.OpenForm "Frmtest1", acNormal
End If
aantalactiekeuze = DCount("actieprijs", "actiekeuze", strfilter)
If aantalactiekeuze = 0 Then
Me!omschijving = DLookup("omschrijving", "Artikelbestand", strfilter)
Me!Aantal.SetFocus
totaal = hoeveelheid * prijs
Me!prijs = DLookup("[Actueel]", "artikelbestand", strfilter)
Else
Begindatum = DLookup("Begindatum", "actiekeuze", strfilter)
Einddatum = DLookup("Einddatum", "actiekeuze", strfilter)
varleverdatum = [Tekst100]
If varleverdatum >= Begindatum And varleverdatum <= Einddatum Then
Me!omschijving = DLookup("omschrijving", "Artikelbestand", strfilter)
Me!omschijving1 = DLookup("actietekst", "actiekeuze", strfilter)
Me!Aantal.SetFocus
totaal = hoeveelheid * prijs
Me!prijs = DLookup("actieprijs", "actiekeuze", strfilter)
Opmerking.ForeColor = 255
Opmerking = "Actieartikel"
Else
Me!omschijving = DLookup("omschrijving", "Artikelbestand", strfilter)
Me!Aantal.SetFocus
totaal = hoeveelheid * prijs
Me!prijs = DLookup("[Actueel]", "artikelbestand", strfilter)

End If
End If
totaal = hoeveelheid * prijs
End Sub[/SQL]

ik weet niet hoe ik hier aan moet beginnen

groet CSM
 
Je kijkt eerst of het artikel al voorkomt in de order.
Zo ja:
haal de waarde op uit orderdetails met dlookup dit is het oudeaantal.
update orderdetails set aantal = nieuwaantal where ordernummer= jouwordernummer
Zo nee:
oudeaantal=0
insert into orderdetails (velden,...) Values (waarden,...)

Nu kan je de voorraad aanpassen. Omdat je het oude aantal uit de orderdetails tabel hebt gehaald weet je nu met hoeveel je de nieuwe voorraad moet verlagen. Dat kan ook negatief zijn. Als bijvoorbeeld de update lager was dan het origineel. Dan wordt de voorraad weer aangevuld.

Dus correctie = nieuweaantal - oudeaantal

Nu kan je de voorraad aanpassen
nieuwevoorraad = oudevoorraad - correctie

Dat was het.
Je gebruikt erg veel dlookups in je code. die zijn heel erg traag. Dus die zou ik niet zo veel gebruiken
Je moet wel overwegen om het geheel in een transactie (workspace.begintrans) te zetten. Bij een error krijg je anders dat de ene tabel wel en de andere niet wordt ge-update.

HTH:D
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan