set safe off use \temp\tmpTable lnFields = AFIELDS(laFields) use CLOSE DATA ALL CREATE DATABASE 'c:\temp\TEST.DBC' ***************** View setup for TMPVIEW *************** CREATE SQL VIEW "TMPVIEW" ; REMOTE CONNECT "Visual FoxPro Tables" ; AS SELECT * FROM c:\temp\tmptable Tmptable DBSetProp('TMPVIEW', 'View', 'UpdateType', 1) DBSetProp('TMPVIEW', 'View', 'WhereType', 3) DBSetProp('TMPVIEW', 'View', 'FetchMemo', .T.) DBSetProp('TMPVIEW', 'View', 'SendUpdates', .T.) DBSetProp('TMPVIEW', 'View', 'UseMemoSize', 255) DBSetProp('TMPVIEW', 'View', 'FetchSize', 100) DBSetProp('TMPVIEW', 'View', 'MaxRecords', -1) DBSetProp('TMPVIEW', 'View', 'Tables', 'tmptable') DBSetProp('TMPVIEW', 'View', 'Prepared', .F.) DBSetProp('TMPVIEW', 'View', 'CompareMemo', .T.) DBSetProp('TMPVIEW', 'View', 'FetchAsNeeded', .F.) DBSetProp('TMPVIEW', 'View', 'FetchSize', 100) DBSetProp('TMPVIEW', 'View', 'Comment', "") DBSetProp('TMPVIEW', 'View', 'BatchUpdateCount', 1) DBSetProp('TMPVIEW', 'View', 'ShareConnection', .F.) FOR lnTeller = 1 TO lnFields lcField = 'tmpView.' + laFields[lnTeller,1] DBSetProp(lcField, 'Field', 'KeyField', .F.) DBSetProp(lcField, 'Field', 'Updatable', .T.) DBSetProp(lcField, 'Field', 'UpdateName', "tmpTable."+laFields[lnTeller,1]) cDataType = laFields[lnTeller,2] do case case cDataType $ "C" cDataType = cDataType+"("+str(laFields[lnTeller,3])+")" case laFields[lnTeller,2] $ "NF" cDataType = cDataType+; "("+; str(laFields[lnTeller,3])+; ","+; str(laFields[lnTeller,4])+")" endcase DBSetProp(lcField, 'Field', 'DataType', cDataType) *!* IF laFields[lnTeller, 2] $ 'DT' *!* *!* Empty data(time) fields result in {30-12-1899} *!* *!* instead of empty fields, so replace *!* REPLACE ALL (laFields[lnTeller,1]) WITH { } ; *!* FOR EVAL(laFields[lnTeller,1]) = {30-12-1899} *!* ENDIF *!* IF PCOUNT() > 1 AND laFields[lnTeller,1] $ UPPER(tcIndex) *!* DBSETPROP(lcField, 'Field', 'KeyField', .T.) *!* ENDIF ENDFOR DBSetProp("tmpview.makb_no", 'Field', 'KeyField', .t.) *!* FOR lnTeller = 1 TO lnFields *!* lcField = 'tmpView.' + laFields[lnTeller,1] *!* DBSETPROP(lcField, 'Field', 'Updatable', .T.) *!* ENDFOR use tmpView CURSORSETPROP('Buffering', 5, 'tmpView') REPLACE ALL nRecId WITH recno() TABLEUPDATE(2, .T., 'tmpView') CLEAR ALL USE C:\TEMP\tmpTable BROWSETo make it easy, do it in view designer then run gendbc to get programmatic version.