Okay - Thank you for this step-by-step instruction. That's exactly what I needed. I really appreciate the help Jason.

Set it to 0 for items that should not be charged shipping.
It does not matter if the cart column and the DB column are named the same.
The data type of the cart column does not matter either.
The recordset on the product detail is too complex for dreamweaver to parse it.
In the product detail page, temporarily change the recordset code:
$query_WADAProducts = sprintf("SELECT * , (ProductStock - (SELECT Coalesce(Sum(DetailQuantity),0) FROM orderdetails INNER JOIN orders ON OrderID = DetailOrderID WHERE DetailProductID = ProductID AND OrderDate > ProductUpdateDate))*ProductLive AS NumLeft FROM products WHERE ProductID = %s OR ( -1= %s AND ProductID= %s)", GetSQLValueString($ParamProductID_WADAProducts, "int"),GetSQLValueString($ParamProductID2_WADAProducts, "int"),GetSQLValueString($ParamSessionProductID_WADAProducts, "int"));
to a simpler recordset:
$query_WADAProducts = sprintf("SELECT * FROM products";
Then double click the add to cart button server behavior. On the bindings tab, bind the new cart column to the recordset column.
You will then have to change the WADAProducts code back to the origianl.
