************************************* Function fHoustonBrennan2( cXMLfile ) ************************************* Local nStart ; , cEmptyField, cEmptyFieldList ; , cPopulatedField, cPopulatedFieldList ; , iField, cFieldName, cDataType, cSql If Empty( cXMLfile ) Then cXMLfile = "HoustonBrennan2.XML" Endif nStart = Seconds() cEmptyField = "" cEmptyFieldList = ["<Test> " As cStartCol, ] cPopulatedField = "" cPopulatedFieldList = ["<Client>" As cStartCol, ] For iField = 1 To FCount() cFieldName = Field( iField ) cDataType = Type( cFieldName ) Do Case Case cDataType $ "CM" cEmptyField = ["] ; + Space( Len( Evaluate( cFieldName ))) ; + Space( 2 * Len( [<] + cFieldName + [>] ) + 1 ) ; + [", ] cPopulatedField = ["<] + cFieldName + [>" + ] ; + cFieldName ; + [ + "</] + cFieldName + [>", ] Case cDataType $ "D" cEmptyField = ["] ; + Space( Len( Dtoc( {} ))) ; + Space( 2 * Len( [<] + cFieldName + [>] ) + 1 ) ; + [", ] cPopulatedField = ["<] + cFieldName + [>" + ] ; + "DtoC(" + cFieldName + ")" ; + [ + "</] + cFieldName + [>", ] Case cDataType $ "T" cEmptyField = ["] ; + Space( Len( TtoC({} ))) ; + Space( 2 * Len( [<] + cFieldName + [>] ) + 1 ) ; + [", ] cPopulatedField = ["<] + cFieldName + [>" + ] ; + "TtoC(" + cFieldName + ")" ; + [ + "</] + cFieldName + [>", ] Case cDataType $ "N" cEmptyField = ["] ; + Space( Len( Str( Evaluate( cFieldName ) ))) ; + Space( 2 * Len( [</] + cFieldName + [>] ) + 1 ) ; + [", ] cPopulatedField = ["<] + cFieldName + [>" + ] ; + "Str(" + cFieldName + ")" ; + [ + "</] + cFieldName + [>", ] Case cDataType $ "L" cEmptyField = ["] ; + Space( Len( [<] + cFieldName + [> </] + cFieldName + [>] )) ; + [", ] cPopulatedField = ["<] + cFieldName + [>" + ] ; + "Transform(" + cFieldName + ")" ; + [ + "</] + cFieldName + [>", ] Otherwise cEmptyField = ["] ; + Space( Len( Transform( Evaluate( cFieldName ) ))) ; + Space( 2 * Len( [</] + cFieldName + [>] ) + 1 ) ; + [", ] cPopulatedField = ["<] + cFieldName + [>" + ] ; + "Transform(" + cFieldName + ")" ; + [ + "</] + cFieldName + [>", ] Endcase cEmptyFieldList = cEmptyFieldList + cEmptyField cPopulatedFieldList = cPopulatedFieldList + cPopulatedField Next iField cEmptyFieldList = cEmptyFieldList + ["] + Space(9) + [" As cEndCol] cPopulatedFieldList = cPopulatedFieldList + ["</Client>" As cEndCol] cSql = [Select ] + cEmptyFieldList ; + [ From ] + Alias() ; + [ Into Cursor Temp NoFilter ReadWrite] ; + [ Where RecNo() == 1 ] ; + [ Union All Select ] + cPopulatedFieldList ; + " From " + Alias() ; + " Where .T." ****** &cSql. ****** Insert Into Temp (cStartCol) Values ( "</Test>" ) Copy To (cXmlFile) Type SDF Use In Temp ?? Seconds() - nStart Modi File (cXMLfile) NoWait Return .T. Endfunc && fHoustonBrennan2().