[ FranjoZG @ 17.05.2021. 09:26 ] @
Opet se patim sa service app. (Delphi XE 10.1) Trebalo bi: service "čući" nad Firebird bazom i gleda promjenu na jednoj tablici. Kada se promjena dogodi, pošalje podatke u MySQL na Web-u. Radi testa, ne pristupam MySQL bazi već sve radim na lokalnoj bazi. U konkeciji koristim user-a Admin tako da niti to ne može biti problem. Da li service može "hvatati" post event iz FB baze? Za pristup bazi koristim FireDac kontrole. U OnExecute sam stavio Sleep tako da program provjerava podatke svakih 5 minuta. U program sam stavio da upisuje message koji se mogu vidjeti u EventViewer-u. Pokušao sam na dva načina: 1. U OnExecute pokrećem qry koji selektira potrebne podatke i u kom se izcršava exec upisa u MySQL 2. Kreirao sam zaseban thread koji obavlja posao. U 1. slučaju service se ne može startati, javlja grešku. U 2. slučaju, service se starta, thread se pokrene, ali ima problema sa dohvatom podataka iz baze: - open konekcije ne javlja grešku, provjera kaže da je konekcija otvorena. - open qry-a ne javlja grešku. Eof = false. - pristup fieldu, koji (provjereno u bazi, provjeren qry van programa) nije nul već vraća integer (primary key tablice), u programu vraća (AsString) prazan string. - try ... except ne javlja grešku. Ako koristim zasebni thread (prema onom što sam našao na Web-u bi trebalo), kuda staviti kreiranje thread-a? U OnExecute, OnCreate ili OnStart? Koliko sam shvatio, pokretanje thread-a (resume) treba staviti u OnExecute. Da li se tko bavio service app s pristupom bazi? Imate li ideju gdje griješim i što napraviti? |