You can accomplish this by using the Lookup function in an auto-enter calculation for each of the address fields.
The calculation would look something like this.
Case ( IsEmpty ( CustShipAddress::CustID ) ; Lookup ( Customer::Street1 ) ; Lookup ( CustShipCodeSelected::BIllingStreet1 ) )
When the shipping is created if there are no records in the CustomerShipAddress table it will lookup From the customer record. if there are shipping records it will wait until you select a code.
This will require an extra relationship from Shipping to the CustShipAddress table, besides the one you have for the lookup. Depending upon where the New Ship Form script starts you can avoid that by sending a script parameter or setting a Variable.
Set Variable [ $AddrLookup ; Case ( IsEmpty ( CustomerShipAdd::CustID ) ; "Cust" ; "Shipping" )
Case ( $AddrLookup = "Cust" ; Lookup ( Customer::Street1 ) ; Lookup ( CustShipCodeSelected::BIllingStreet1 ) )
Hope this makes sense...
Pueblo Systems, Inc.