What do you mean by "prevent add more than one entry"?
Are you trying to keep the user from adding/selecting more than one item in a field?
Are you trying to keep the user from adding a record for a company if it has already been entered?
Or something else?
Use Fields with Global storage enabled for the user to enter their company data. Have a script perform a find to see if there is a record with this data already in your table. If no record is found, I'd then have the system show a dialog asking if they want to create a new record. (The user may have mistyped some info and may instead want to correct the error instead of creating a new record. If the user click OK in the custom dialog asking if they want a new record, the script creates a new record and uses set field steps to transfer the data into the fields of the new record.
Here's an outline using a single global field. The same process works for multiple fields, you just need more set field steps where you find only one in this example:
#Go to layout step is not needed if script always starts from a layout base on Companies
Go to Layout ["Companies" (Companies) ]
Enter Find Mode  --> clear the pause check box
Set Field [Companies::CompanyName ; "==" & Globals::gCompanyName ]
Set Error Capture [on]
Perform Find 
If [ Get ( FoundCount ) = 0 // no company record found ]
Show Custom Dialog ["No company named " & Quote ( Globals::gCompanyName ) & " was found. Create a new company record?" ]
If [ Get ( LastMessageChoice ) = 1 // OK was clicked ]
Set Field [ Companies::CompanyName ; Globals::gCompanyName ]
This script for finding records is patterned after the examples found here: Scripted Find Examples