records toevoegen via rapport

Status
Niet open voor verdere reacties.

arnoderuig

Gebruiker
Lid geworden
8 sep 2000
Berichten
577
Ik heb in een applicatie een rapport opgemaakt dat gegevens bevat van een orderadministratie. In dat rapport wordt ondermeer een uniek factuurnummer gegenereerd. Daarnaast komt er een klantnummer en uiteraard een factuurbedrag op voor.

Ik zoek een methode om direct bij het printen records toe te voegen aan een tabel Facturen voor elke factuur die in het rapport is opgenomen. Deze tabel bevat de gegevens zoals ik die hierboven noemde. Is iets dergelijks mogelijk?

Arno de Ruig.
 
denk dat je beter eerst het tabel kan laten updaten en vervolgens dan pas kan laten uitprinten
 
hoe?

Vraag blijft dan nog even op welke wijze ik dat kan regelen. Zoals gemeld wordt het eerste factuurnummer automatisch berekend binnen het rapport. Het eerste factuurnummer is gelijk aan het hoogste factuurnummer in de tabel 'tblFactuur' + 1. Het zou dus een soort bijwerkquery moeten zijn waarin een factuurnummer wordt gegenereerd. Ik zou niet weten hoe ik dat moet oplossen. Wie wel?

Arno.
 
Dit kan door de volgende oplossing;

De factuurcode die je genereert bij te laten werken in de tebel orders, hierbij opnemend het eindbedrag.

In de tabel waarde regels zijn opgenomen die onder deze order order vallen, dien je een veld aan te maken waarin je de factuurcode opneemt. Zo kun je altijd terugzoeken en filteren wat in de betreffende factuur thuishoort.

Dit moet uiteraard met een bijwerkquery, die beide tabellen update.

JJ
 
Temp-tabel

Beste Arno,

De beschrijving van Jaminon klopt, maar is gevaarlijk. Ik zou een tijdelijk tabel maken, daar de records die je wilt printen aan toevoegen en vervolgens het rapport printen met als bron van het rapport de records in die tijdelijke tabel. Als je het rapport sluit is dat een bewijs dat alle records afgedrukt zijn en pas dan zou ik de records uit de tijdelijke tabel aan de echte tabel toevoegen (en uit de tijdelijke tabel verwijderen).
 
De belasting dienst schrijft voor dat facturen die een organisatie aan klanten stuurt uniek, opeenvolgend genummerd dienen te zijn (het factuurnummer dus).
Wat je het dus het beste kunt doen is het factuurnummer genereren bij het aanmaken van de factuur in je systeem en niet bij het printen van de factuur.
Op je rapport kun je het factuurnummer dan simpel uit je database lezen.
 
weet nog niet hoe

Bedankt iedereen voor de reacties.

Vraag blijft nu nog even welke code ik moet genereren om in een tabel het unieke opvolgende factuurnummer te krijgen. Dat moet met een gebeurtenis?

In mijn situatie bestaat er een tabel tblOrders. Hieraan zijn gekoppeld de orderregels die zich bevinden in de tabel tblPlaatsing. Voor elk record in de tabel tblPlaatsing die aan bepaalde condities voldoet (het gaat hierbij om plaatsingen van advertenties in een bepaalde editie) moet een factuur worden gemaakt. Via een formulier wordt de keuze gemaakt welke editie nu kan worden gefactureerd. Op basis van dit gegeven wordt een query qryTeFacturerenPlaatsingen samengesteld. Het formulier bevat ook een voorstel voor het eerstvolgende te gebruiken factuurnummer. Wat nu zal moeten gebeuren is dat door het drukken op een knop (bijvoorbeeld een knop Aanmaak factuurrecords) de factuurrecords worden aangemaakt. De factuurrecords bevatten naast het factuurnummer ook de datum en het bedrag en meteen een aanmaancode die op 0 wordt gesteld. Hoe moet de gebeurtenis luiden om, gebruikmakend van bovenstaande gegevens, de records aan te maken.

Ik hoop dat jullie me hiermee willen helpen.

Arno.
 
Dat kun je programmeren onder de knop.
Je hebt geen tabel layouts gegeven, dus ik kan het alleen schematisch weergeven.

dim db as database()
dim strSQL as string

strSQL = "INSERT INTO tblJouwTabel "
strSQL = strSQL & "(veld1, veld2, veld3) & VALUES("
strSQL = strSQL & cstr(<waarde veld1>)
strSQL = strSQL & cstr(<waarde veld2>)
strSQL = strSQL & cstr(<waarde veld3>)
strSQL = strSQL & ")"

