[VBA] Kan geen recordset setten in dynamische form

Pagina: 1
Acties:

Onderwerpen


Acties:
  • 0 Henk 'm!

  • BSeB
  • Registratie: Juni 2001
  • Laatst online: 15-08 13:07
Ik probeer een dynamische form te bouwen. Echter bestaat de form recordset uit een recordset en niet uit een recordsource (recordset geeft me meer mogelijkheden om bijvoorbeeld kolommen ook te filteren en dynamisch toe te voegen (kon het niet voor elkaar krijgen met controlsource, als iemand dit wel kan dan ben ik zeker geintereseerd in deze optie).

Echter bij het lopen van onderstaande code krijg ik een error op de lijn:
set frm.recordset = required_recordset

Als ik het doe met code die een bestaande form opent dan werkt dit wel. Bij een volledig vanuit code gegenereerde oplossing loopt het vast.

De error die ik krijg is:

Run-time error '2448':
You cant'assign a value to this object.

Is er iemand die me hiermee kan helpen aangezien dit in mijn project het laatste stukje gaat zijn om een dynamisch form te bouwen.

code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
Sub Dynamic_Subform()
    
    Dim frm As Object
    Dim ctlNew As Control
    Dim ctlNew_1 As Control
    Dim ctlLabel As Control
    Dim query_string As String
    Dim required_recordset As ADODB.Recordset
    
    Set required_recordset = New ADODB.Recordset
    
    ' Create new form and get pointer to it.
    Set frm = CreateForm
    frm.DefaultView = 2
    
    'DoCmd.OpenForm frm.Name
    ' Set query to correct string
    query_string = "SELECT tbl_action_options.*  FROM tbl_action_options;"
    
    ' Query for Recordset
    Set required_recordset = database(query_string)
    Debug.Print required_recordset.RecordCount
       
    ' Set the recordsource to the correct query/tbl
    Set frm.Recordset = required_recordset
end sub

Acties:
  • 0 Henk 'm!

Verwijderd

Heb zo'n idee dat het komt omdat het nieuwe formulier met CreateForm in design view wordt geopend. En dan is het klaarblijkelijk niet mogelijk om de Recordsource van het formulier te zetten.

Je zou eens kunnen proberen het formulier eerst op te slaan en dan in normale of datasheetmodus te openen. Misschien dat het dan werkt?

Acties:
  • 0 Henk 'm!

  • BSeB
  • Registratie: Juni 2001
  • Laatst online: 15-08 13:07
Gevonden, naar aanleiding van jouw reactie eerst een versie gebouwd waarin het object werd opgeslagen en hierna weer geopend.
Op dat moment was het mogelijk de recordset te clonen, maar niet mogelijk om controls toe te voegen. Door het wisselen van layoutmodus was dit wel mogelijk.

Uiteindelijk dus een werkende tussenoplossing gevonden. Hierna toch weer de stoute schoenen aan getrokken en geprobeerd ditzelfde te doen zonder op te slaan en meteen te wisselen van layout en wat bleek.... Dit werkt ook. De code is hiermee een stuk leaner geworden en ook beter leesbaar.

Dank je voor je tip hiermee heb ik mijn resultaat bereikt.