Hoi,
In mijn database heb ik o.a. een tabel met artikelen.
Invoeren van een nieuw artikelnr. gebeurt via een formulier. Voor het gemak bij het invoeren van veel artikelnrs heb ik een stukje code gemaakt dat als volgt werkt:
Het aantal records wordt geteld en in het label AantalRecords gezet.
In het veld [CatNR] wordt de hoofdcategorie getikt, bijvoorbeeld 85. Dan wordt in het veld [SubCatNR] het subcategorienr getikt, bijvoorbeeld 8545. Daarna zoekt access in de tabel naar het hoogste nr dat begint met 858545, hoogt dat op met 1 en geeft dat nr aan in het label [VrstlArt] Daarmee wordt dan in die (sub)categorie het eerstvolgende vrije artikelnr weergegeven. wat dan gebruikt kan worden voor het nieuw op te voeren artikelnr.
Werkte perfect en ik was er zeer content mee.
Het hele verhaal heb ik inclusief tabel, formulier en bijbehorende rapporten in een nieuwe database moeten importeren waarna ik steeds een foutmelding krijg "compileer fout, een door de gebruiker gedefinieerd gegevenstype is niet gedefinieerd" en in de code stopt meteen bij "Dim db As Database"
Mijn logische conclusie is dat het met het importeren te maken heeft maar andere stukjes code, zoals een knopje met messagebox eronder of een knop die een rapport opent blijven wel keurig werken.
Wat gaat hier fout? Wederom bij voorbaat mijn hartelijke dank.
de code heb ik hieronder gezet: (hopelijk doe ik het goed met de "codetags")
In mijn database heb ik o.a. een tabel met artikelen.
Invoeren van een nieuw artikelnr. gebeurt via een formulier. Voor het gemak bij het invoeren van veel artikelnrs heb ik een stukje code gemaakt dat als volgt werkt:
Het aantal records wordt geteld en in het label AantalRecords gezet.
In het veld [CatNR] wordt de hoofdcategorie getikt, bijvoorbeeld 85. Dan wordt in het veld [SubCatNR] het subcategorienr getikt, bijvoorbeeld 8545. Daarna zoekt access in de tabel naar het hoogste nr dat begint met 858545, hoogt dat op met 1 en geeft dat nr aan in het label [VrstlArt] Daarmee wordt dan in die (sub)categorie het eerstvolgende vrije artikelnr weergegeven. wat dan gebruikt kan worden voor het nieuw op te voeren artikelnr.
Werkte perfect en ik was er zeer content mee.
Het hele verhaal heb ik inclusief tabel, formulier en bijbehorende rapporten in een nieuwe database moeten importeren waarna ik steeds een foutmelding krijg "compileer fout, een door de gebruiker gedefinieerd gegevenstype is niet gedefinieerd" en in de code stopt meteen bij "Dim db As Database"
Mijn logische conclusie is dat het met het importeren te maken heeft maar andere stukjes code, zoals een knopje met messagebox eronder of een knop die een rapport opent blijven wel keurig werken.
Wat gaat hier fout? Wederom bij voorbaat mijn hartelijke dank.
de code heb ik hieronder gezet: (hopelijk doe ik het goed met de "codetags")
Code:
[I]'Deze procedure opent de tabel ARTIKELEN, gaat naar de laatste record en terug naar de eerste record
'telt het aantal record
'zet dat aantal in de variabele AantalRecords
'die waarde wordt getoond in het label Aantal Records
'de gebeurtenis vindt plaats bij het verlaten van het veld Artikelcode[/I]
Private Sub Artikelcode_Exit(Cancel As Integer)
Dim db As Database
Dim rec As Recordset
Dim AantalRecords As Integer
Set db = CurrentDb()
Set rec = db.OpenRecordset("tbl_Artikelen")
rec.MoveFirst
rec.MoveLast
AantalRecords = rec.RecordCount
rec.MoveFirst
lblAantalRecords.Caption = AantalRecords
rec.Close
End Sub
Private Sub CatNr_Exit(Cancel As Integer)
Dim Cat As Long
Dim Multipl As Double
Dim extra As Integer
extra = 100
Cat = Me.CatNr
Multipl = 10000000 * CLng(Cat)
Multipl = 10& * Multipl
lblCatNr.Caption = Multipl
End Sub
Code:
[I]deze routine zorgt ervoor dat in de labels de categorienrs en de subcategorienummers geplaatst worden in de vorm van gehele getallen
'omdat het om zulke grote getallen gaat zijn de variabelen gedimd als double en is er met de variabel extra1 een trucje uitgehaald. Deze is op 100 / 1000 gezet
'en wordt dan als het ware aan het CatNr en/of SubCatNr "geplakt". Daarmee voorkom je een overloop fout wat een fout is van te grote getallen proberen te plaatsen
'ten laatste wordt een voorlopig max artikelnummer voor die Categorie / Subcategorie aangemaakt met het optellen van 9999 Daarmee kunnen we straks wellicht
'zoeken naar het bestaande maximale artikelnummer. Deze variabel (VrlArt) wordt in het label VoorlArt (Voorlopig Artikelnummer) bewaard.
'Zodra het veld CatNR wordt ge-enterd vindt de gebeurtenis plaats[/I]
Private Sub SubCatNr_Exit(Cancel As Integer)
Dim Cat As Long
Dim Multipl As Double
Dim extra As Integer
extra = 100
Cat = Me.CatNr
Multipl = 10000000 * CLng(Cat)
Multipl = 10& * Multipl
lblCatNr.Caption = Multipl
Dim SubCat As Long
Dim Multipl1 As Double
Dim extra1 As Integer
extra1 = 10000
SubCat = Me.SubCatNr
Multipl1 = SubCat * extra1
lblSubCatNr.Caption = Multipl1
lblBasisNr.Caption = Multipl + Multipl1
Dim Multipl2 As Double
Dim VrlArt As Double
Multipl2 = 9999
VrlArt = Multipl + Multipl1 + Multipl2
lblVoorlArt.Caption = VrlArt
Dim VrstlArt As Double
VrstlArt = DMax("[Artikelcode]", "tbl_Artikelen", "[Artikelcode] < " & VrlArt)
VrstlArt = VrstlArt + 1
lblVrstArt.Caption = VrstlArt
End Sub
Laatst bewerkt: