Jag har en printfunktion i en Access-databas. Två knappar, trycker man på den ena så ska endast den aktuella posten skrivas ut och trycker man på den andra så ska alla poster skrivas ut.
Problemet är bara att alla poster skrivs ut vilken knapp man än trycker på. I hjälpen i Access står det att man kan använda sig utav OpenReport för att tala om vilka poster som ska skrivas ut.
Så här ser koden ut för tillfället och den skriver alltså ut samtliga poster. Hur ska det se ut ifall jag istället vill at endast den aktuella posten ska skrivas ut?
Private Sub Image99_Click()
On Error GoTo Err_Image99_Click
Dim stDocName As String
stDocName = "Faktablad"
DoCmd.OpenReport stDocName, acNormal
Skapa en fråga som returnerar önskad post som sedan rapporten Faktablad baseras på. Skriv in ett villkor för ID-fältet enligt Formulär![Formulärnamn]![Kontrollnamn] i din fråga.
Kan du specifera det där? När det gäller databaser och programmering så har jag en del att lära. Jav vet ju hur man gör en fråga, men jag förstod ändå inte vad du menade riktigt. Kan du kanske specifera lite mer i detalj?
Skapa först en fråga där du anger alla de fält som skall vara med i din rapport (Faktablad). Se till att ett av fälten har unika värden, förslagsvis ett räknarefält med namnet ID. I detta ID-fält anger du ett villkor som refererar till motsvarande ID-kontroll (t ex en osynlig textruta)i ditt formulär (om du nu har skapat ett sådant som utskriften skall styras ifrån...). Om du i din fråga skriver in en referens som villkor till denna textruta enligt exemplet i mitt tidigare inlägg så blir rapporten begränsad till denna enda post.
Jag brukar själv alltid tillämpa denna metod.
Ok, då förstår jag. Men kan man inte göra detta med en Rapport lika gärna? Jag menar, kan man inte länka ihop rapporten med formuläret på det sättet du beskrev?
Jag har testat det du sa men förstår inte riktigt hur jag ska få det att fungera. Jag kom att tänka på en annan sak. Jag har en knapp för att förhandsgranska en rapport, och när man trycker på den så förhandsgranskas bara den aktuella posten. Så här ser koden ut för detta:
Private Sub Filgranskning_Click()
On Error GoTo Err_Filgranskning_Click
If IsNull(Me![ID]) Then
MsgBox "Skriv adressinfo innan du förhandsgranskar faktablad."
Else
DoCmd.DoMenuItem acFormBar, acRecordsMenu, acSaveRecord, , acMenuVer70
DoCmd.OpenReport "Faktablad", acPreview, , "[ID] = " & [ID]
End If
Exit_Filgranskning_Click:
Exit Sub
Err_Filgranskning_Click:
MsgBox Err.Description
Resume Exit_Filgranskning_Click
End Sub
Eftersom ID finns med i koden och detta fält även finns med i tabellen där uppgifterna hämtas så visas ju endast den aktuella posten. Jag kom nu att tänka på ifall man kan konvertera denna kod till att skriva ut istället för att förhandsgranska. Då skulle man ju kunna skriva ut rapporten med information för bara den aktuella posten. Kan man göra så häroch hur ska koden se ut?
Kanske du kan hjälpa mig med en sak till. Hur kan man göra mouseovers i en Access-databas. Du kan kolla in detta i mitt tidigare inlägg, hjälp med on_click event. Jag skrev det i detta forumet men bad sedan att få det flyttat till Visual Basic forumet, så det ligger där numera.
Det enklaste torde vara att använda två lika stora knappar (med olika bilder på)och använda visible-egenskapen ihop med händelserna MouseDown och MouseUp (eller på svenska Vid musknapp ned resp. Vid musknapp upp)
T ex:
Private Sub cmdChange_MouseDown(Button As Integer, Shift As Integer, X As Single, Y As Single)
cmdChange1.Visible=False
cmdChange2.Visible=True
End Sub
och
Private Sub cmdChange_MouseUp(Button As Integer, Shift As Integer, X As Single, Y As Single)
Ok. Vad jag börjar med är alltså att infoga en knapp eller en bild och sedan skriver koden du gav mig för den. Men hur får jag sedan in den andra bilden. Vill du förklara lite mer om bilderna, hur jag ska få in dem och vilken kod som ska gå för vilken knapp? Detta är säkert hur lätt som helst men just nu är jag alldeles för sliten för att fatta det.