Avatar billede rickie Juniormester
01. august 2006 - 17:16 Der er 10 kommentarer og
1 løsning

if sats med 2 muligheder

Hej,

Hvordan får jeg access (VB) til at tjekke i en table om en kunde er printet ud eller ikke [table=Brev], [Felt=Printed].

Hvis ja så skal der komme en meddelelse = "Der findes intet at printe" og hvis kunden ikke er printet så skal der komme fölgende:

    stDocName = "repBrev"
    DoCmd.OpenReport stDocName

Response = acDataErrContinue
prompt = "Vill du markera breven som utskrivna?"
    If MsgBox(prompt, vbYesNo) = vbYes Then

    stDocName = "qryMarkeraBrev"
    DoCmd.OpenQuery stDocName
    End If
Avatar billede mugs Novice
01. august 2006 - 17:32 #1
Du må have et unikt felt i tabellen Brev, der relaterer sig til et andet felt i en anden tabel, så du hele tiden er siker på, at du måler på den rigtige kunde.
Avatar billede rickie Juniormester
01. august 2006 - 17:43 #2
Det skulle vel ikke väre nödvändigt da qryMarkeraBrev markerer om de er printet eller ikke?

Den skal fölgende:
Tjekke i table Brev om brevet er printet ud eller ikke. Er det ikke skal det printes ud. Er der ikke nogle breve at printe skal den komme med meddelelsen at der ikke er nogle breve at printe.
Avatar billede kjulius Novice
01. august 2006 - 22:17 #3
Du kan bruge en funktion, der hedder DLOOKUP:

If DLOOKUP("Printed", "Brev", "kriterie til at finde den rigtige row i tabellen Brev") = "Ja" Then

  Msgbox "Der findes intet at printe"

Else

    stDocName = "repBrev"
    DoCmd.OpenReport stDocName

Response = acDataErrContinue
prompt = "Vill du markera breven som utskrivna?"
    If MsgBox(prompt, vbYesNo) = vbYes Then

    stDocName = "qryMarkeraBrev"
    DoCmd.OpenQuery stDocName
    End If

End If
Avatar billede mugs Novice
02. august 2006 - 05:43 #4
kjulius > Jeg tror ikke det er det der menes. Se min kommentar. Jeg tror simpelthen der kan være flere breve der ikke er printet, og rickie efterlyser en simpel løkke, der løber alle postrer igennem og udskriver dem, hvis feltet printet er = false.
Avatar billede rickie Juniormester
02. august 2006 - 08:55 #5
Det er som Mugs skriver. Jeg skal pröve at forklare lidt bedre.
Har lavet en formel hvor der bookes breve. Når et brev er booket har det "status not printed". Når det er printet opdaterer qryMarkeraBrev det til status printed.
Når man trykker på skriv ud og der ikke findes nogle breve at skrive ud så skal der komme en msg (VbOKOnly) som forklarer at der ikke er nogle breve at skrive ud. Hvis der er breve at skrive ud så skal den köre:
stDocName = "repBrev"
    DoCmd.OpenReport stDocName

Response = acDataErrContinue
prompt = "Vill du markera breven som utskrivna?"
    If MsgBox(prompt, vbYesNo) = vbYes Then

    stDocName = "qryMarkeraBrev"
    DoCmd.OpenQuery stDocName
    End If

:-)
Avatar billede kjulius Novice
02. august 2006 - 09:25 #6
Okay, men så kan du vel bruge funktionen DCOUNT i stedet (eller måske ikke *G*):

If DCOUNT("Printed", "Brev", "Printed = 'Ja'") = 0 Then

  Msgbox "Der findes intet at printe"

Else

    stDocName = "repBrev"
    DoCmd.OpenReport stDocName

Response = acDataErrContinue
prompt = "Vill du markera breven som utskrivna?"
    If MsgBox(prompt, vbYesNo) = vbYes Then

    stDocName = "qryMarkeraBrev"
    DoCmd.OpenQuery stDocName
    End If

End If

Jeg går her ud fra, at den kode du opgiver rent faktisk udfører loopet og udskriver alle breve, hvor der ikke er en markering for udskrevet. Denne formodning er baseret på, at du ikke angiver noget kriterie før kaldet af koden, altså går jeg ud fra, at det er alle breve der bliver udskrevet og evt. efterfølgende markeret som udskrevet. Måske et forkert resonnement?
Avatar billede mugs Novice
02. august 2006 - 09:31 #7
Noget i denne stil (Jeg er lidt presset på arbejde og har ikke tid til at prøve den):

Dim db As Database, Rst As Recordset
Set db = CurrentDb
Set Rst = db.OpenRecordset("Brev",dbOpenDynaset)
While Not Rst.EOF
If printet = false then
stDocName = "repBrev"
DoCmd.OpenReport stDocName
end if
Rst.MoveNext
Wend
Rst.Close
Set Rst = Nothing
Avatar billede rickie Juniormester
02. august 2006 - 09:56 #8
Mugs > det er det jeg skal bruge. Den virker bare ikke som tänkt.....måske når du har mere tid ;-)
Avatar billede mugs Novice
02. august 2006 - 10:18 #9
Får du nogen fejl?
Avatar billede rickie Juniormester
02. august 2006 - 10:43 #10
Nej det gör jeg ikke men den skriver ud uanset om det er printet eller ikke. Her er koden:

Private Sub SkrivUt_Click()
DoCmd.SetWarnings False

Dim db As Database, Rst As Recordset
Set db = CurrentDb
Set Rst = db.OpenRecordset("tblBrev", dbOpenDynaset)
While Not Rst.EOF

    If Printet = False Then
    stDocName = "repBrev"
    DoCmd.OpenReport stDocName

    stDocName = "qryMarkeraBrev"
    DoCmd.OpenQuery stDocName
    End If

Rst.MoveNext
Wend
Rst.Close
Set Rst = Nothing

End Sub

:-)
Avatar billede rickie Juniormester
31. marts 2011 - 11:36 #11
Lukker
Avatar billede Ny bruger Nybegynder

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.

Loading billede Opret Preview
Kategori
Dyk ned i databasernes verden på et af vores praksisnære Access-kurser

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester