[ sdds @ 05.03.2008. 13:48 ] @
Kako pomocu koda potvrditi klik OK za ovu poruku If Err.Description = "No current record." Then Hvala |
[ sdds @ 05.03.2008. 13:48 ] @
[ domaci_a_nas @ 05.03.2008. 17:18 ] @
Problemu možeš pristupiti na više načina. Mislim da ne možeš da klikneš na message box jer se kod u trenutku pojavljivanja poruke blokira. Možeš koritstiti API (application program interface) funkciju messagebox koju možeš uključiti u kod.
Code: Option Compare Database Option Explicit Private Declare Function MessageBox Lib "user32" _ Alias "MessageBoxA" _ (ByVal hwnd As Long, _ ByVal lpText As String, _ ByVal lpCaption As String, _ ByVal wType As Long) As Long Private Const MB_ICONINFORMATION As Long = &H40& Private Sub Form_Load() Me.TimerInterval = 500 MessageBox Me.hwnd, "Podatak ne postoji", "Moja poruka", MB_ICONINFORMATION End Sub Private Sub Form_Timer() SendKeys "{ESC}" Me.TimerInterval = 0 End Sub Druga varijanta bi bila da ne izbaciš nikakvu poruku već jednostavno postaviš Response = 0, ili da koristiš on Error Resume Next. [ Zidar @ 06.03.2008. 14:06 ] @
U teoriji, svaka procedura u Accesu bi trebalo da ima Error Handling. To se postize ovako:
Code: Sub MojaProcedure ON ERROR GOTO ERROR_CODE 'ovde ide kod procedure koji nesto radi EXIT_HERE: ON error resume NExt 'pre Exit sub dodaju se rs.close, set db=nothing i slicno 'ON Error Resume Next sluzi da ignorise greske koje mogu uneti rs.close i slicne komande Exit sub ERROR_CODE: Slect Case err.number case 123456 ne radi nista u slucaju greske 123456 case else MsgBox Prompt:="Gresk " & err.number & vbcrlf & err.description End select Resume EXIT_HERE end sub Sve greske koje zelis da ignorises ili da uvedes posebnu poruku, stavis u Case komandu u ERROR_CODE sekciji. Greske koje se ne mogu uhvatiti na ovaj nacin (unos duplikata, narusavanje referencijalnog integriteta i s cino) se love kodom u forminom On_Error eventu. U helpu imas veoma lepo objasnjenje za formin On_Error event, pa ga necu opisivati, a i bilo je na forumu. ![]() [ ilekicika @ 25.05.2011. 13:19 ] @
Moj problem se može svrstati u ovu temu pa ne bih otvarao drugu, o čemu se zapravo radi:
Imam glavnu formu i dve podforme. Izvor podataka za formu je tabela a za obadve podforme query. Relacija tabele u glavnoj formi i tabela u podvormi je jedan prema vise. Problem je taj što kada izvršim prvi unos podataka u glavnu formu pri prelasku u podformu javlja mi se poruka "No current record" ako nastavim sa pritiskom na taster "Enter" ili klikom na "Ok" kursor prelazi na prvo polje podforme normalno i normalno prihvata podatke pri unosu. Kada otvorim tabele prikaz podataka je ispravan. Pri nastavku unosa ova poruka se ne javlja. Pitanje glasi kako da izbegnem poruku "No curent record" jednostavno da se ne pojavljuje pri prvom unosu (programski kod ili nesto drugo) i zasto se pojavljuje kad je u unosu i relacijama sve ok ili ima neke greške. Molim za pomoc. Srdačan Pozdrav. [Ovu poruku je menjao ilekicika dana 25.05.2011. u 15:27 GMT+1] [ ilekicika @ 25.05.2011. 15:09 ] @
Nisam dobro procitao temu sad vidim da je dat odgovor. Odgovor je Response = 0.
Ali bi ipak pitao zašto se javlja poruka o grešci i da li upotrebom u on Error Response = 0 ignorisu sve poruke o greskama u toj formi. Pozdrav [ duledixi @ 09.04.2014. 08:53 ] @
Da ne otvaram novu temu ovdje ću postaviti problem koji me muči.
Naime, imam jednu formu na kojoj se nalazi listbox sa koga biram štampanje računa i na event AfterUpdate imam sledeći kod: Code: Private Sub ListRacPrint_AfterUpdate() Dim rst1 As Recordset Dim varX As Variant Dim strsql As String Dim strsql1 As String Dim SQL As String DoCmd.SetWarnings False strsql = "DELETE * FROM tmpFiskal;" DoCmd.RunSQL strsql DoCmd.SetWarnings True Set baza = OpenDatabase("C:\Starsoft\Farma_Grabovac_dat.mdb") Set rst1 = baza.OpenRecordset("tmpFiskal", dbOpenDynaset) If Me.Opcija = 1 Then Me.txtFisk = Me.ListRacPrint.Column(0) Me.txtUplata = Me.ListRacPrint.Column(3) Me.txtBrFakture = Me.ListRacPrint.Column(5) Me.txtProvjera = Me.ListRacPrint.Column(6) Me.Refresh DoCmd.SetWarnings False strsql1 = "INSERT INTO tmpFiskal ( FBROJ, Model, kol, MPC, Sifra, Popust )" & _ "SELECT qryFiskal1.FBROJ, qryFiskal1.Model, qryFiskal1.kol, qryFiskal1.MPC, qryFiskal1.Sif, qryFiskal1.popust " & _ "FROM qryFiskal1; " DoCmd.RunSQL strsql1 'DoCmd.OpenQuery "UpisFiskal", acViewNormal DoCmd.SetWarnings True If IsNull(Me.txtProvjera) = True Or Me.txtProvjera = "" Then 'aa Else MsgBox "Fiskalni račun sa ovim brojem je već otštampan ! ", vbCritical, "Upozorenje" Exit Sub End If If Me.txtUplata > 0 Then Open "C:\Temp\Prodaja.inp" For Output As #1 rst1.MoveFirst Do Until rst1.EOF Print #1, "S,1,______,_,__;"; rst1!Model; ";"; Format(rst1!MPC, "##0.00"); ";"; Format(rst1!kol, "##0.00"); ";1;1;2;0;"; Format(rst1![Sifra], "0"); ";"; Format(rst1![popust], "Percent") rst1.MoveNext Loop Print #1, "T,1,______,_,__;3;" rst1.Close Close #1 Close #1 DoCmd.OpenForm "FormFiskal", acNormal, , , acFormEdit Else DoCmd.OpenForm "FormReklam", acNormal, , , acFormEdit End If ElseIf Me.Opcija = 4 Then DoCmd.OpenReport "RacunPrint", acViewPreview DoCmd.Close acForm, "FormIzborRac" End If Set rst1 = Nothing Set baza = Nothing End Sub na mjestu "rst1.MoveFirst" dobijem poruku "no current record" a kad otvorim tabelu tmpFiskal postoje zapisi u njoj. Molim ljude dobre volje da mi pomognu oko otklanjaja greške. Pozdrav. [ duledixi @ 29.04.2014. 07:44 ] @
Riješio problem tako što sam izbjegao upisivanje u Temp tabelu i sad sve radi ok.
Pozdrav. Copyright (C) 2001-2025 by www.elitesecurity.org. All rights reserved.
|