Avatar billede phnielsen Nybegynder
25. oktober 2002 - 13:34 Der er 20 kommentarer og
1 løsning

Printer meddelse

Hej

Jeg har lavet en formular der henter data fra en anden database. Hvis der er oprettet en nypost skal der udskrives en rapport automatisk.
For ikke brugeren skal forstyrres af meddelsen om at der udprintes har jeg forsøgt denne kode.

DoCmd.Echo false
DoCmd.OpenReport "repLabel", acViewNormal
DoCmd.Echo True
Men meddelsen kommer stadig omend ganske kort.

hvad ellers kan jeg gøre???????
Avatar billede hossein Nybegynder
25. oktober 2002 - 13:35 #1
docmd.setwarnings flase
...
docmd.setwarnings True
Avatar billede terry Ekspert
25. oktober 2002 - 13:37 #2
what message?
Avatar billede phnielsen Nybegynder
25. oktober 2002 - 13:41 #3
Når der udskrives kommer der en meddelse om at der sendes til printeren.
Avatar billede phnielsen Nybegynder
25. oktober 2002 - 13:44 #4
eks.
"Udskriver "Rapport1" til printer "printer1 på port lpt1"
Avatar billede terry Ekspert
25. oktober 2002 - 13:46 #5
Not sure that it can be removed!
Avatar billede terry Ekspert
25. oktober 2002 - 13:48 #6
But is that a great problem?
Avatar billede phnielsen Nybegynder
25. oktober 2002 - 14:04 #7
Ja lidt for den køre hele tiden dvs. hveranden minut udskrives der hvilket medføre at skærmen blinker mens de arbejder. Men hvis ikke det kan lade sig gøre så er den jo ikke længer.

Er det windows eller Access der sender den besked, mit gæt efter at jeg har tænkt lidt over det er, window.
Avatar billede terry Ekspert
25. oktober 2002 - 14:06 #8
Printer (windows)
Avatar billede hossein Nybegynder
25. oktober 2002 - 14:08 #9
måske en API kald kan hjælpe!
Avatar billede phnielsen Nybegynder
25. oktober 2002 - 14:08 #10
hvad mener du terry
Avatar billede terry Ekspert
25. oktober 2002 - 14:10 #11
Sounds strange that you have to print a report every couple of minutes without someone haveing to pick them up and look at them. You could send them via a mail fro printing later!
Avatar billede terry Ekspert
25. oktober 2002 - 14:11 #12
Windows printer module shows the dialog
Avatar billede terry Ekspert
25. oktober 2002 - 14:13 #13
NOTE: I have NOT checked this

(Q) How can I hide the "Printing" dialog that comes up when a report is sent of to a printer?

(A) The Printing dialog is an internal Access dialog, and as such, cannot be hidden directly from code.

    However, using a form's Timer event, we can minimize the dialog window moments after it comes up. This way, the window cannot be restored and it automatically destroys itself once the print job is completed.

    Note that the dialog might be visible for the amount of time specified in the form's TimerInterval property, and the time it takes Access to run this code.

The use of Timer event is crucial here since this is the only normal means of running any code when a modal window is displayed in Access.

Create a form (that you can open in Hidden mode) and set it's Timer property to 300. The OnTimer event will read as

Private Sub Form_Timer()
    Call sWatchAccess(Application.hWndAccessApp)
End SubNow, from the form which has the Print Report button, put code similar to this

Private Sub Command0_Click()   
  On Error Resume Next   
  DoCmd.OpenForm "Form2"
  DoEvents:  DoEvents:  DoEvents
  DoCmd.OpenReport "Sales by Category", acViewNormal
  DoCmd.Close acForm, "Form2"
End Subwhere Form2 is the hidden form with the Timer event.

'************* Code Start *************
Private Declare Function apiGetClassName Lib "user32" _
  Alias "GetClassNameA" _
  (ByVal hWnd As Long, _
  ByVal lpClassname As String, _
  ByVal nMaxCount As Long) _
  As Long

Private Declare Function apiGetWindowText Lib "user32" _
  Alias "GetWindowTextA" _
  (ByVal hWnd As Long, _
  ByVal lpString As String, _
  ByVal aint As Long) _
  As Long
 
Private Declare Function apiGetLastActivePopup Lib "user32" _
  Alias "GetLastActivePopup" _
  (ByVal hWndOwnder As Long) _
  As Long
 
Private Declare Function apiShowWindow Lib "user32" _
  Alias "ShowWindow" _
  (ByVal hWnd As Long, _
  ByVal nCmdShow As Long) _
  As Long
 
