![]() |
#30 |
Axapta Retail User
|
Как-то на проекте переносили данные прямым запросом.
Не так ужасно -) И очень быстро -)) X++: SOURCE #RHRMImportCalendarDate #static void RHRMImportCalendarDate(Args _args) #{ # ODBCConnection odbcConnection; # Statement statement; # str sqlQueryString; # SqlStatementExecutePermission permission; # ResultSet resultSet; # LoginProperty loginProperty; # str serverName = "SUPER"; # //str dataBaseName = "BASE"; # str dataBaseName = "DT"; # DataAreaId dataAreaId; # int counter; # # void import() # { # RPayCalendarDate rpayCalendarDate; # ; # # rpayCalendarDate.clear(); # rpayCalendarDate.TransDate = resultSet.getDate(1); # rpayCalendarDate.CalendarId = resultSet.getString(2); # rpayCalendarDate.PayDayType = resultSet.getInt(3); # # if(!RPayCalendarDate::exist(rpayCalendarDate.CalendarId, rpayCalendarDate.TransDate)) # { # rpayCalendarDate.doInsert(); # } # # # counter++; # } # ; # # try # { # loginProperty = new LoginProperty(); # loginProperty.setServer(serverName); # loginProperty.setDatabase(dataBaseName); # # odbcConnection = new ODBCConnection(loginProperty); # # if (!odbcConnection) # { # info("Ошибка при подключении к базе данных"); # } # } # catch (Exception::Internal) # { # info("Возникла ошибка при подключении к базе данных. Операция отменена."); # } # catch (Exception::Error) # { # info("Ошибка при подключении к базе данных!"); # } # # statement = odbcConnection.createStatement(); # # # sqlQueryString = strfmt("SELECT RPAYCALENDARDATE.TRANSDATE"//1 # + ", RPAYCALENDARDATE.CALENDARID"//2 # + ", RPAYCALENDARDATE.PAYDAYTYPE"//3 # + " FROM RPAYCALENDARDATE" # + " WHERE RPAYCALENDARDATE.DATAAREAID = 'dat'" # + " AND RPAYCALENDARDATE.TRANSDATE > '20091231'"); # # permission = new SqlStatementExecutePermission(sqlQueryString); # permission.assert(); # resultSet = statement.executeQuery(sqlQueryString); # # while (resultSet.next()) # { # ttsbegin; # # import(); # # ttscommit; # } # # statement.close(); # # info(strfmt("Импортировано %1", counter)); #} ENDSOURCE |
|