2010-11-02 3 views
1

Ниже мой код, который открывает экземпляр Monarch, и делает некоторые действия с Monarch (Monarch - инструмент для сбора данных)Что было бы лучшим способом написать повторяющийся код?

Я должен повторить приведенный ниже код, просто меняя несколько параметров каждый раз, есть ли способ программно сделать это? Я хочу знать самый эффективный способ сделать это.

a = MonarchObj.SetReportFile(rawdataS10, False) 
openModel = MonarchObj.SetModelFile(freeKidsModel) 
      MonarchObj.CurrentFilter = "Under 60" 


    SummerDateShow = MonarchObj.SetFieldVisible("Date2", False) 
    SummerDateHide = MonarchObj.SetFieldVisible("Date", True) 

ExportTOS = MonarchObj.JetExportTable(saveDir, "FreeKidsS10", 0) 
MonarchObj.CloseAllDocuments 

Пример части меняются является «Под 60» «FreeKidsS10» и дата & поля date2.

Если просто скопировать и вставить этот код наиболее эффективен код, вы можете сказать мне, чтобы уйти

ответ

4

Вы можете сделать процедуру, которая принимает в качестве параметров переменные поля, а затем вызывает эту процедуру, где бы вы в противном случае не копировали и не вставляли. Сигнатура этого метода было бы что-то вроде этого:

Public Sub DataMiningMethod(ByVal modelFile as object, _ 
           ByVal currentFilter as String, _ 
           ByVal date1 as Boolean, _ 
           ByVal date2 as Boolean, _ 
           ByVal exportTableName as String) 

Таким образом, весь метод будет выглядеть примерно так:

Public Sub DataMiningMethod(ByVal modelFile as object, _ 
          ByVal currentFilter as String, _ 
          ByVal date1 as Boolean, _ 
          ByVal date2 as Boolean, _ 
          ByVal exportTableName as String) 

    a = MonarchObj.SetReportFile(rawdataS10, False) 
    openModel = MonarchObj.SetModelFile(modelFile) 
      MonarchObj.CurrentFilter = currentFilter 


    SummerDateShow = MonarchObj.SetFieldVisible("Date2", date2) 
    SummerDateHide = MonarchObj.SetFieldVisible("Date", date1) 

    ExportTOS = MonarchObj.JetExportTable(saveDir, exportTableName , 0) 
    MonarchObj.CloseAllDocuments 

End Sub 
+0

Вау, кажется, так просто. Положит это на мозг. Большое спасибо за то, что нашли время, чтобы помочь! – Waller

+0

Добро пожаловать. – Matt

0

Поместите этот код в методе, и если вы хотите быть более точным пута в классе и классе он имеет разные параметры каждый раз, например

public void mymethod(string currentFilter, bool date2, bool date) 
{ 
a = MonarchObj.SetReportFile(rawdataS10, False) 
openModel = MonarchObj.SetModelFile(freeKidsModel) 
MonarchObj.CurrentFilter = currentFilter 


SummerDateShow = MonarchObj.SetFieldVisible("Date2", date2) 
SummerDateHide = MonarchObj.SetFieldVisible("Date", date) 

ExportTOS = MonarchObj.JetExportTable(saveDir, "FreeKidsS10", 0) 
MonarchObj.CloseAllDocuments 
} 
0

Я вижу, что вы используете Excel. Вы можете попробовать использовать другой лист с данными и сделать эти методы получать каждую строку в то время, что-то вроде:

 A   B   C  D 
1 Under60 FreeKidsS10 Date Date2 
2 Under80 FreeKidsS20 DateZ Date3 
3 Over80  FreeKidsS30 DateX Date4 

и изменить вы макросъемку использовать что-то вроде:

a = MonarchObj.SetReportFile(rawdataS10, False) 
openModel = MonarchObj.SetModelFile(freeKidsModel) 
     MonarchObj.CurrentFilter = 'Sheet2!$A1' 


SummerDateShow = MonarchObj.SetFieldVisible('Sheet2!$D1', False) 
SummerDateHide = MonarchObj.SetFieldVisible('Sheet2!$C1', True) 

ExportTOS = MonarchObj.JetExportTable(saveDir, 'Sheet2!$B1', 0) 
MonarchObj.CloseAllDocuments 

Я не уверен, на точный код, но я уверен, что вы можете идти по этой линии, чтобы достичь нужной цели.

Смежные вопросы