Kami memiliki aplikasi Delphi7 + UIB + Firebird 2.5 untuk restoran pizza, bekerja dengan stabil di jaringan kabel.
Namun di wifi, (bekerja dengan TabletPC Win8/Win10,) jika koneksi terputus, UIBDatabase tidak dapat menyambung kembali secara otomatis.
(Saat ini kami sedang merekonstruksi seluruh APLIKASI untuk menghapus "sisa IBX", tetapi setelah memutakhirkan UIB ke versi terbaru, masalahnya tampaknya menjadi lebih buruk!)
Setelah koneksi terputus, pesan kesalahan. adalah:
Project ...exe raised exception class EUIBError with message 'connection rejected by remote interface
Connection not established
GDS Code: 335544421 - SQL Code: -923 - Error Code: 101'. Process stopped.
Meskipun saya mencoba menutup koneksi saat ini dengan .IsConnected:=False
atau .CancelAbort
Koneksi tidak dapat tersambung kembali lagi:
Project ...exe raised exception class EUIBError with message 'invalid statement handle
Unsuccessful execution caused by system error that does not preclude successful execution of subsequent statements
GDS Code: 335544485 - SQL Code: -901 - Error Code: 165'. Process stopped. Use Step or Run to continue.
Jadi, apa pun yang kami lakukan, kami tidak dapat terhubung kembali!
Kasus terburuk adalah ketika TabletPC masuk ke mode tidur, karena koneksi pasti terputus, namun komponen mengira masih online. Dibutuhkan minimal 8 detik untuk menyadari bahwa kueri tidak dapat dijalankan.
Kami telah mencoba memulai TTimer sebelumnya untuk membatalkan paksa operasi setelah 2000 md, tetapi peristiwa itu tidak pernah dipicu.
Jadi saya bertanya-tanya:
- Apakah ada cara untuk menangani kasus ini dengan baik?
- Tidak ada orang lain yang memiliki masalah seperti ini? (Merah setiap topik terkait di sini, ditemukan hanya 1 serupa dengan 0 solusi .)
- Apakah komponen UIB saat ini dapat diunduh dari di sini tidak stabil? (Mengalami kesulitan untuk mengkompilasi di bawah D7 karena banyak kesalahan ketidakcocokan SynEdit!)
- Mengapa
.OnConnectionLoss
acara dipicu hanya setelah saya mencoba menyambung kembali? - Apakah mungkin untuk menghubungkan kembali ke:
Transaksi yang SAMA lagi,
menyelesaikan kueri
dan Melakukan & menutup dengan benar?
(Karena kita dapat membaca transaksi tersebut ID dari Firebird.) ... sehingga server tidak perlu membiarkannya terbuka selama 2+ jam.