CLOSE ALL CLEAR ALL SET SAFETY OFF SET ESCAPE ON SELECT 0 USE convdata *-- SQL Connection name lc_user = "CONV" ll_cont = .T. *-- ODBC Connection gc_sqlconnect = ALLTRIM(convdata->sqlconn) gc_sqluser = ALLTRIM(convdata->sqluser) gc_sqlpassword = ALLTRIM(convdata->sqlpw) *-- Source Table lc_source = ALLTRIM(convdata->source) *-- Target SQL Table lc_target = ALLTRIM(convdata->target) *-- Target Database gc_database = ALLTRIM(convdata->sqldb) *-- Create indicator ll_createtarget = convdata->createtab *-- ZAP indicator ll_zaptarget = convdata->zaptarg *-- ll_displaytarget = convdata->disptarg USE IN convdata SELECT 0 USE &lc_source ALIAS a_source *-- Connect to SQL Server SET MESSAGE TO "connecting" gnsqlHandle = SQLCONNECT(gc_sqlconnect, gc_sqluser, gc_sqlpassword) = SQLSETPROP(gnsqlHandle, 'Transactions', 2) && Manual transactions = SQLSETPROP(gnsqlHandle, 'asynchronous', .F.) = SQLPREPARE(gnsqlHandle, "USE " + gc_database) ln_exec = SQLEXEC(gnsqlHandle) IF ll_createtarget *-- Drop the target table = SQLPREPARE(gnsqlHandle, "DROP TABLE " + lc_target) ln_exec = SQLEXEC(gnsqlHandle) ln_commit = SQLCOMMIT(gnsqlHandle) && Commit the changes ld_datetime = DATETIME() lc_time = TIME() ll_cont = .T. SELECT a_source = AFIELDS(la_fields) *-- Create the table if needed lc_createcomm = "CREATE TABLE " + ALLTRIM(lc_target) + "(" FOR x = 1 TO ALEN(la_fields,1) *-- Add the commm separator if necessary IF x <> 1 lc_createcomm = lc_createcomm + "," ENDIF *-- Field name lc_createcomm = lc_createcomm + " " + LOWER(ALLTRIM(la_fields(x,1))) + " " *-- Type lc_type = la_fields(x,2) DO CASE CASE lc_type = "D" * Datetime lc_createcomm = lc_createcomm + " DATETIME " CASE lc_type = "N" * Numeric lc_createcomm = lc_createcomm + " DECIMAL (" + ALLTRIM(STR(la_fields(x,3))) + "," + ALLTRIM(STR(la_fields(x,4))) + ")" CASE lc_type = "B" * Double lc_createcomm = lc_createcomm + " FLOAT " CASE lc_type = "Y" * Currency lc_createcomm = lc_createcomm + " MONEY " CASE lc_type = "L" * Logical lc_createcomm = lc_createcomm + " BIT " CASE lc_type = "M" * Memo lc_createcomm = lc_createcomm + " TEXT " CASE lc_type = "I" * Integer lc_createcomm = lc_createcomm + " INT " OTHERWISE * Character lc_createcomm = lc_createcomm + " CHAR (" + ALLTRIM(STR(la_fields(x,3)))+ ")" ENDCASE lc_createcomm = lc_createcomm + " " + " NULL" + CHR(13) ENDFOR lc_createcomm = lc_createcomm + ")" = SQLPREPARE(gnsqlHandle, lc_createcomm) ll_cont = ln_execsql(gnsqlHandle) IF ll_cont ln_commit = SQLCOMMIT(gnsqlHandle) && Commit the changes ENDIF ENDIF ll_createtarget IF ll_cont *-- ZAP target if necessary IF ll_zaptarget *-- Zap the target table = SQLPREPARE(gnsqlHandle, "DELETE FROM " + lc_target) ll_cont = ln_execsql(gnsqlHandle) ENDIF ENDIF ll_cont IF ll_cont *-- Create the insertion command lc_insertcommand = " INSERT INTO " + lc_target lc_tostring = "(" lc_fromstring = " VALUES (" SELECT a_source = AFIELDS(la_fields) FOR x = 1 TO ALEN(la_fields,1) IF UPPER(ALLTRIM(la_fields(x,1))) <> "ID_COL" lc_tostring = lc_tostring + IIF(x =1, "", ", ") + LOWER(la_fields(x,1)) lc_fromstring = lc_fromstring + IIF(x =1, "", ", ") + " ?m." + la_fields(x,1) ENDIF ENDFOR lc_tostring = lc_tostring + ")" lc_fromstring = lc_fromstring + ")" lc_insertcommand = lc_insertcommand + lc_tostring + lc_fromstring SELECT a_source GO TOP SCAN WHILE NOT EOF() SELECT a_source SCATTER MEMVAR MEMO = SQLPREPARE(gnsqlHandle, lc_insertcommand) ll_cont = ln_execsql(gnsqlHandle) IF NOT ll_cont EXIT ENDIF ENDSCAN ENDIF ll_cont IF ll_cont ln_commit = SQLCOMMIT(gnsqlHandle) && Commit the changes WAIT WINDOW "Conversion Complete" IF ll_displaytarget = SQLPREPARE(gnsqlHandle, "SELECT * FROM " + lc_target, "curtarget") ln_exec = SQLEXEC(gnsqlHandle) SELECT curtarget GO TOP BROW endif ENDIF ll_cont = SQLDISCONNECT(gnsqlHandle) FUNCTION ln_execsql *-- Execute SQL Command and display errors, if any PARAMETERS pc_ConnHandle PRIVATE ll_return, ln_exec,la_error ll_return = .T. ln_exec = SQLEXEC(pc_ConnHandle) IF ln_exec < 1 ll_return = .F. WAIT WINDOW "SQL ERROR Has Occurred " = AERROR(la_error) WAIT WINDOW la_error(1,2) ENDIF RETURN ll_return