[ mpaja @ 23.05.2014. 16:08 ] @
Pozdrav svima posle dužeg vremena. Potrebna mi je pomoć da rešim jedan zaista čudan problem:

Kreiran je report u acces2003-ci koji se poziva iz forme klikom na dugme prilikom čega mu se prosledjuje uslov koji rekord da prikaže. Prikaz je
u preview modu i prilikom poziva report odradi sve kako treba (podaci, formatiranje i dr.) i prikaže na ekranu, sve je OK. Na desni klik miša i izbor
opcije da se report štampa na default štampač, pokrene se štampa ali umesto da se odštampa ono što je izveštaj odštampa se forma sa koje je
report pozvan.

Da li se neko susretao sa ovakvim problemom i ako može pomoć da ga nekako rešim

Hvala!
[ Getsbi @ 23.05.2014. 17:51 ] @
Mogu jedino da predpostavim šta je. Desnim klikom na formu ti šalješ štampaču nalog da štampa formu, a ne izveštaj.
Probaj da staviš negde u meniju ikonicu štampača i pokreni štampanje izveštaja u momentu dok je izveštaj na ekranu u preview modu.

Customize > kartica Commends > kategorija File > komanda Print i odvuci je na tvoj meni.
Ako neznaš kako da napraviš svoj meni, potraži na forumu. Negde sam ostavio uputstvo.
[ mpaja @ 23.05.2014. 18:08 ] @
Svi moji izveštaji rade na istom principu i malo mi je sad da ne kažem sta da ovaj nece da radi kako treba tj desni klik>print i slanje na printer vec da je potrebna gimnastika da bi se odstampalo rpt koji se formira kako treba i nalazi u sopstvenom prozoru, ne razumem.
[ Getsbi @ 23.05.2014. 18:46 ] @
Ako klikneš na formu Acccess će pokupiti formu i odštampati je. Trebalo bi da klikneš na otvoreni izveštaj na ekranu.
Ako neće tako, uzmi tvoj program i osiromaši ga tako da imaš jedan izveštaj koji štampaš zadovojavajuće i taj pronblematičan, te zakači kao primer. Probaćemo da nađemo grešku.
[ SLOJ.1973 @ 23.05.2014. 18:52 ] @
Probaj sledece:na formi sa koje pozivas izvestaj onemoguci shortcut menu bar (polje ostavi prazno), koji sluzi za stampu,a dozvoli samo na izvestaju.Pozdrav.
[ mpaja @ 23.05.2014. 19:09 ] @
Da bi se odštampao izveštaj desni klik ide na prozor u kojem se on prikazuje i tada se pojavljuje meni sa opciom print i tada bi trebalo da se taj izveštaj iz prozora pošalje na štampač a on pošalje formu iz koje je preko VBA koda izveštaj pozvan i formiran.
[ SLOJ.1973 @ 23.05.2014. 19:14 ] @
Da kojim slucajem prilikom pozivanja izvestaja u kodu ne stoji da neko polje na formi dobija fokus posle otvaranja samog izvestaja? Hajde bar okaci kod koji otvara izvestaj.
[ mpaja @ 23.05.2014. 19:22 ] @
Uradio i ovo što je kolega sloj predložio i ništa, opet isto. Na desni klik je moguće dobiti meni sa opcijama samo ako se klikne na prozor na kome se prikazuje izveštaj. Proba da se direktno pošalje na default printer (kod mene CUTEPRINT PDF) radi ali je tu mana što korisnik nema mogućnost da izabere na koji će printer da štampa, što je ozbiljna mana jer sve radi u mreži.
[ mpaja @ 23.05.2014. 19:25 ] @
Evo koda vezanog za dugme preko koga se poziva izveštaj:

Private Sub Command111_Click()
On Error GoTo Err_Command111_Click

Dim stDocName As String
Dim crit, crit1, Predmet, poruka As String
Dim Predidd, BrojP, novi As String
Dim dbs As Database
Dim rst As Recordset
Dim strSQL, strsql1 As String
Dim grp As Integer
Dim nista As Variant

grp = [Forms]![Glavni meni]![referat]
poruka = "Nemozete kao nacelnik odnosno sef formirati dokument!!!" & Chr(13) & Chr(10)
poruka = poruka & "Na glavnom meniju odaberite strucnu grupu koja vam je dodeljena" & Chr(13) & Chr(10)
poruka = poruka & "i onda formirajte dokument"

If grp = 4 Or grp = 5 Then
MsgBox poruka, vbCritical
Exit Sub
End If

' pre stampe osvezi datum pregleda u bazi. Datum pregleda je dan kada je odstampan zapisnik
' azuriraj i sviceve (AG, M, E, T), zaduzi refrenta ako nije vec zaduzen

