>
> That's fine, it doesn't seem to be working if someone try to manipulate my data by simply using BROWSE either from command windows or alternatively they can either open that specific table from the explorer if they have Visual Foxpro on their machine!
>
> Can we do anything for that?
>
> Thanks
> J.
>
>
> > > Hi Group,
> > >
> > > I have created a mydatabase.dbc, which contains a couple of Tables. Now When I open a single table, say mytable1.dbf from Windows Explorer, it opens with Visual FoxPro and I can simply change the data and even it did not bother to ask me whether to save messagebox with Yes, No, Cancel. Why FoxPro doesn't provide minimum security to the data at all? I have a stand along application running on a PC and I don't want my end user of the application to access the tables directly without the Inteface application. How can I protect the data in the *.dbf files on my PC?
> > >
> > > Thanks
> > > J.
> >
> > Try these:
> >
> > Modify Database YourDatabase
> >
> > Then right click and select "Edit Stored Procedures"
> >
> > Cut these lines of codes and paste it to stored procedure editor:
> >
> > PROCEDURE dbc_BeforeOpenTable(cTableName)
> > Local lcPassword
> > lcPassword = ''
> > If !InputBox('Enter password:','Database Security',lcPassword) == "PASSWORD"
> > Return .F.
> > EndIf
> > Return .T.
> > EndProc
> > **** end of procedure****
> >
> > Press CTRL-W twice.
> >
> > In the command window,
> > USE AnyTable
> >
> > Remember that password is case sensitive. Goodluck.
> >
> > Dale
> >
> > "Man's mind once stretched by a new idea never regains its original dimension."
Sorry. Forgot to tell you that you have to activate the DBC's events. Okay, modify the database again, right-click and properties and check the "Set Events On". Another thing, the dbc_BeforeOpenTable event will still fire even you access DBC-bound table thru your application. I suggest that you create a Public variable in your main prg, say, goMainAppInstance then initialize it as an object: goMainAppInstance = CreateObject("line") && I use line object here having the least number of properties and methods.
Slight modify the above codes like this:
PROCEDURE dbc_BeforeOpenTable(cTableName)
If VarType(goMainAppInstance) # 'O'
Local lcPassword
lcPassword = ''
If !InputBox('Enter password:','Database Security',lcPassword) == "PASSWORD"
Return .F.
EndIf
EndIf
Return .T.
EndProc
**** end of procedure****
Goodluck.
Dale
"Man's mind once stretched by a new idea never regains its original dimension."