<b>* WRITE part</b> lcFileName = "F:\TWAIN20.ZIP" && this file got corrupted when use text field on SQL server * create temporary buffer table if file("F:\ttt.dbf") erase ("F:\ttt.dbf") endif if file("F:\ttt.fpt") erase ("F:\ttt.fpt") endif select 0 create table "F:\ttt" FREE (mData M) * take binary data from file into memo select ttt append blank append memo mData from (lcFileName) overwrite use * change memo field type to general to match to image type on SQL Server ll = fopen("F:\ttt.dbf",12) fseek(ll,43) fwrite(ll,'G') fclose(ll) * write data to SQL Server use F:\ttt alias __DATA lcSQL = 'insert into test values (?__DATA.mData)' if !(oApp.oServer.RunQuery(m.lcSQL)) messagebox(oApp.oServer.cError) endif use in __DATA <b>* READ part</b> * take data from SQL server lcSQL = 'select mData from test' if !oApp.oServer.RunQuery(m.lcSQL,"TT") messagebox(oApp.oServer.cError) endif *** here we have general field in 'TT' cursor because image type on SQL Server. * save data to temporary table select TT if file("F:\ttt.dbf") erase ("F:\ttt.dbf") endif if file("F:\ttt.fpt") erase ("F:\ttt.fpt") endif copy to "F:\ttt" use * change general field type to memo ll = fopen("F:\ttt.dbf",12) fseek(ll,43) fwrite(ll,'M') fclose(ll) * save dtaa from memo field into file use "F:\ttt" alias TT lcFileName = "F:\qwerty.zip" && test file name with result from SQL Server if file(lcFileName) erase (lcFileName) endif local lH lH = FCREATE(lcFileName) FWRITE(lH,TT.mData) FCLOSE(lH) use in TT * here you can compare "F:\qwerty.zip" and "F:\TWAIN20.ZIP" - they should match