crit = "PredId=" & Me.Field48 & " AND " & "Projekti.ProdId=" & Me.Text109 & " AND Projekti.ZapId=" & Me.Text129
crit1 = "PredId=" & Me.Field48
strsql1 = "SELECT * FROM [EvPredmeta] WHERE " & crit1

nista = Zaduzi(Me.Field48, Me.Text109)

Set dbs = CurrentDb()
Set rst = dbs.OpenRecordset(strsql1, dbOpenDynaset, dbSeeChanges, dbOptimistic)

With rst
.Edit
Select Case grp
Case 269 ' Elektro
!Elektro = True
!DatElk = Date
Case 270 ' AG
!Arhitekt = True
!DatArh = Date
Case 271 ' MViK
!Masinac = True
!DatMas = Date
Case 272 ' Tehnolog
!Tehnolog = True
!DatTeh = Date
Case 283 ' Vodovod
!Vik = True
!DatVik = Date
Case Else

End Select

If grp > 6 Then
!DatumObrade = Date
End If

.Update
End With

rst.Close

If [Forms]![Glavni meni]![OrgJed] = 2 Then
stDocName = "Zapisnik3S"
Else
stDocName = "Zapisnik3"
End If

DoCmd.OpenReport stDocName, acViewPreview, , crit ----> ovo stampa formu gde se dugme nalazi
rem DoCmd.OpenReport stDocName, acViewNormal, , crit ------> ovo radi na default printer

Me.Requery
Me.Refresh

Exit_Command111_Click:
Exit Sub

Err_Command111_Click:
MsgBox Err.Description
Resume Exit_Command111_Click

End Sub
[ SLOJ.1973 @ 23.05.2014. 19:30 ] @
Probaj da izostavis Me.requery ili Me.refresh.
[ mpaja @ 23.05.2014. 19:35 ] @
Radi kako treba!

Kakve veze ima refresh i requery kad je to kod koji se izvršava posle poziva rpt-a?
[ mpaja @ 23.05.2014. 19:36 ] @
Izbacio obe linije!
[ BiloKoje @ 23.05.2014. 19:36 ] @
Citat:
mpaja:
Evo koda vezanog za dugme preko koga se poziva izveštaj:

Private Sub Command111_Click()
On Error GoTo Err_Command111_Click
....
Me.Requery
Me.Refresh

Exit_Command111_Click:
Exit Sub

Err_Command111_Click:
MsgBox Err.Description
Resume Exit_Command111_Click

End Sub


Mislim da ti Me.Requery vraća fokus na formu.
[ mpaja @ 23.05.2014. 19:44 ] @
Probao sledeće:

1. izbacio obe linije ---> radi kako treba
2. vratio samo me.refresh ----> radi kako treba
3. vratio i me.requery zajedno sa me.refresh u istom redosledu kako je i u kodu datom od ranije ----> radi kako treba


U čemu je štos?

Pokušavam d shvatim šta je uzrok za buduće, ima li neko ideju?
[ mpaja @ 23.05.2014. 19:45 ] @
Izvinjavam se što ne mogu da okačim ceo primer jer nije za široku javnost!
[ SLOJ.1973 @ 23.05.2014. 19:47 ] @
Bez obzira sto se otvara izvestaj kroz kod,kod nastavlja sa izvrsavanjem. Da si stavio umesto me.requery docmd.Quit logicno je da bi se aplikacija zatvorila,bez obzira sto se prethodno otvorio izvestaj.Znaci kod se izvrsava uvek do kraja,osim u slucaju kada negde "pukne".Drago mi je da si resio problem.Pozdrav.
[ mpaja @ 23.05.2014. 19:50 ] @
Ako je to tako, onda je ovo rešenje.

U ponedeljeka isprobavam na glavnoj app a ne na modelu.

Ljudi hvala vam do neba!

Pozdrav
[ SLOJ.1973 @ 23.05.2014. 19:50 ] @
Dok sam pisao odgovor nisam video da si i ti pisao. Jesi li siguran da sve sljaka posle vracanja ove dve linije koda? Izadji iz aplikacije pa pokusaj ponovo da vidimo sta se desava.
[ mpaja @ 23.05.2014. 19:55 ] @
Ne sljaka, proverio ponovo. Kad vratim requery, štampa formu!
[ mpaja @ 23.05.2014. 20:02 ] @
Proverio ponovo sa refresh radi sve OK

