>Hmmm. I just did a quick select and CURSORSETPROP on the cursor, and I could set it to 1,2,3,4, and 5...
Let me throw in $.02 :) A SELECT statement does *not* create an updateable view. To get an updateable view with a select statement you need something like so:
**********HERE YOU SELECT YOUR FIELDS, ETC.
CREATE SQL VIEW "VUREPEATBILLINGHEADER" ;
AS SELECT Repeatbillingheader.idno, Repeatbillingheader.famseq, Repeatbillingheader.billbyparent, Repeatbillingheader.rbgroup, Repeatbillingheader.billbychild, Repeatbillingheader.noofkids, Repeatbillingheader.monday, Repeatbillingheader.tuesday, Repeatbillingheader.wednesday, Repeatbillingheader.thursday, Repeatbillingheader.friday, Namemaster.last_business_name, Namemaster.first_name FROM cp2000!repeatbillingheader LEFT OUTER JOIN cp2000!namemaster ON Repeatbillingheader.idno = Namemaster.idno WHERE Namemaster.last_business_name = ?m.mlast AND Namemaster.first_name = ?m.first
*********** HERE YOU SET THE UPDATE MODE FOR THE BASE TABLE--SEE LINE 8
DBSetProp('VUREPEATBILLINGHEADER', 'View', 'UpdateType', 1)
DBSetProp('VUREPEATBILLINGHEADER', 'View', 'WhereType', 3)
DBSetProp('VUREPEATBILLINGHEADER', 'View', 'FetchMemo', .T.)
DBSetProp('VUREPEATBILLINGHEADER', 'View', 'SendUpdates', .F.)
DBSetProp('VUREPEATBILLINGHEADER', 'View', 'UseMemoSize', 255)
DBSetProp('VUREPEATBILLINGHEADER', 'View', 'FetchSize', 100)
DBSetProp('VUREPEATBILLINGHEADER', 'View', 'MaxRecords', -1)
DBSetProp('VUREPEATBILLINGHEADER', 'View', 'Tables', 'cp2000!repeatbillingheader,cp2000!namemaster')
DBSetProp('VUREPEATBILLINGHEADER', 'View', 'Prepared', .F.)
DBSetProp('VUREPEATBILLINGHEADER', 'View', 'CompareMemo', .T.)
DBSetProp('VUREPEATBILLINGHEADER', 'View', 'FetchAsNeeded', .F.)
DBSetProp('VUREPEATBILLINGHEADER', 'View', 'FetchSize', 100)
DBSetProp('VUREPEATBILLINGHEADER', 'View', 'Comment', "")
DBSetProp('VUREPEATBILLINGHEADER', 'View', 'BatchUpdateCount', 1)
DBSetProp('VUREPEATBILLINGHEADER', 'View', 'ShareConnection', .F.)
************** THEN YOU DO THIS FOR EACH FIEDL IN THE VIEW
DBSetProp('VUREPEATBILLINGHEADER.idno', 'Field', 'KeyField', .F.)
DBSetProp('VUREPEATBILLINGHEADER.idno', 'Field', 'Updatable', .T.)
DBSetProp('VUREPEATBILLINGHEADER.idno', 'Field', 'UpdateName', 'cp2000!repeatbillingheader.idno')
DBSetProp('VUREPEATBILLINGHEADER.idno', 'Field', 'DataType', "C(10)")
Notice that nowhere are you asked about the buffer mode, but when you put the view in a dbc and add it to a forms data environment you are give two options for buffering. Optimistic row and optimistic table.
Now then, if you open up a view and try to change it's buffering to 1 or 2 you get the error message:
Views required either DB_BUFOPTROW or DB_BUFOPTTABLE.
Personally, I think using Pessimistic buffering in a multi-user environment is a mistake (but that's another discussion ;)