Private Const MAX_LEN = 255
Private Const GW_HWNDNEXT = 2
Private Const SW_HIDE = 0
Private Const SW_MINIMIZE = 6
Private Const SW_SHOWMINNOACTIVE = 7
Private Const SW_SHOWDEFAULT = 10

Sub sWatchAccess(ByVal hWndApp As Long)
'Required: hWndAccessApp (Application handle)
'
  On Error GoTo Err_Handler
  Dim lnghWndChild As Long
  Dim strCaption As String
  Dim strClass As String
  Dim lngRet As Long
 
  'Get the last active popup in hWndApp instance
  lnghWndChild = apiGetLastActivePopup(hWndApp)
  strClass = fGetClassName(lnghWndChild)
  strCaption = fGetCaption(lnghWndChild)
  'is this the modal window?
  If strClass = "#32770" And Trim(strCaption) = "Printing" Then
    lngRet = apiShowWindow(lnghWndChild, SW_SHOWMINNOACTIVE)
  End If

Exit_Here:
  Exit Sub
Err_Handler:
  MsgBox "Error #: " & Err.Number & vbCrLf & Err.Description, _
    vbCritical + vbOKOnly, "sWatchAccess-Runtime Error"
  Resume Exit_Here
End Sub

Private Function fGetClassName(ByVal hWnd As Long) As String
Dim strBuffer As String
Dim lngRet As Long
  strBuffer = String$(32, 0)
  lngRet = apiGetClassName(hWnd, strBuffer, Len(strBuffer))
  If lngRet > 0 Then
    fGetClassName = Left$(strBuffer, lngRet)
  End If
End Function

Private Function fGetCaption(ByVal hWnd As Long) As String
Dim strBuffer As String
Dim lngRet As Long
  strBuffer = String$(MAX_LEN, 0)
  lngRet = apiGetWindowText(hWnd, strBuffer, Len(strBuffer))
  If lngRet > 0 Then
    fGetCaption = Left$(strBuffer, lngRet)
  End If
End Function
'************ Code End ***************
Avatar billede phnielsen Nybegynder
25. oktober 2002 - 14:18 #14
Ja måske.

Det drejer sig om en brovægt hvor der køre en heldel lastbiler af og på.
rapporten der skal udskrives er er labels der sættes på de prøver der udtages fra lasten, når lasten er indvejet indtastes der data manuelt ind.
Avatar billede phnielsen Nybegynder
25. oktober 2002 - 15:27 #15
Kan ikke få det til at virke terry men det er måske mig der gør noget galt.
Avatar billede terry Ekspert
25. oktober 2002 - 16:38 #16
dont know I cant see your code
Avatar billede kennethrisum Nybegynder
25. oktober 2002 - 23:54 #17
det er IKKE windows der viser "printing" dialogen, det er Access eller en dårlig printer driver. Men da printeren må være indkøbt til de mange udskrifter er det nok ikke en dårlig driver.

Lav dit eget objekt som kan skrive til printeren og sørge for formateringen. det er ikke så svært!
Avatar billede terry Ekspert
27. oktober 2002 - 20:44 #18
kenneth... You are right in saying that it is access but it is NOT a bad printer driver! Good suggestion you make, in making your own object, perhaps you can make an example as it isnt so difficult?
Avatar billede kennethrisum Nybegynder
28. oktober 2002 - 16:40 #19
terry... Mht. til printer driveren findes der drivere, der insisterer på, at komme med en info-dialog når de udskriver, så det kan godt være en printer driver der forårsager det. Men det kan man se på dialogen (som jeg ikke kan se).

phnielsen... Du kan lave et objekt i VB6, der modtager et recordset som det så udskriver en rapport fra. I VB6 kan du lave rapporter nogenlunde som i Access (desværre ikke så let/avanceret som i Access). Denne rapport kan så udskrives direkte. Det er dog en lang vej at gå, for at få skærmen til at holde op med at flimre, og da jeg ikke kender dit udskrifts format, ved jeg ikke om det overhovedet kan lade sig gøre. Så jeg synes du skal leve med det (eller få brugerne til det).
Avatar billede phnielsen Nybegynder
28. oktober 2002 - 17:57 #20
hej
jeg har opgivet

jeg siger tak for hjælpen.

kan man dele de lovede point så i får lidt for jeres besvær.

mvh
poul
Avatar billede terry Ekspert
29. oktober 2002 - 08:14 #21
This IS standard message and as one of my answers says, can NOT be hidden only minimized. Pitty you cant get it to work though.
You should be able to share the points between us.

Thanks
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