Pozdrav još jednom
[ SLOJ.1973 @ 23.05.2014. 20:04 ] @
Čekaj,ne šljaka kada su ove dve linije ponovo vraćene,a šljaka kada nisu ili uopšte ne radi bez obzira da li su tu ili nisu ove dve linije? Pojasni.
Pišemo u isto vreme pa nam se odgovori preklapaju.Znači sada je sve ok. Ne diraj više ništa.
[ mpaja @ 23.05.2014. 20:15 ] @
Da pojasnim do kraja:

izbacio sam requery a ostavio refresh i sve radi OK.
[ Getsbi @ 23.05.2014. 20:16 ] @
Me.Refresh obnavlja sadržaj tekućeg zapisa koji je prikazan na formi i on ne bi trebalo da utiče jer tog trenutka nije forma u fokusu ali Me.Requery obnavla celu formu i stavlje je u fokus i to sigurno predstavlja problem. Pitanje je da li ti uopšte i Refresh treba. Svaka linija koda treba da je celishodna. Copy/Paste je vrlo loš način pisanja VBA koda. To ne znači da ja to ne radim ali sigurno je lose.
[ mpaja @ 23.05.2014. 20:21 ] @
DA upravo tako, refresh radi update rekorda a requery obnavlja rekordset forme koja ih prikazuje. U ovom konkretnom slučaju meni je bilo dovoljno da uradim refresh jer nemam promena, nemam novih ili obrisanih rekorda u formi koja poziva izveštaj. Ovo jeste rešenje za moj problem trenutno ali i dalje ne razumem zašto vraća fokus na formu pre nego što se zatvori prozor u kome je prikazan report.
[ Getsbi @ 23.05.2014. 20:27 ] @
Zato što štampač primi naređenje tek nakon završene procedure, a tebi je report poslat u preview režim, što se vidi iz koda.
Da rezimiramo: Requery se obraća formi i ne mora da čeka zatvaranje riporta kojih možeš da imaš otvorenih i više od jednog.
[ mpaja @ 23.05.2014. 20:30 ] @
Čovek se uči dok je živ ako ima od koga ako nema vežba....

P.S. 100% ste u pravu za copy-paste, nekad se i ne razmišlja o tome.
[ SLOJ.1973 @ 23.05.2014. 20:36 ] @
Da li bi mozda rešenje bilo ako bi za izveštaj postavio Pop up Yes i Modal Yes? Mrzi me da simuliram mpajin slučaj,ali čini mi se da bi tada focus ostao na izveštaju,sve dok se ne zatvori.Šta vi mislite?
[ Getsbi @ 23.05.2014. 20:43 ] @
Vredi pokušati. Bilo bi lakše da imamo primer. Mada je Me.Requery vrlo precizna naredba koja dolazi iza tih postavki.
[ SLOJ.1973 @ 23.05.2014. 20:44 ] @
I ja tako mislim,ali opet ko zna.Ako kolega mpaja želi,neka proba pa nek javi.
[ BiloKoje @ 23.05.2014. 20:51 ] @
Ako su baš potrebne te naredbe, Refresh i Requery, što se ne bi
izvršile pre otvaranja izveštaja, u kodu dva reda ranije. Otvaranjem
izveštaja se inače ništa ne dešava sa podacima, dakle sve bi radilo
kako je zamišljeno.

Išlo bi:
...
Me.Requery
Me.Refresh

DoCmd.OpenReport stDocName, acViewPreview, , crit ----> ovo stampa formu gde se dugme nalazi
rem DoCmd.OpenReport stDocName, acViewNormal, , crit ------> ovo radi na default printer

...
[ mpaja @ 23.05.2014. 20:53 ] @
Ljudi situacija je ovakva:

vraćene i requery i refres, kao u poslatom kodu.


popUp bio postavljen na NO a Modal na YEs ---> ne radi kako treba
popUp postavljen na YES i Modal na YEs ---> ne radi kako treba

a kaže da Modal zadržava fokus ako je setovan na YES!

Zaključak je da requery pravi problem ako se ne varam ?

Zaista ne mogu da okačim primer jer razumite da nije za širu javnost, izvinite!
[ SLOJ.1973 @ 23.05.2014. 20:55 ] @
Citat:
mpaja: Ljudi situacija je ovakva:

vraćene i requery i refres, kao u poslatom kodu.


popUp bio postavljen na NO a Modal na YEs ---> ne radi kako treba
popUp postavljen na YES i Modal na YEs ---> ne radi kako treba

a kaže da Modal zadržava fokus ako je setovan na YES!

Zaključak je da requery pravi problem ako se ne varam ?

Zaista ne mogu da okačim primer jer razumite da nije za širu javnost, izvinite!

Znači potvrdjeno: NE MOŽE!
[ mpaja @ 23.05.2014. 21:08 ] @
Potvrdjeno da ni u jednoj kombinaciji sa requery ne ide!