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?