Waarde ophalen maar toch handmatig kunnen aanpassen

Status
Niet open voor verdere reacties.

remcop1989

Gebruiker
Lid geworden
29 mrt 2012
Berichten
492
Ik heb een formulier waarmee gegevens voor een offerte ingevoerd kunnen worden (naam: nieuwe offerte)
Ik heb een tabel waarin de prijzen voor producten staan (naam: producten)
Ik heb een tabel waarin de ingevoerde gegevens van offertes worden opgeslagen (naam: offerte details)

Nu wil ik dat de brutoprijs voor het geselecteerde product wordt opgehaald en getoond aan de gebruiker. Vervolgens wil ik dat de gebruiker in staat is om deze prijs handmatig aan te passen.
Deze (al dan niet aangepaste) prijs wil ik laten opslaan in de tabel.

Hoe kan ik dit het beste doen?
 
Met een keuzelijst met daarin ProductID (heb je nodig voor je offerte) en het veld Prijs, en een tekstvak dat je vult met Me.cboProduct.Column(#) waarbij # de kolom -1 voorstelt.
 
En dan is cboProduct de productnaam? En de prijs is aan te passen in het veld 'prijs'?
 
Wel de grijze cellen gebruiken natuurlijk :)
Bij jou heet (in minstens één voorbeeld) de keuzelijst cmbArtikelcode. Dan gebruik je die natuurlijk. En verder heb je nog een veld met de naam [Huurprijs per stuk per week of weekend] (wat een behoorlijk onhandige naam is, maar dat terzijde). En deze vraag heb je volgens mij al eens gesteld. Om er maar weer een voorbeeldje bij te halen:
in je subformulier koppel je het tekstvak txtprijs1 aan het tabelveld [Huurprijs per stuk]. Op de keuzelijst krijg je dan:
Code:
Private Sub cmbArtikelcode_Click()
    Me.txtPrijs1 = Me.cmbArtikelcode.[Column](2)
End Sub
Je vult het tekstvak dan bij het kiezen van een prijs, en je kunt die prijs dan aanpassen als je wilt.
 
Ik bleef even bij jou voorbeeld om het voor mezelf begrijpelijk te houden.

Ik heb zoveel vragen gesteld dat ik niet meer weet in welk topic van mij welke vraag staat.

Al met al is Access voor mij in ieder geval wel gemakkelijker te begrijpen dan het Groot Dictee der Nederlandse Taal :p :)
 
Zie mijn database in de bijlagen.

Ik heb het geprobeerd en ik kan nu wel handmatig de prijs invoeren, maar hij wordt helaas niet opgehaald bij selecteren van een artikel. Zou iemand er a.u.b. even naar kunnen kijken?

Het gaat om het formulier "nieuwe offerte". Hierin zit een subformulier genaamd "subformulier offertedetails". Om dit subformulier gaat het.
Ik wil dus dat hij daar een prijs laat zien die hoort bij het geselecteerde artikel. Vervolgens moet die prijs handmatig aan te passen zijn en vervolgens ook nog eens (al dan niet aangepast) opgeslagen worden in de tabel "offertedetails".

Kan dan meteen ook even iemand voor mij het volgende kijken:
Het formulier "offerte details" is bedoeld voor wanneer iemand dubbelklikt op een record in het formulier "offertes". Het formulier "offerte details" opent zich dan met relevante gegevens van dat formulier. Dit formulier moet vervolgens de juiste prijs ophalen uit de "offerte details" tabel. Dit werkt volgens mij ook niet helemaal 100%.

Ik heb bovenstaande zelf geprobeerd, maar krijg het niet voor elkaar.
 

Bijlagen

Ik heb gisteren één van je voorbeeldjes aangepast, en daar werkt het prima. Daar is ook bovenstaande code uitgehaald. Vermoedelijk kijk je een kolom te ver: Column(#) telt vanaf 0, dus de eerste kolom is 0, de tweede is 1 etc. Test dus eens met Column(1) of er überhaupt wel wat uit komt. En het aantal kolommen in de keuzelijst moet natuurlijk ook kloppen. Dat begint dan weer wèl bij 1 te tellen trouwens, om het overzichtelijk te houden :)
 
Ik heb dus nu deze code ingevoerd in "subformulier offertedetails" op formulier "nieuwe offerte" (op basis van de post hierboven).

Code:
Private Sub cmbArtikelcode_Click()

txtOmschrijving = [cmbArtikelcode].[Column](1)
txtDagprijs = cmbArtikelcode.Column(2)
txtWeekprijs = cmbArtikelcode.Column(3)
MinimaleHuurperiode = cmbArtikelcode.Column(4)
VerkoopprijsStuk = cmbArtikelcode.Column(5)

End Sub

De code staat achter het click event van het veld cmbArtikelcode (een keuzelijst) met als query:

Code:
SELECT Producten.Artikelcode, Producten.Omschrijving, Producten.HuurprijsDag, Producten.HuurprijsWeek, Producten.MinimaleHuurperiode, Producten.VerkoopprijsStuk, Producten.Schoonmaakkosten FROM Producten ORDER BY [Artikelcode], [Omschrijving], [HuurprijsDag], [HuurprijsWeek], [MinimaleHuurperiode], [VerkoopprijsStuk], [Schoonmaakkosten];

Het "subformulier offertedetails" is een doorlopend formulier. Op de eerste regel van bovenstaande code werkt dit perfect. Zodra ik echter meer verschillende producten (artikelcodes) selecteer wijzigt hij alle omschrijvingen en prijzen (kortom: de velden uit bovenstaande code) naar het laatst geselecteerde artikelcode. Zie screenshot.

Hoe "vertel" ik hem in de code dat hij dit niet moet doen en alleen de laatste regel moet aanpassen?
 

Bijlagen

  • screenshot 1.jpg
    screenshot 1.jpg
    92,2 KB · Weergaven: 76
Dat kan niet. Een niet-afhankelijk object is niet gekoppeld aan een tabel (of query) veld, en laat de waarden zien uit het object dat actief is. En dat is de keuzelijst van het record dat je selecteert. Daarom verandert de inhoud voor alle records. Overigens hoef je dat ook helemaal niet zo te doen, want het is vele malen simpeler om in het subformulier een query te maken die alle noodzakelijke velden laat zien. De keuzelijst gebruik je dan nog steeds om de artikelcode te kiezen, maar in een query heb je de velden wèl, en zie je dus de juiste waarden.
Je denkt kortom veel te moeilijk.
 
Met andere woorden: gewoon de omschrijving in de keuzelijst achter de artikelcode tonen?

Is er een andere oplossing voor wat ik wil bereiken?

Wat ik wil bereiken is dat de gebruik in het formulier "nieuwe offerte" via bijvoorbeeld een subformulier alle producten voor een bepaalde offerte kan selecteren (de "offertedetails"), daarbij de standaard prijzen ziet en deze vervolgens kan aanpassen zoals hij dat wil. zodat er een lijst met gekozen producten en prijzen ontstaat.

Kijkend naar een voorbeelddatabase in access 2003 (orderverwerking), kan wat ik wil wel?
http://www.mijnbestand.nl/Bestand-YAQOOX8OLTCK.mdb

Formulier: orders
Tabel: detailgegevens orders

Daar kunnen gegevens ingevoerd worden voor producten en vervolgens worden die gegevens opgehaald in iedere volgende order met de correcte prijs.
 
Laatst bewerkt:
Het is gelukt. Vermoedelijk ligt het aan het feit dat ik nu ieder "Offertedetail" regeltje (waarvan er meerdere bij 1 offerte kunnen horen) ook een eigen ID heb gegeven.
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan