24. maj 2006 - 23:58Der er
12 kommentarer og 2 løsninger
Ikke åbne form HVIS ingen data
Dumt spørgsmål herfra.... Er gået helt i sort -- vil undgå at en form vises hvis der ikke er nogen data. Bruger skal bare se en msgbox og ikke andet. Men er løbet tør for ideer.
Ved rapporter er det jo simpelt bare sætte lidt kode på "Ved åbning"
a la
Private Sub Report_NoData(Cancel As Integer) MsgBox "en besked, vbInformation, "Ingen data registreret" Cancel = True End sub
Okay, nu har jeg undersøgt det lidt mere, og det eneste jeg kan tilbyde er en variation over det svar som spg allerede har givet. Det er lidt kode man kan lægge i Open event:
Private Sub Form_Open(Cancel As Integer) If DCount("*", Me.Recordset.Name) = 0 Then Cancel = True End If End Sub
'hvis ingen records annuller åbning af form If Form_frmPDAdataUBruger.RecordsetClone.RecordCount = 0 Then Cancel = True
ErrHandler: ' Err_Handler er nødvendig da form kun åbnes hvis der er nogen records. ' Hvis der ikke er oprettet ErrHandler og der ikke er ledige tider => RunTime Error If Err = 2501 Then
MsgBox "Alle enheder er tilknyttet til en bruger.", vbInformation, "Alt OK!"
Jeg ved terry's løsning lyder besnærende, og han har jo også fået point for den, men jeg tror ikke du har testet den, for jeg kan ikke få den til at virke. Den vil, i hvert fald nogen gange, kun returnere en RecordCount på 0, selvom den underliggende forespørgsel faktisk vil returnere data. Hvorfor ved jeg ikke, men jeg har som sagt testet det. I mit tilfælde skal en underliggende forespørgsel returnere 1 række, men kun hvis jeg bruger DCount funktionen, vil den også vise det. Dvs. du kan risikere, at din form ikke vil blive vist, selv om der faktisk er rows at vise.
Hmm.. jeg må vist give en halv undskyldning. Jeg havde sat postsættypen til Snapshot. Det var derfor det ikke virkede. I øvrigt kan man også bruge me.recordset.recordcount i stedet for me.recordsetclone.recordcount, men det er vist bare en detalje.
Using Dcount can also fail if your not carefull. Lets say you open the form with a filter criteria. For example: DoCmd.OpenForm "SomeFormOrOther, , , "ID = 12345678"
If the criteria wasnt included in your DCount then it wouldnt work, in this case .RecordCount would always work.
Synes godt om
Ny brugerNybegynder
Din løsning...
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.