Openen formulier werkt niet

Status
Niet open voor verdere reacties.

gangstalaz

Gebruiker
Lid geworden
13 sep 2010
Berichten
131
Hallo,

Ik heb een probleem met het openen van een formulier met een opdrachtknop.
Omdat ik deze code ook voor een ander formulier gebruik, snap ik niet waarom het niet werkt. Ik heb andere namen geprobeerd maar ik krijg nog steeds de volgende foutmelding:

"Kan het formulier Bestelform niet vinden waarnaar wordt verwezen in een macro-expressie of in VB programmacode."

Formulier20.JPG

Code:
Private Sub Knop17_Click()
    Dim frm As Form, ctl As Control
    Dim varItem As Variant
    Dim strSQL As String
    Dim stDocName As String

        [COLOR="red"]Set frm = Forms!Bestelform[/COLOR]
        Set ctl = frm!lstLeverancier
        
       
        
            For Each varItem In ctl.ItemsSelected
                   x = (ctl.ItemData(varItem))
                   'X = varItem
                   ''MsgBox (strsql)
            Next varItem
  
  'DoCmd.OpenForm ("Bestelform")
  
  
  strSQL = "tblArtikel_Leverancier.Artikelen_ID in (" & x & ")"
  'strsql = "tblArtikel_Leverancier.Artikelen_ID in (20)"
  DoCmd.OpenForm "Bestelform", , , strSQL
End Sub

Maak ik ergens toch een fout? OF Heeft iemand misschien een ander code die dezelfde werking heeft?

Alvast bedankt!
 
Waarom gebruik je überhaupt de Set instructie? Volgens mij doe je er verder niks mee...
 
Het was een werkende code. Dus ik dacht dat het dan hier ook zou werken.
Het was meer kopieren plakken en aanpassen. Ik weet niet waarom.:$
 
Als je een object instelt, moet je aangeven wat het objecttype is. Dat doe je hier niet. Als je een extern formulier wilt aanroepen, moet je de volledige naam gebruiken. Dus zo:
Code:
    Set frm = Forms![COLOR=black]Bestelform[/COLOR].Form
Als je op het formulier zelf naar je form wilt refereren, kan het wat korter:
Code:
    Set frm = Me
 
Ja ik snap je. Maar ik krijg nog steeds dezelfde foutmelding.

Dat het een foutmelding geeft is al heel raar.

Ik selecteer eerst een bestelde artikel uit de bestellingenlijst. Hierna is het de bedoeling dat deze artikel door middel van een opdrachtknop (met deze code erin) verwezen wordt naar het formulier.
 
Ik zie net dat het formulier "Bestelform" niet tussen de objecten staat.

Objecten.jpg

Waar kan dit aan liggen? En kan dit de oorzaak zijn?
 
Laatst bewerkt:
Omdat ik dat probleem niet heb kunnen oplossen. Heb ik de volgende code voor een opdrachtknop gebruikt:

Code:
Private Sub Knop20_Click()
    
    Dim frm As Form, ctl As Control
    Dim varItem As Variant
    Dim strsql As String
    Dim stDocName As String
   
        Set frm = Forms!Bestellingzoeker
        Set ctl = frm!lstLeverancier
        strsql = "tblBestelRegels.BestelRegel_ID in ("
        
            For Each varItem In ctl.ItemsSelected
                   strsql = strsql & ctl.ItemData(varItem) & ","
            Next varItem
            strsql = (Left$(strsql, Len(strsql) - 1))
            strsql = strsql & ")"
   
    stDocName = "rpt_tblBestelRegels"
    DoCmd.OpenReport stDocName, acPreview, , strsql
    
End Sub

Zo selecteer ik de artikelen uit de lijst. En krijg ik de geselecteerde artikelen in rapporten tevoorschijn. Dus ik krijg ze niet eerst in het formulier te zien.

Eigenlijk moet ik alle artikelen die geselecteerd zijn in 1 rapport krijgen. Maar daar ben ik nog niet aan uitgekomen.

Als iemand een idee heeft, hoor ik die graag!
 
Laatst bewerkt:
Ook hier snap ik het probleem eigenlijk niet; een rapport met bestelde artikelen is, neem ik aan, gebaseerd op een record uit de tabel Bestellingen, met de gekoppelde artikelen uit BestellingRegels. In je rapport zie je dus per definitie al alleen de artikelen die bij een bestelling horen. En dat geldt uiteraard ook voor het formulier waarmee je de bestelling maakt. Volgens mij had je dat ook zo ingericht...
 
Hier heb ik het wel over een ander rapport en formulier (die aangemaakt is voor dit)
Ik kreeg eerst alle bestellingen (bestellingID) op een appart rapport.
Maar nu komen alle bestellingen van dezelfde leverancier op ��n rapport tevoorschijn. Dit is voor een wekelijkse rapportage aan de productieleider.

Ik weet niet precies wat ik heb aangepast omdat ik zoveel heb zitten veranderen eigenlijk.
Maar in de SQL van het rapport komen drie tabellen voor. (tblLeveranciers, tblBestellingen, tblBestelRegels). BestelRegel_ID legt de link tussen het rapport en het bestellinglijst.
De code van de opdrachtknop ziet er nog hetzelfde uit.

Bedankt voor je reacties Octafish!!!
 
Bij een rapport waarbij je per leverancier de bestellingen wilt zien, kun je nog steeds zonder vba uit de voeten. Je maakt in het rapport dan een groepering op Leverancier, en vervolgens een groep op Bestelling. Beide groepen geef je een groepskoptekst. In de detailsectie zie je dan per leverancier de bestellingen, en per bestelling de artikelen.
Voor het formulier doe je hetzelfde, maar dan met een Hoofdformulier Leverancier, daarop een Subformulier Bestelling, en daar weer op een subformulier Artikelen.
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan