Sql bij form_open

Status
Niet open voor verdere reacties.

anlag1

Gebruiker
Lid geworden
31 okt 2010
Berichten
144
Goeiedag allemaal,

met onderstaande code probeer ik 2 velden uit een tabel in een
doorlopend formulier te krijgen, krijg echter alleen de eerste record.
terwijl ik ze allemaal wil zien
Code:
Private Sub Form_Open(Cancel As Integer)
    Dim strSql As String
        strSql = "SELECT tbl_doc_type.DOCID, tbl_doc_type.DOCDESCRIPTION_GB FROM tbl_doc_type"
        With CurrentDb.OpenRecordset(strSql)
            If Not .EOF And Not .BOF Then
                Me.DocID = .Fields("DOCID")
                Me.DOCDESCRIPTION_GB = .Fields("DOCDESCRIPTION_GB")
            End If
        End With
End Sub
Doe iets duidelijk niet goed, maar zie niet wat
Kan iemand mij helpen?

alvast bedankt
André :confused:
 
Een doorlopend formulier koppel je aan een gegevensbron, niet aan één record. En dat doe je. Oftwel:
Code:
Private Sub Form_Load()
    Me.RecordSource = "tbl_doc_type"
End Sub
 
Dank je Michel voor je snelle reactie.
Maar hoe ziet de sql code er dan uit om alle records in het formulier zichtbaar te krijgen?
Gr.
André
 
?? Als je een formulier aan een recordsource koppelt, dan is dat genoeg. Zie je alle records. Geen idee dus wat je aan het brouwen bent!
 
Ik heb alleen jou code toegepast, kreeg lege records terug.
had iets gelezen over controlsource, ben hiermee aan het vogelen gegaan.
heb twee regels code toegevoegd, onderstaand levert nu alle records in het formulier, of dit de juiste weg is weet ik niet.
Code:
Private Sub Form_Load()
    Me.RecordSource = "tbl_doc_type"
    Me.DocID.ControlSource = "DOCID"
    Me.DOCDESCRIPTION_GB.ControlSource = "DOCDESCRIPTION_GB"
End Sub
mijn volgende vraag is hoe ik hier een selectie op toe kan passen,
bijv. laat alle records zien met DOCID = CMP ("SELECT * WHERE DOCID = 'CMP'")

André
 
Je hebt er niet bij vermeld dat je een niet-gebonden formulier had gebruikt. In dat geval zijn de velden inderdaad niet gekoppeld aan de tabelvelden. Deze manier van werken heeft overigens geen enkel nut, tenzij je hetzelfde formulier gebruikt om er steeds een andere bron en andere velden aan te hangen, maar dit terzijde. Laten we zeggen: het is een goede oefening :)
Je wilt het formulier verder filteren? Dat kan in de RecordSource (idee van jouw query) of met een formulierfilter.
Code:
sFilter = "DOCID = 'CMP'"
Me.Filter = sFilter
Me.FilterOn = True
En dat zet je dan ergens achter, misschien een knop of een keuzelijst (in het laatste geval moet de code natuurlijk anders)
 
ai, heb je op het verkeerde been gezet, sorry.
maar dit is wat ik bedoel, je heb me weer prima geholpen.
Ik wist niet dat je op deze manier ook een recordsource kon instellen.
Code:
   Me.RecordSource = "SELECT tbl_doc_type.DOCID, tbl_doc_type.DOCDESCRIPTION_GB FROM tbl_doc_type WHERE DOCID = 'CMP' OR DOCID = 'CNP'"
    Me.DocID.ControlSource = "DOCID"
    Me.DOCDESCRIPTION_GB.ControlSource = "DOCDESCRIPTION_GB"
werkt prima zo, bedankt,
Gr. André
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan