RE:Como ejecutar un programa en red
No sé que es esa base de datos .bd
Te comento lo básico, nada más para orientarte.
Si utilizas el comando OPEN DATABASE debería ser así:
OPEN DATABASE NombreBase SHARED
Para la apertura de tablas
USE NombreTabla IN 0 SHARED
Debes escorger un sistema de bloqueo de registros o tablas: Manual o Buffering
Esto depende básicamente si vas a operar directamente sobre las tablas (se recomienda Buffering) o sobre cursores y variables que actualizan tablas (es más cómodo el bloqueo manual, aunque también se puede utilizar Buffering).
Lo que pongo a continuación es solo para darte una pista de lo que debes estudiar.
Bloqueo por buffering.
set multilocks on
lSuccess=CURSORSETPROP("Buffering", 5, AliasTabla) && bloqueo optimista de registros.
* INSERT INTO , REPLACE, APPEND FROM, ETC
TableUpdate(.t..) o TableREvert() para revertir los cambios.
TABLEUPDATE( [nRows [, lForce]] [, cTableAlias | nWorkArea] [, cErrorArray] )
TABLEREVERT( [lAllRows [, cTableAlias | nWorkArea] ] )
Bloqueo manual
LOCK() o RLOCK() intentan bloquear un registro.
UNLOCK desbloquea los registros de la tabla seleccionada
UNLOCK IN talTabla desbloquea los registros en TalTabla
FLOCK() Bloquea la tabla completa (usar solo cuando no hay mejor solución o el período de bloqueo es muy breve).
Append blank, insert into, Append from, bloquean automáticamente los registros nuevos.
UNLOCK IN talTabla
FLUSH IN talTabla
Para replace:
SELECT talTabla
IF RLOCK()
REPLACE campo1 with valor1, campo2 with valor2, ,,,
UNLOCK
ENDIF
FLUSH
No olvides utilizar el comando FLUSH después de grabar datos (agregar o modificar registros)
De otra forma, ante un corte de energía perderás muchos o todos los datos ingresdos en la última sesión.