Puedes obtener el IP del cliente en el momento que se conecta a la BD y guardarlo en una tabla.
Para conocer el IP local, tienes el código en:
http://www.rgagnon.com/pbdetails/pb-0132.html
Aclaraciones:
* Al declarar tu estructura, existe un errorcillo. Dice:
nsignedinteger maxsockets, lo correcto es: unsignedinteger maxsockets
* La declaración de las externals functions, debe ser Global (no local).
* Debes bajar el archivo pbws32.dll (de la misma página) y guardarla en la carpeta donde corre tu aplicación.
O si prefieres baja un pbl (17 KB) elaborado en PB 7 de:
http://www.celso.cortes.nom.br/arqs/MAC_IP.zip
Nota: Ambos funcionan bien.
Ahora cuando se conecte el cliente a la BD, debes intentar guardar esa dirección IP en algun lado. El mejor momento, es cuando el usuario logra conectarse a la BD. Es decir, en el evento open de tu aplicacion, debe existir algo similar a:
.....
connect;
//Insertamos la direccion IP del cliente en una tabla
Insert Into mitabla("ip")
Values(:ls_ip);
.....
open(w_principal)