set db = currentdb()
docmd.setwarings false
db.execute strSQL, dbfailonerror
docmd.setwarings true
 
gegevens

Bartuls,

Ik kan niet helemaal bevatten wat deze code doet. Voor alle duidelijkheid geef ik onderstaand een aantal variabelen en tabel en veldnamen. Wil je zo aardig zijn je code hierop aan te passen. Dan begrijp ik waarschijnlijk wel wat er gebeurt en kan ik de zaak verder aanpassen aan wat ik verder nodig heb.

Op het formulier frmAanmaakFacturen staan twee velden:
1. EersteFactuurnummer (het factuurnummer dat als eerste in aanmerking komt om te worden gebruikt)
2. Factureerdatum (de datum die op de facturen moet komen te staan; deze kan afwijkend zijn van de datum van vandaag).

In de query qryTeFacturerenPlaatsingen zijn de records geselecteerd die moeten worden gefactueerd. (Dit kunnen dus meerdere records zijn). Hierin staan o.a. de volgende gegevens:

Plaatsingnr (= een uniek gegeven)
Klantnr
BedragInclBTW

In de tabel tblFacturen moeten de volgende velden worden gevuld:
Factuurnummer (moet dus berekend worden)
Plaatsingnr (uit qryTeFacturerenPlaatsingen)
Klantnr (uit qryTeFacturerenPlaatsingen)
Factuurbedrag (uit qryTeFacturerenPlaatsingen)
Factuurdatum (uit frmAanmaakFacturen)
Aanmaanteller (deze moet standaard op 0 worden gesteld)

De code zou nu moeten regelen dat alle records uit de query worden doorlopen; dat aan elk record een factuurnummer wordt gekoppeld beginnend met het nummer dat op het formulier staat. De tabel tblFacturen moet dan de records gaan bevatten voor elk geselecteerd record in de query.

Ik besef me dat ik nu heel veel vraag maar ik zou je ontzettend dankbaar zijn als dit lukt.

Groet,
Arno.
 
dim db as database()
dim rs as recordset
dim strSQL as string
dim lngFactuurnummer as long

lngFactuurnummer = forms![frmAanmaakFacturen]![EersteFactuurNummer]
set db = currentdb()
set rs = db.openrecordset("qryTeFacturerenPlaatsingen")
rs.movelast
rs.movefirst
do while rs.eof

strSQL = "INSERT INTO tblFacturen "
strSQL = strSQL & "(Factuurnummer, Plaatsingnr, Klantnr, Factuurbedrag, Factuurdatum, Aanmaanteller) & VALUES("
strSQL = strSQL & cstr(lngFactuurnummer) & ", "
strSQL = strSQL & cstr(rs![Plaatsingnr) & ", "
strSQL = strSQL & cstr(rs![Klantnr]) & ", "
strSQL = strSQL & cstr(rs![Factuurbedrag]) & ", "
strSQL = strSQL & "#" & cstr(forms![frmAanmaakFacturen]![Factureerdatum]) & "#"
strSQL = strSQL & ");"

set db = currentdb()
docmd.setwarings false
db.execute strSQL, dbfailonerror
docmd.setwarings true

lngFactuurnummer = lngFactuurnummer + 1
rs.movenext
set rs = nothing
set db = nothing


Ik heb bovenstaande code niet kunnen testen, ook weet ik niet of ik overal van het juiste veld type ben uitgegaan (string, numeriek of datum), dat had je namelijk nergens vermeld.
Houd er ook rekening mee dat als je een factureersysteem voor een bedrijf maakt dat je wettelijk verplicht bent om een opgestuurde factuur altijd EXACT moet kunnen reproduceren.
 
bedankt

Bartuls,

Ontzettend bedankt voor de tijd die je hierin hebt willen steken. Deze code kan ik nu inderdaad redelijk interpreteren. Ik zal het in de praktijk uittesten. De eventuele type-omzettingen kan ik verder zelf regelen. Er is een wereld voor me open gegaan; sterker nog - een lang gekoesterde wens om geautomatiseerd records te kunnen toevoegen (ook in andere toepassingen die ik heb) is hiermee in vervulling gegaan.

Bedankt ook voor je waarschuwing; ik wist ervan. Een echte kopie van de factuur, zoals nu nog in het bedrijf wordt toegepast, is voldoende.

Groet,
Arno.
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan